summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-02-24 19:37:03 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-02-24 19:37:03 +0100
commit3941af527df6f27c88258c5d3b78720a07fe60ef (patch)
tree4747f74f32faef8a4f20bf7adf797ce57a8324fc
parentd85f8e46dbc5a978fe7359c89cbb3167fb9c2029 (diff)
parent7daae3c9d09a4d27586824a1d1af99e7af454d26 (diff)
downloadguix-3941af527df6f27c88258c5d3b78720a07fe60ef.tar.gz
Merge branch 'master' into staging
-rw-r--r--Makefile.am2
-rwxr-xr-xbootstrap2
-rw-r--r--build-aux/build-self.scm3
-rw-r--r--build-aux/git-authenticate.scm3
-rw-r--r--doc/contributing.texi62
-rw-r--r--doc/guix.texi127
-rw-r--r--doc/local.mk6
-rw-r--r--etc/copyright.el34
-rw-r--r--gnu/build/marionette.scm8
-rw-r--r--gnu/installer.scm5
-rw-r--r--gnu/installer/parted.scm7
-rw-r--r--gnu/installer/steps.scm1
-rw-r--r--gnu/installer/utils.scm47
-rw-r--r--gnu/local.mk7
-rw-r--r--gnu/packages/admin.scm49
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/android.scm21
-rw-r--r--gnu/packages/aspell.scm5
-rw-r--r--gnu/packages/assembly.scm6
-rw-r--r--gnu/packages/audio.scm20
-rw-r--r--gnu/packages/autotools.scm3
-rw-r--r--gnu/packages/backup.scm2
-rw-r--r--gnu/packages/benchmark.scm4
-rw-r--r--gnu/packages/bioconductor.scm104
-rw-r--r--gnu/packages/bioinformatics.scm45
-rw-r--r--gnu/packages/bittorrent.scm4
-rw-r--r--gnu/packages/build-tools.scm6
-rw-r--r--gnu/packages/c.scm6
-rw-r--r--gnu/packages/cedille.scm4
-rw-r--r--gnu/packages/certs.scm6
-rw-r--r--gnu/packages/compression.scm34
-rw-r--r--gnu/packages/connman.scm7
-rw-r--r--gnu/packages/cpp.scm29
-rw-r--r--gnu/packages/cran.scm1341
-rw-r--r--gnu/packages/crates-io.scm3031
-rw-r--r--gnu/packages/crypto.scm28
-rw-r--r--gnu/packages/databases.scm39
-rw-r--r--gnu/packages/dav.scm2
-rw-r--r--gnu/packages/debian.scm4
-rw-r--r--gnu/packages/dictionaries.scm59
-rw-r--r--gnu/packages/diffoscope.scm6
-rw-r--r--gnu/packages/distributed.scm8
-rw-r--r--gnu/packages/dns.scm126
-rw-r--r--gnu/packages/docker.scm6
-rw-r--r--gnu/packages/ebook.scm2
-rw-r--r--gnu/packages/education.scm6
-rw-r--r--gnu/packages/efi.scm7
-rw-r--r--gnu/packages/elixir.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm119
-rw-r--r--gnu/packages/embedded.scm2
-rw-r--r--gnu/packages/emulators.scm123
-rw-r--r--gnu/packages/engineering.scm23
-rw-r--r--gnu/packages/finance.scm8
-rw-r--r--gnu/packages/firmware.scm4
-rw-r--r--gnu/packages/flashing-tools.scm10
-rw-r--r--gnu/packages/fltk.scm2
-rw-r--r--gnu/packages/fonts.scm42
-rw-r--r--gnu/packages/fpga.scm14
-rw-r--r--gnu/packages/freedesktop.scm163
-rw-r--r--gnu/packages/game-development.scm28
-rw-r--r--gnu/packages/games.scm121
-rw-r--r--gnu/packages/geo.scm2
-rw-r--r--gnu/packages/gl.scm4
-rw-r--r--gnu/packages/gnome-xyz.scm40
-rw-r--r--gnu/packages/gnome.scm53
-rw-r--r--gnu/packages/gnunet.scm6
-rw-r--r--gnu/packages/gnupg.scm16
-rw-r--r--gnu/packages/gnustep.scm6
-rw-r--r--gnu/packages/graph.scm33
-rw-r--r--gnu/packages/graphics.scm116
-rw-r--r--gnu/packages/gtk.scm2
-rw-r--r--gnu/packages/guile-xyz.scm79
-rw-r--r--gnu/packages/guile.scm4
-rw-r--r--gnu/packages/haskell-apps.scm9
-rw-r--r--gnu/packages/haskell-crypto.scm2
-rw-r--r--gnu/packages/haskell-web.scm4
-rw-r--r--gnu/packages/haskell-xyz.scm50
-rw-r--r--gnu/packages/image-viewers.scm10
-rw-r--r--gnu/packages/image.scm3
-rw-r--r--gnu/packages/ipfs.scm4
-rw-r--r--gnu/packages/irc.scm38
-rw-r--r--gnu/packages/java.scm6
-rw-r--r--gnu/packages/javascript.scm2
-rw-r--r--gnu/packages/kde-internet.scm7
-rw-r--r--gnu/packages/key-mon.scm2
-rw-r--r--gnu/packages/libevent.scm1
-rw-r--r--gnu/packages/libreoffice.scm86
-rw-r--r--gnu/packages/linux.scm195
-rw-r--r--gnu/packages/lisp-xyz.scm388
-rw-r--r--gnu/packages/llvm.scm343
-rw-r--r--gnu/packages/machine-learning.scm2
-rw-r--r--gnu/packages/mail.scm8
-rw-r--r--gnu/packages/maths.scm59
-rw-r--r--gnu/packages/messaging.scm132
-rw-r--r--gnu/packages/mono.scm49
-rw-r--r--gnu/packages/mpd.scm12
-rw-r--r--gnu/packages/mpi.scm88
-rw-r--r--gnu/packages/multiprecision.scm2
-rw-r--r--gnu/packages/music.scm19
-rw-r--r--gnu/packages/ncdu.scm6
-rw-r--r--gnu/packages/networking.scm10
-rw-r--r--gnu/packages/nfs.scm2
-rw-r--r--gnu/packages/nim.scm5
-rw-r--r--gnu/packages/node.scm3
-rw-r--r--gnu/packages/ocaml.scm14
-rw-r--r--gnu/packages/openstack.scm2
-rw-r--r--gnu/packages/package-management.scm37
-rw-r--r--gnu/packages/password-utils.scm2
-rw-r--r--gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch89
-rw-r--r--gnu/packages/patches/clang-9.0-libc-search-path.patch83
-rw-r--r--gnu/packages/patches/containerd-test-with-go1.13.patch21
-rw-r--r--gnu/packages/patches/desmume-gcc6-fixes.patch59
-rw-r--r--gnu/packages/patches/desmume-gcc7-fixes.patch18
-rw-r--r--gnu/packages/patches/elixir-path-length.patch8
-rw-r--r--gnu/packages/patches/mumps-shared-libseq.patch2
-rw-r--r--gnu/packages/patches/mumps-shared-mumps.patch8
-rw-r--r--gnu/packages/patches/mumps-shared-pord.patch4
-rw-r--r--gnu/packages/patches/qtbase-QTBUG-81715.patch40
-rw-r--r--gnu/packages/patches/racket-store-checksum-override.patch30
-rw-r--r--gnu/packages/patches/upx-fix-CVE-2017-15056.patch96
-rw-r--r--gnu/packages/pdf.scm23
-rw-r--r--gnu/packages/photo.scm9
-rw-r--r--gnu/packages/php.scm7
-rw-r--r--gnu/packages/pretty-print.scm27
-rw-r--r--gnu/packages/python-crypto.scm2
-rw-r--r--gnu/packages/python-science.scm2
-rw-r--r--gnu/packages/python-xyz.scm67
-rw-r--r--gnu/packages/qt.scm13
-rw-r--r--gnu/packages/ruby.scm2
-rw-r--r--gnu/packages/rust-apps.scm4
-rw-r--r--gnu/packages/sagemath.scm4
-rw-r--r--gnu/packages/scheme.scm98
-rw-r--r--gnu/packages/speech.scm22
-rw-r--r--gnu/packages/ssh.scm116
-rw-r--r--gnu/packages/statistics.scm198
-rw-r--r--gnu/packages/terminals.scm6
-rw-r--r--gnu/packages/textutils.scm31
-rw-r--r--gnu/packages/tls.scm6
-rw-r--r--gnu/packages/version-control.scm35
-rw-r--r--gnu/packages/video.scm33
-rw-r--r--gnu/packages/vim.scm11
-rw-r--r--gnu/packages/virtualization.scm98
-rw-r--r--gnu/packages/vpn.scm51
-rw-r--r--gnu/packages/web-browsers.scm21
-rw-r--r--gnu/packages/web.scm34
-rw-r--r--gnu/packages/wxwidgets.scm13
-rw-r--r--gnu/packages/xdisorg.scm29
-rw-r--r--gnu/packages/xfce.scm8
-rw-r--r--gnu/packages/xorg.scm2
-rw-r--r--gnu/services/base.scm19
-rw-r--r--gnu/services/sddm.scm4
-rw-r--r--gnu/services/shepherd.scm12
-rw-r--r--gnu/services/vpn.scm14
-rw-r--r--gnu/services/xorg.scm8
-rw-r--r--gnu/tests/install.scm18
-rw-r--r--guix/build-system/copy.scm143
-rw-r--r--guix/build/copy-build-system.scm165
-rw-r--r--guix/colors.scm3
-rw-r--r--guix/import/github.scm14
-rw-r--r--guix/scripts/describe.scm15
-rw-r--r--guix/scripts/system.scm2
-rw-r--r--guix/ssh.scm15
-rw-r--r--guix/store/deduplication.scm6
-rw-r--r--guix/swh.scm12
-rw-r--r--guix/ui.scm8
-rw-r--r--m4/guix.m45
-rw-r--r--po/doc/guix-cookbook.de.po3395
-rw-r--r--po/doc/local.mk3
-rw-r--r--tests/ui.scm6
169 files changed, 11096 insertions, 2165 deletions
diff --git a/Makefile.am b/Makefile.am
index c6a2e6cf6c..e18c17d8b3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -122,6 +122,7 @@ MODULES =					\
   guix/build-system/meson.scm			\
   guix/build-system/minify.scm			\
   guix/build-system/asdf.scm			\
+  guix/build-system/copy.scm			\
   guix/build-system/glib-or-gtk.scm		\
   guix/build-system/gnu.scm			\
   guix/build-system/guile.scm			\
@@ -169,6 +170,7 @@ MODULES =					\
   guix/build/go-build-system.scm		\
   guix/build/asdf-build-system.scm		\
   guix/build/bzr.scm				\
+  guix/build/copy-build-system.scm		\
   guix/build/git.scm				\
   guix/build/hg.scm				\
   guix/build/glib-or-gtk-build-system.scm	\
diff --git a/bootstrap b/bootstrap
index c9e7a084a1..a47269d87f 100755
--- a/bootstrap
+++ b/bootstrap
@@ -16,7 +16,7 @@ for lang in ${langs}; do
     fi
 done
 langs=`find po/doc -type f -name 'guix-cookbook*.po' \
-        | sed -e 's,guix-manual\.,,' \
+        | sed -e 's,guix-cookbook\.,,' \
         | xargs -n 1 -I{} basename {} .po`
 for lang in ${langs}; do
     if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
diff --git a/build-aux/build-self.scm b/build-aux/build-self.scm
index fc13032b73..f2e785b7f1 100644
--- a/build-aux/build-self.scm
+++ b/build-aux/build-self.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -420,6 +420,7 @@ files."
                          ;; $GUILE_LOAD_PATH & co.
                          (with-clean-environment
                           (setenv "GUILE_WARN_DEPRECATED" "no") ;be quiet and drive
+                          (setenv "COLUMNS" "120") ;show wider backtraces
                           (when home
                             ;; Inherit HOME so that 'xdg-directory' works.
                             (setenv "HOME" home))
diff --git a/build-aux/git-authenticate.scm b/build-aux/git-authenticate.scm
index aa9103a372..8d05f0ee40 100644
--- a/build-aux/git-authenticate.scm
+++ b/build-aux/git-authenticate.scm
@@ -134,7 +134,8 @@
     ("lsl88"
      "2AE3 1395 932B E642 FC0E  D99C 9BED 6EDA 32E5 B0BC")
     ("mab"
-     "BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103")
+     ;; primary: "BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103"
+     "39B3 3C8D 9448 0D2D DCC2  A498 8B44 A0CD C7B9 56F2")
     ("marusich"
      "CBF5 9755 CBE7 E7EF EF18  3FB1 DD40 9A15 D822 469D")
     ("mbakke"
diff --git a/doc/contributing.texi b/doc/contributing.texi
index c6586a2adf..9d45becf86 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -274,6 +274,33 @@ trigger string @code{origin...}, which can be expanded further.  The
 @code{origin} snippet in turn may insert other trigger strings ending on
 @code{...}, which also can be expanded further.
 
+@cindex insert or update copyright
+@cindex @code{M-x guix-copyright}
+@cindex @code{M-x copyright-update}
+Additionaly we provide insertion and automatic update of a copyright in
+@file{etc/copyright.el}.  You may want to set your full name, mail, and
+load a file.
+
+@lisp
+(setq user-full-name "Alice Doe")
+(setq user-mail-address "alice@@mail.org")
+;; @r{Assuming the Guix checkout is in ~/src/guix.}
+(load-file "~/src/guix/etc/copyright.el")
+@end lisp
+
+To insert a copyright at the current line invoke @code{M-x guix-copyright}.
+
+To update a copyright you need to specify a @code{copyright-names-regexp}.
+
+@lisp
+(setq copyright-names-regexp
+      (format "%s <%s>" user-full-name user-mail-address))
+@end lisp
+
+You can check if your copyright is up to date by evaluating @code{M-x
+copyright-update}.  If you want to do it automatically after each buffer
+save then add @code{(add-hook 'after-save-hook 'copyright-update)} in
+Emacs.
 
 @node Packaging Guidelines
 @section Packaging Guidelines
@@ -347,6 +374,7 @@ needed is to review and apply the patch.
 * Python Modules::              A touch of British comedy.
 * Perl Modules::                Little pearls.
 * Java Packages::               Coffee break.
+* Rust Crates::                 Beware of oxidation.
 * Fonts::                       Fond of fonts.
 @end menu
 
@@ -685,6 +713,40 @@ dashes and prepend the prefix @code{java-}.  So the class
 @code{java-apache-commons-cli}.
 
 
+@node Rust Crates
+@subsection Rust Crates
+
+@cindex rust
+Rust programs standing for themselves are named as any other package, using the
+lowercase upstream name.
+
+To prevent namespace collisions we prefix all other Rust packages with the
+@code{rust-} prefix.  The name should be changed to lowercase as appropriate and
+dashes should remain in place.
+
+In the rust ecosystem it is common for multiple incompatible versions of a
+package to be used at any given time, so all packages should have a versioned
+suffix.  If a package has passed version 1.0.0 then just the major version
+number is sufficient (e.g.@: @code{rust-clap-2}), otherwise the version suffix
+should contain both the major and minor version (e.g.@: @code{rust-rand-0.6}).
+
+Because of the difficulty in reusing rust packages as pre-compiled inputs for
+other packages the Cargo build system (@pxref{Build Systems,
+@code{cargo-build-system}}) presents the @code{#:cargo-inputs} and
+@code{cargo-development-inputs} keywords as build system arguments.  It would be
+helpful to think of these as similar to @code{propagated-inputs} and
+@code{native-inputs}.  Rust @code{dependencies} and @code{build-dependencies}
+should go in @code{#:cargo-inputs}, and @code{dev-dependencies} should go in
+@code{#:cargo-development-inputs}.  If a Rust package links to other libraries
+then the standard placement in @code{inputs} and the like should be used.
+
+Care should be taken to ensure the correct version of dependencies are used; to
+this end we try to refrain from skipping the tests or using @code{#:skip-build?}
+when possible.  Of course this is not always possible, as the package may be
+developed for a different Operating System, depend on features from the Nightly
+Rust compiler, or the test suite may have atrophied since it was released.
+
+
 @node Fonts
 @subsection Fonts
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 282f9578bf..a66bb3d646 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -73,6 +73,7 @@ Copyright @copyright{} 2020 Leo Prikler@*
 Copyright @copyright{} 2019, 2020 Simon Tournier@*
 Copyright @copyright{} 2020 Wiktor Żelazny@*
 Copyright @copyright{} 2020 Damien Cassou@*
+Copyright @copyright{} 2020 Jakub Kądziołka@*
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -771,11 +772,11 @@ The following dependencies are optional:
 
 @itemize
 @item
-@c Note: We need at least 0.10.2 for 'channel-send-eof'.
+@c Note: We need at least 0.12.0 for 'userauth-gssapi!'.
 Support for build offloading (@pxref{Daemon Offload Setup}) and
 @command{guix copy} (@pxref{Invoking guix copy}) depends on
 @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH},
-version 0.10.2 or later.
+version 0.12.0 or later.
 
 @item
 When @url{https://www.nongnu.org/lzip/lzlib.html, lzlib} is available, lzlib
@@ -2440,6 +2441,11 @@ your system includes the latest security updates (@pxref{Security Updates}).
 Note that @command{sudo guix} runs your user's @command{guix} command and
 @emph{not} root's, because @command{sudo} leaves @code{PATH} unchanged.  To
 explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}.
+
+The difference matters here, because @command{guix pull} updates
+the @command{guix} command and package definitions only for the user it is ran
+as.  This means that if you choose to use @command{guix system reconfigure} in
+root's login shell, you'll need to @command{guix pull} separately.
 @end quotation
 
 Join us on @code{#guix} on the Freenode IRC network or on
@@ -4958,8 +4964,10 @@ shared and will change to the user's home directory within the container
 instead.  See also @code{--user}.
 
 @item --expose=@var{source}[=@var{target}]
-For containers, expose the file system @var{source} from the host system
-as the read-only file system @var{target} within the container.  If
+@itemx --share=@var{source}[=@var{target}]
+For containers, @code{--expose} (resp. @code{--share}) exposes the file
+system @var{source} from the host system as the read-only
+(resp. writable) file system @var{target} within the container.  If
 @var{target} is not specified, @var{source} is used as the target mount
 point in the container.
 
@@ -4971,19 +4979,6 @@ directory:
 guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile
 @end example
 
-@item --share=@var{source}[=@var{target}]
-For containers, share the file system @var{source} from the host system
-as the writable file system @var{target} within the container.  If
-@var{target} is not specified, @var{source} is used as the target mount
-point in the container.
-
-The example below spawns a Guile REPL in a container in which the user's
-home directory is accessible for both reading and writing via the
-@file{/exchange} directory:
-
-@example
-guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile
-@end example
 @end table
 
 @command{guix environment}
@@ -6159,6 +6154,70 @@ parameters available to cargo.  It will also remove an included
 if they are defined by the crate.
 @end defvr
 
+
+@defvr {Scheme Variable} copy-build-system
+@cindex (copy build system)
+This variable is exported by @code{(guix build-system copy)}.  It
+supports builds of simple packages that don't require much compiling,
+mostly just moving files around.
+
+It adds much of the @code{gnu-build-system} packages to the set of
+inputs.  Because of this, the @code{copy-build-system} does not require
+all the boilerplate code often needed for the
+@code{trivial-build-system}.
+
+To further simplify the file installation process, an
+@code{#:install-plan} argument is exposed to let the packager specify
+which files go where.  The install plan is a list of @code{(@var{source}
+@var{target} [@var{filters}])}.  @var{filters} are optional.
+
+@itemize
+@item When @var{source} matches a file or directory without trailing slash, install it to @var{target}.
+@itemize
+@item If @var{target} has a trailing slash, install @var{source} basename beneath @var{target}.
+@item Otherwise install @var{source} as @var{target}.
+@end itemize
+
+@item When @var{source} is a directory with a trailing slash, or when @var{filters} are used,
+the trailing slash of @var{target} is implied with the same meaning
+as above.
+@itemize
+@item Without @var{filters}, install the full @var{source} @emph{content} to @var{target}.
+@item With @var{filters} among @code{#:include}, @code{#:include-regexp}, @code{#:exclude},
+@code{#:exclude-regexp}, only select files are installed depending on
+the filters.  Each filters is specified by a list of strings.
+@itemize
+@item With @code{#:include}, install all the files which the path suffix matches
+at least one of the elements in the given list.
+@item With @code{#:include-regexp}, install all the files which the
+subpaths match at least one of the regular expressions in the given
+list.
+@item The @code{#:exclude} and @code{#:exclude-regexp} filters
+are the complement of their inclusion counterpart.  Without @code{#:include} flags,
+install all files but those matching the exclusion filters.
+If both inclusions and exclusions are specified, the exclusions are done
+on top of the inclusions.
+@end itemize
+@end itemize
+In all cases, the paths relative to @var{source} are preserved within
+@var{target}.
+@end itemize
+
+Examples:
+
+@itemize
+@item @code{("foo/bar" "share/my-app/")}: Install @file{bar} to @file{share/my-app/bar}.
+@item @code{("foo/bar" "share/my-app/baz")}: Install @file{bar} to @file{share/my-app/baz}.
+@item @code{("foo/" "share/my-app")}: Install the content of @file{foo} inside @file{share/my-app},
+e.g., install @file{foo/sub/file} to @file{share/my-app/sub/file}.
+@item @code{("foo/" "share/my-app" #:include ("sub/file"))}: Install only @file{foo/sub/file} to
+@file{share/my-app/sub/file}.
+@item @code{("foo/sub" "share/my-app" #:include ("file"))}: Install @file{foo/sub/file} to
+@file{share/my-app/file}.
+@end itemize
+@end defvr
+
+
 @cindex Clojure (programming language)
 @cindex simple Clojure build system
 @defvr {Scheme Variable} clojure-build-system
@@ -6815,9 +6874,11 @@ instruct it to listen for TCP connections (@pxref{Invoking guix-daemon,
 
 @item ssh
 @cindex SSH access to build daemons
-These URIs allow you to connect to a remote daemon over
-SSH@footnote{This feature requires Guile-SSH (@pxref{Requirements}).}.
-A typical URL might look like this:
+These URIs allow you to connect to a remote daemon over SSH.  This
+feature requires Guile-SSH (@pxref{Requirements}) and a working
+@code{guile} binary in @code{PATH} on the destination machine.  It
+supports public key and GSSAPI authentication.  A typical URL might look
+like this:
 
 @example
 ssh://charlie@@guix.example.org:22
@@ -14463,7 +14524,7 @@ Command to run when halting.
 Command to run when rebooting.
 
 @item @code{theme} (default "maldives")
-Theme to use. Default themes provided by SDDM are "elarun" or "maldives".
+Theme to use. Default themes provided by SDDM are "elarun", "maldives" or "maya".
 
 @item @code{themes-directory} (default "/run/current-system/profile/share/sddm/themes")
 Directory to look for themes.
@@ -14538,7 +14599,7 @@ Relogin after logout.
 @cindex X11 login
 @defvr {Scheme Variable} sddm-service-type
 This is the type of the service to run the
-@uref{https://github.com/sddm/sddm,SSDM display manager}.  Its value
+@uref{https://github.com/sddm/sddm,SDDM display manager}.  Its value
 must be a @code{sddm-configuration} record (see below).
 
 Here's an example use:
@@ -21799,6 +21860,13 @@ Defaults to @samp{#t}.
 
 @end deftypevr
 
+@deftypevr {@code{openvpn-client-configuration} parameter} boolean fast-io?
+(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to
+poll/epoll/select prior to the write operation.
+
+Defaults to @samp{#f}.
+@end deftypevr
+
 @deftypevr {@code{openvpn-client-configuration} parameter} number verbosity
 Verbosity level.
 
@@ -21814,6 +21882,14 @@ Defaults to @samp{#f}.
 
 @end deftypevr
 
+@deftypevr {@code{openvpn-client-configuration} parameter} maybe-string auth-user-pass
+Authenticate with server using username/password.  The option is a file
+containing username/password on 2 lines.  Do not use a file-like object as it
+would be added to the store and readable by any user.
+
+Defaults to @samp{'disabled}.
+@end deftypevr
+
 @deftypevr {@code{openvpn-client-configuration} parameter} key-usage verify-key-usage?
 Whether to check the server certificate has server usage extension.
 
@@ -21935,6 +22011,13 @@ Defaults to @samp{#t}.
 
 @end deftypevr
 
+@deftypevr {@code{openvpn-server-configuration} parameter} boolean fast-io?
+(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to
+poll/epoll/select prior to the write operation.
+
+Defaults to @samp{#f}.
+@end deftypevr
+
 @deftypevr {@code{openvpn-server-configuration} parameter} number verbosity
 Verbosity level.
 
diff --git a/doc/local.mk b/doc/local.mk
index a361f2388e..3805593172 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -27,7 +27,8 @@ info_TEXINFOS = %D%/guix.texi			\
   %D%/guix.fr.texi				\
   %D%/guix.ru.texi				\
   %D%/guix.zh_CN.texi				\
-  %D%/guix-cookbook.texi
+  %D%/guix-cookbook.texi			\
+  %D%/guix-cookbook.de.texi
 
 %C%_guix_TEXINFOS = \
   %D%/contributing.texi \
@@ -69,7 +70,8 @@ TRANSLATED_INFO =				\
   %D%/contributing.es.texi			\
   %D%/contributing.fr.texi			\
   %D%/contributing.ru.texi			\
-  %D%/contributing.zh_CN.texi
+  %D%/contributing.zh_CN.texi			\
+  %D%/guix-cookbook.de.texi
 
 # Bundle this file so that makeinfo finds it in out-of-source-tree builds.
 BUILT_SOURCES        += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
diff --git a/etc/copyright.el b/etc/copyright.el
new file mode 100644
index 0000000000..f5ed723cea
--- /dev/null
+++ b/etc/copyright.el
@@ -0,0 +1,34 @@
+;;; copyright.el --- Insert a Guix copyright.
+
+;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
+
+;; 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package provides skeleton to insert a copyright with `guix-copyright'.
+
+;;; Code:
+
+(define-skeleton guix-copyright
+  "Insert a copyright by $USER notice at cursor."
+  "FULL_NAME <MAIL_ADDRESS>: "
+  comment-start
+  ";; Copyright © " `(format-time-string "%Y") " "
+  (or (format "%s <%s>" user-full-name user-mail-address) str)
+  comment-end)
+
+;;; copyright.el ends here
diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index 1dbe385e89..fe754cd147 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -204,6 +204,7 @@ MARIONETTE.  Raise an error on failure."
                  (catch 'system-error
                    (lambda ()
                      (connect sock AF_INET INADDR_LOOPBACK ,port)
+                     (close-port sock)
                      'success)
                    (lambda args
                      (if (< i ,timeout)
@@ -227,6 +228,7 @@ accept connections in MARIONETTE.  Raise an error on failure."
                  (catch 'system-error
                    (lambda ()
                      (connect sock AF_UNIX ,file-name)
+                     (close-port sock)
                      'success)
                    (lambda args
                      (if (< i ,timeout)
@@ -315,8 +317,8 @@ PREDICATE, whichever comes first.  Raise an error when TIMEOUT is exceeded."
     (#\( . "shift-9")
     (#\) . "shift-0")
     (#\/ . "slash")
-    (#\< . "less")
-    (#\> . "shift-less")
+    (#\< . "shift-comma")
+    (#\> . "shift-dot")
     (#\. . "dot")
     (#\, . "comma")
     (#\; . "semicolon")
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 3f4ae4bf53..edef3fde62 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -26,6 +26,7 @@
   #:use-module (guix utils)
   #:use-module (guix ui)
   #:use-module ((guix self) #:select (make-config.scm))
+  #:use-module (gnu installer utils)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -395,6 +396,8 @@ selected keymap."
                      #f)))
                 (const #f)
                 (lambda (key . args)
+                  (syslog "crashing due to uncaught exception: ~s ~s~%"
+                          key args)
                   (let ((error-file "/tmp/last-installer-error"))
                     (call-with-output-file error-file
                       (lambda (port)
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm
index c2b02c9281..6c805cc053 100644
--- a/gnu/installer/parted.scm
+++ b/gnu/installer/parted.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -1070,6 +1070,8 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
     (call-with-luks-key-file
      password
      (lambda (key-file)
+       (syslog "formatting and opening LUKS entry ~s at ~s~%"
+               label file-name)
        (system* "cryptsetup" "-q" "luksFormat" file-name key-file)
        (system* "cryptsetup" "open" "--type" "luks"
                 "--key-file" key-file file-name label)))))
@@ -1077,6 +1079,7 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
 (define (luks-close user-partition)
   "Close the encrypted partition pointed by USER-PARTITION."
   (let ((label (user-partition-crypt-label user-partition)))
+    (syslog "closing LUKS entry ~s~%" label)
     (system* "cryptsetup" "close" label)))
 
 (define (format-user-partitions user-partitions)
@@ -1150,6 +1153,7 @@ respective mount-points."
                        (file-name
                         (user-partition-upper-file-name user-partition)))
                   (mkdir-p target)
+                  (syslog "mounting ~s on ~s~%" file-name target)
                   (mount file-name target mount-type)))
               sorted-partitions)))
 
@@ -1165,6 +1169,7 @@ respective mount-points."
                        (target
                         (string-append (%installer-target-dir)
                                        mount-point)))
+                  (syslog "unmounting ~s~%" target)
                   (umount target)
                   (when crypt-label
                     (luks-close user-partition))))
diff --git a/gnu/installer/steps.scm b/gnu/installer/steps.scm
index 4e90f32f95..b2fc819d89 100644
--- a/gnu/installer/steps.scm
+++ b/gnu/installer/steps.scm
@@ -177,6 +177,7 @@ return the accumalated result so far."
                               #:done-steps '())))))
                  ((installer-step-break? c)
                   (reverse result)))
+         (syslog "running step '~a'~%" (installer-step-id step))
          (let* ((id (installer-step-id step))
                 (compute (installer-step-compute step))
                 (res (compute result done-steps)))
diff --git a/gnu/installer/utils.scm b/gnu/installer/utils.scm
index ddb96bc338..842bd02ced 100644
--- a/gnu/installer/utils.scm
+++ b/gnu/installer/utils.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,12 +24,16 @@
   #:use-module (srfi srfi-34)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 regex)
+  #:use-module (ice-9 format)
   #:use-module (ice-9 textual-ports)
   #:export (read-lines
             read-all
             nearest-exact-integer
             read-percentage
-            run-shell-command))
+            run-shell-command
+
+            syslog-port
+            syslog))
 
 (define* (read-lines #:optional (port (current-input-port)))
   "Read lines from PORT and return them as a list."
@@ -85,9 +89,48 @@ COMMAND exited successfully, #f otherwise."
                 (format (current-error-port)
                         (G_ "Command failed with exit code ~a.~%")
                         (invoke-error-exit-status c))
+                (syslog "command ~s failed with exit code ~a"
+                        command (invoke-error-exit-status c))
                 (pause)
                 #f))
+       (syslog "running command ~s~%" command)
        (invoke "bash" "--init-file" file)
+       (syslog "command ~s succeeded~%" command)
        (newline)
        (pause)
        #t))))
+
+
+;;;
+;;; Logging.
+;;;
+
+(define (open-syslog-port)
+  "Return an open port (a socket) to /dev/log or #f if that wasn't possible."
+  (let ((sock (socket AF_UNIX SOCK_DGRAM 0)))
+    (catch 'system-error
+      (lambda ()
+        (connect sock AF_UNIX "/dev/log")
+        (setvbuf sock 'line)
+        sock)
+      (lambda args
+        (close-port sock)
+        #f))))
+
+(define syslog-port
+  (let ((port #f))
+    (lambda ()
+      "Return an output port to syslog."
+      (unless port
+        (set! port (open-syslog-port)))
+      (or port (%make-void-port "w")))))
+
+(define-syntax syslog
+  (lambda (s)
+    "Like 'format', but write to syslog."
+    (syntax-case s ()
+      ((_ fmt args ...)
+       (string? (syntax->datum #'fmt))
+       (with-syntax ((fmt (string-append "installer[~d]: "
+                                         (syntax->datum #'fmt))))
+         #'(format (syslog-port) fmt (getpid) args ...))))))
diff --git a/gnu/local.mk b/gnu/local.mk
index f54a457e24..de061e04c4 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -774,7 +774,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ceph-disable-cpu-optimizations.patch	\
   %D%/packages/patches/ceph-volume-respect-PATH.patch		\
   %D%/packages/patches/chmlib-inttypes.patch			\
-  %D%/packages/patches/choqok-Fix-building-under-Qt-5.13.patch	\
   %D%/packages/patches/clamav-config-llvm-libs.patch		\
   %D%/packages/patches/clamav-system-tomsfastmath.patch		\
   %D%/packages/patches/clang-3.5-libc-search-path.patch		\
@@ -782,6 +781,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/clang-3.8-libc-search-path.patch		\
   %D%/packages/patches/clang-6.0-libc-search-path.patch		\
   %D%/packages/patches/clang-7.0-libc-search-path.patch		\
+  %D%/packages/patches/clang-9.0-libc-search-path.patch		\
   %D%/packages/patches/clang-runtime-asan-build-fixes.patch	\
   %D%/packages/patches/clang-runtime-esan-build-fixes.patch	\
   %D%/packages/patches/classpath-aarch64-support.patch		\
@@ -794,6 +794,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/coda-use-system-libs.patch		\
   %D%/packages/patches/combinatorial-blas-awpm.patch		\
   %D%/packages/patches/combinatorial-blas-io-fix.patch		\
+  %D%/packages/patches/containerd-test-with-go1.13.patch		\
   %D%/packages/patches/cpufrequtils-fix-aclocal.patch		\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crda-optional-gcrypt.patch		\
@@ -809,6 +810,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/debops-constants-for-external-program-names.patch \
   %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
   %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch	\
+  %D%/packages/patches/desmume-gcc6-fixes.patch			\
+  %D%/packages/patches/desmume-gcc7-fixes.patch			\
   %D%/packages/patches/dfu-programmer-fix-libusb.patch		\
   %D%/packages/patches/diffutils-gets-undeclared.patch		\
   %D%/packages/patches/dkimproxy-add-ipv6-support.patch		\
@@ -1351,6 +1354,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qrcodegen-cpp-make-install.patch		\
   %D%/packages/patches/qt4-ldflags.patch			\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
+  %D%/packages/patches/qtbase-QTBUG-81715.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
   %D%/packages/patches/quagga-reproducible-build.patch          \
   %D%/packages/patches/quickswitch-fix-dmenu-check.patch	\
@@ -1463,7 +1467,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/ustr-fix-build-with-gcc-5.patch		\
   %D%/packages/patches/util-linux-tests.patch			\
   %D%/packages/patches/upower-builddir.patch			\
-  %D%/packages/patches/upx-fix-CVE-2017-15056.patch		\
   %D%/packages/patches/valgrind-enable-arm.patch		\
   %D%/packages/patches/vboot-utils-fix-format-load-address.patch	\
   %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch	\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4780fe124e..edf8aad335 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2015, 2016, 2018, 2019 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
@@ -196,14 +196,14 @@ and provides a \"top-like\" mode (monitoring).")
 (define-public shepherd
   (package
     (name "shepherd")
-    (version "0.6.1")
+    (version "0.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/shepherd/shepherd-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1xn6mb5bh8bpfgdrh09ja31jk0ln7bmxbbf0vjcqxkkixs2wl6sk"))))
+                "07j3vd0y8zab2nwbrwj0ahrfif1ldm5sjssn7m3dw4s307fsrfzx"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--localstatedir=/var")))
@@ -228,6 +228,16 @@ interface and is based on GNU Guile.")
     (license license:gpl3+)
     (home-page "https://www.gnu.org/software/shepherd/")))
 
+(define-public guile3.0-shepherd
+  (package
+    (inherit shepherd)
+    (name "guile3.0-shepherd")
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("guile" ,guile-next)))
+    (inputs
+     `(("guile" ,guile-next)))))
+
 (define-public cloud-utils
   (package
     (name "cloud-utils")
@@ -2226,7 +2236,7 @@ displays a table of current bandwidth usage by pairs of hosts.")
 (define-public munge
   (package
     (name "munge")
-    (version "0.5.13")
+    (version "0.5.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/dun/munge/releases/"
@@ -2234,20 +2244,45 @@ displays a table of current bandwidth usage by pairs of hosts.")
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1nj486bbg1adfg298zck96vgx57kchcypc1zdz1n7w540vyksxcr"))
+                "0h06sghb4rqvv1ywyd6mzsmbcgh712v6ygrff0gzm440y4ca41k6"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; Don't insist on write access to /var.
                   (substitute* "src/etc/Makefile.in"
                     (("\\$\\(INSTALL\\)(.*)localstatedir" _ middle)
-                     (string-append "-$(INSTALL)" middle "localstatedir")))
+                     (string-append "-$(INSTALL)" middle "localstatedir"))
+                    (("\\$\\(MKDIR_P\\) .*(local|run)statedir.*")
+                     ""))
                   #t))))
     (inputs
      `(("openssl" ,openssl)
        ("libgcrypt" ,libgcrypt)))
     (build-system gnu-build-system)
-    (arguments '(#:configure-flags '("--localstatedir=/var")))
+    (arguments
+     '(#:configure-flags
+       (list "--localstatedir=/var"
+             (string-append "--with-pkgconfigdir="
+                            (assoc-ref %outputs "out") "/lib/pkgconfig"))
+       #:phases
+       (modify-phases %standard-phases
+         ;; XXX Many test series fail.  Some might be fixable, others do no-no
+         ;; things like invoking ‘sudo’.
+         (add-after 'unpack 'skip-failing-tests
+           (lambda _
+             (for-each (lambda (test)
+                         (substitute* "t/Makefile.in"
+                           (((string-append test "\\.t ")) "")))
+                       (list "0100-munged-lock"
+                             "0010-basic"
+                             "0011-munged-cmdline"
+                             "0012-munge-cmdline"
+                             "0013-unmunge-cmdline"
+                             "0101-munged-security-socket"
+                             "0102-munged-security-keyfile"
+                             "0103-munged-security-logfile"
+                             "0110-munged-origin-addr"))
+             #t)))))
     (home-page "https://dun.github.io/munge/")
     (synopsis "Cluster computing authentication service")
     (description
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index f4d427334f..bebf5c99ed 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -91,7 +91,7 @@ implement the floating point approach to complex multiplication are
 implemented.  On the other hand, these comprise asymptotically fast
 multiplication routines such as Toom–Cook and the FFT.")
    (license license:lgpl3+)
-   (home-page "http://mpfrcx.multiprecision.org/")))
+   (home-page "http://www.multiprecision.org/mpfrcx/")))
 
 (define-public gf2x
   (package
@@ -140,7 +140,7 @@ multiplication via floating point approximations.  It consists of libraries
 that can be called from within a C program and of executable command
 line applications.")
    (license license:gpl3+)
-   (home-page "http://cm.multiprecision.org/")))
+   (home-page "http://www.multiprecision.org/cm/")))
 
 (define-public fplll
   (package
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 30dd8925a4..ba883f1ff9 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -716,7 +717,7 @@ to be passed to the @code{udev} service.")
 (define-public git-repo
   (package
     (name "git-repo")
-    (version "1.12.37")
+    (version "2.3")
     (source
      (origin
        (method git-fetch)
@@ -725,11 +726,10 @@ to be passed to the @code{udev} service.")
              (commit (string-append "v" version))))
        (file-name (string-append "git-repo-" version "-checkout"))
        (sha256
-        (base32 "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd"))))
+        (base32 "0jrll0mjfwakyjvlhbxwsdi32jhgss9mwz8c8h24n1qbqqxysrk4"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2 ; code says: "Python 3 support is … experimental."
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'build 'set-executable-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -738,8 +738,8 @@ to be passed to the @code{udev} service.")
                     (gpg (assoc-ref inputs "gnupg"))
                     (ssh (assoc-ref inputs "ssh")))
                (substitute* '("repo" "git_command.py")
-                 (("^GIT = 'git' ")
-                  (string-append "GIT = '" git "/bin/git' ")))
+                 (("^GIT = 'git'")
+                  (string-append "GIT = '" git "/bin/git'")))
                (substitute* "repo"
                  ((" cmd = \\['gpg',")
                   (string-append " cmd = ['" gpg "/bin/gpg',")))
@@ -777,9 +777,14 @@ def _FindRepo():
                  ((" rev = _Verify\\(.*\\)") " rev = None"))
                #t)))
          (delete 'build) ; nothing to build
+         (add-before 'check 'configure-git
+           (lambda _
+             (setenv "HOME" (getcwd))
+             (invoke "git" "config" "--global" "user.email" "you@example.com")
+             (invoke "git" "config" "--global" "user.name" "Your Name")))
          (replace 'check
            (lambda _
-             (invoke "python" "-m" "nose")))
+             (invoke "./run_tests")))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -798,7 +803,7 @@ def _FindRepo():
        ("gnupg" ,gnupg)
        ("ssh" ,openssh)))
     (native-inputs
-     `(("nose" ,python2-nose)))
+     `(("pytest" ,python-pytest)))
     (home-page "https://code.google.com/p/git-repo/")
     (synopsis "Helps to manage many Git repositories.")
     (description "Repo is a tool built on top of Git.  Repo helps manage many
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index c88b8a25a2..b11a2dbe6b 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -183,11 +183,10 @@ dictionaries, including personal ones.")
 
 (define-public aspell-dict-da
   (aspell-dictionary "da" "Danish"
-                     #:version "1.4.42-1"
-                     #:prefix "aspell5-"
+                     #:version "1.6.36-11-0"
                      #:sha256
                      (base32
-                      "1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp")))
+                      "1xz2haayvwlxgss9jf1x2311a1ixbk75q2vgfprjhibsmb7cpinv")))
 
 (define-public aspell-dict-el
   (aspell-dictionary "el" "Greek"
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index a96b169d15..1ad49baf8e 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -148,14 +148,14 @@ to the clients.")
 (define-public fasm
   (package
     (name "fasm")
-    (version "1.73.21")
+    (version "1.73.22")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://flatassembler.net/fasm-"
                            version ".tgz"))
        (sha256
-        (base32 "143zh7x3q0r2kclshh8n5w4i5pw4lh60si7rspvc725xxjpjkvcv"))))
+        (base32 "1pb0rcfdsb0h89khjjrbikz5wjdllavj3ajim0rcyh7x12xr1hw5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests exist
@@ -232,7 +232,7 @@ assembler, a C compiler and a linker.  The assembler uses Intel syntax
                 (uri (git-reference
                       (url "https://git.savannah.gnu.org/r/libjit.git")
                       (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0p6wklslkkp3s4aisj3w5a53bagqn5fy4m6088ppd4fcfxgqkrcd"))))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 7b46e2cb6f..5b8c610882 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1988,7 +1988,7 @@ software.")
      (list (search-path-specification
             (variable "LV2_PATH")
             (files '("lib/lv2")))))
-    (home-page "http://elephly.net/lv2/mdapiano.html")
+    (home-page "https://elephly.net/lv2/mdapiano.html")
     (synopsis "LV2 port of the mda Piano plugin")
     (description "An LV2 port of the mda Piano VSTi.")
     (license license:gpl3+)))
@@ -2002,7 +2002,7 @@ software.")
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:tests? #f ; no check target
        #:phases (modify-phases %standard-phases (delete 'configure))))
-    (home-page "http://elephly.net/lv2/mdaepiano.html")
+    (home-page "https://elephly.net/lv2/mdaepiano.html")
     (synopsis "LV2 port of the mda EPiano plugin")
     (description "An LV2 port of the mda EPiano VSTi.")))
 
@@ -3523,7 +3523,7 @@ the Snd sources), Ruby, or Forth.")
 (define-public noise-repellent
   (package
     (name "noise-repellent")
-    (version "0.1.4")
+    (version "0.1.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3532,16 +3532,12 @@ the Snd sources), Ruby, or Forth.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
-    (build-system gnu-build-system)
+                "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
+    (build-system meson-build-system)
     (arguments
-     `(#:make-flags
-       (list "CC=gcc"
-             (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:tests? #f ; there are none
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure))))
+     `(#:configure-flags
+       (list (string-append "--prefix=" (assoc-ref %outputs "out")
+                            "/lib/lv2"))))
     (inputs
      `(("lv2" ,lv2)
        ("fftwf" ,fftwf)))
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index ceb70dfee7..2ba9950981 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -60,8 +60,7 @@
     ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
     ;; should use our own "cpp" instead of "/lib/cpp".
     (arguments `(#:tests? #f))
-    (home-page
-     "http://www.gnu.org/software/autoconf/")
+    (home-page "https://www.gnu.org/software/autoconf/")
     (synopsis "Create source code configuration scripts")
     (description
      "Autoconf offers the developer a robust set of M4 macros which expand
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 00a7bcc70f..9d8d984cb2 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -451,7 +451,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
     (inputs
      `(("perl" ,perl)
        ("rsync" ,rsync)))
-    (home-page "http://rsnapshot.org")
+    (home-page "https://rsnapshot.org")
     (synopsis "Deduplicating snapshot backup utility based on rsync")
     (description "rsnapshot is a file system snapshot utility based on rsync.
 rsnapshot makes it easy to make periodic snapshots of local machines, and
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 08478d3118..602681ac86 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -44,14 +44,14 @@
 (define-public fio
   (package
     (name "fio")
-    (version "3.17")
+    (version "3.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "1hvh8syjz6l0q9bm5p7rf0yrmpkfcx5zj5d47mf6335w1i0h5gqf"))))
+                "12wzi40hn0ylkdiqwjjljdjmiq78nhwsv3qqa0fad7h3x08w6w6b"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index a6e0c5a1e6..e004560d58 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -722,6 +722,49 @@ the weighted combination of published signatures that, when summed, most
 closely reconstructs the mutational profile.")
     (license license:gpl2+)))
 
+;; This is a CRAN package, but it depends on Bioconductor packages.
+(define-public r-nmf
+  (package
+    (name "r-nmf")
+    (version "0.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "NMF" version))
+       (sha256
+        (base32
+         "0b2ls3x1nkrnam45hagpys624nzxj3v7kxnp0q216yakvx5h57cq"))))
+    (properties `((upstream-name . "NMF")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-cluster" ,r-cluster)
+       ("r-biobase" ,r-biobase)
+       ("r-biocmanager" ,r-biocmanager)
+       ("r-bigmemory" ,r-bigmemory) ; suggested
+       ("r-synchronicity" ,r-synchronicity) ; suggested
+       ("r-colorspace" ,r-colorspace)
+       ("r-digest" ,r-digest)
+       ("r-doparallel" ,r-doparallel)
+       ("r-foreach" ,r-foreach)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridbase" ,r-gridbase)
+       ("r-pkgmaker" ,r-pkgmaker)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-registry" ,r-registry)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rngtools" ,r-rngtools)
+       ("r-stringr" ,r-stringr)))
+    (home-page "http://renozao.github.io/NMF")
+    (synopsis "Algorithms and framework for nonnegative matrix factorization")
+    (description
+     "This package provides a framework to perform Non-negative Matrix
+Factorization (NMF).  The package implements a set of already published
+algorithms and seeding methods, and provides a framework to test, develop and
+plug new or custom algorithms.  Most of the built-in algorithms have been
+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-do-db
   (package
     (name "r-do-db")
@@ -1526,6 +1569,30 @@ expressed genes in DNA microarray experiments.")
      "This package implements some simple graph handling capabilities for R.")
     (license license:artistic2.0)))
 
+;; This is a CRAN package, but it depends on a Bioconductor package.
+(define-public r-ggm
+  (package
+    (name "r-ggm")
+    (version "2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ggm" version))
+       (sha256
+        (base32
+         "11wc6k2kj2ydy0dyks5mbvbhxm1r43id87anl1jg6dn0yv4m78di"))))
+    (properties `((upstream-name . "ggm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-graph" ,r-graph)
+       ("r-igraph" ,r-igraph)))
+    (home-page "https://cran.r-project.org/package=ggm")
+    (synopsis "Functions for graphical Markov models")
+    (description
+     "This package provides functions and datasets for maximum likelihood
+fitting of some classes of graphical Markov models.")
+    (license license:gpl2+)))
+
 (define-public r-codedepends
   (package
     (name "r-codedepends")
@@ -1867,14 +1934,14 @@ experiments.")
 (define-public r-genomicinteractions
   (package
     (name "r-genomicinteractions")
-    (version "1.20.0")
+    (version "1.20.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "GenomicInteractions" version))
        (sha256
         (base32
-         "10kwb70c9aq0bfqpq48h186lsbwgrg18m14r9z8x6n8l7cds5azc"))))
+         "140bp7c8p079xh5wwxmrq3a73pm6mdc9czq5w2gzjml7dgrca38a"))))
     (properties
      `((upstream-name . "GenomicInteractions")))
     (build-system r-build-system)
@@ -2028,14 +2095,14 @@ genes or proteins in these datasets.")
 (define-public r-inspect
   (package
     (name "r-inspect")
-    (version "1.16.2")
+    (version "1.16.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "INSPEcT" version))
        (sha256
         (base32
-         "1g8la7k4pnyr2hvk4yjd1bwvjy6nqbbb0fwxrrh2ifgqf4h21x2p"))))
+         "0y4gpvrbmcipdnyz9lz9ywn0317xnpcriiisqvxygin05vgcpilp"))))
     (properties `((upstream-name . "INSPEcT")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2156,14 +2223,14 @@ achieved for all methods using the BiocParallel framework.")
 (define-public r-biocsingular
   (package
     (name "r-biocsingular")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "BiocSingular" version))
        (sha256
         (base32
-         "0fjfmmpda7pszsck2hm7bp4509pl3xaz02q2q03d5vla62h1h81k"))))
+         "1282fdwxrpga87y8xflr0sl8ajwawgn2i9i65my8mbg5vrixs407"))))
     (properties `((upstream-name . "BiocSingular")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3284,14 +3351,14 @@ gmapR.")
 (define-public r-heatplus
   (package
     (name "r-heatplus")
-    (version "2.32.0")
+    (version "2.32.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Heatplus" version))
        (sha256
         (base32
-         "0hx5gqgh4xrkx37ccprq7azj9jziff137bdk0gvrixcx52ws6h89"))))
+         "1ldxj2hasg6ysh70sc73mz2v4h3n8gf3lii09c3sqc4wmz5h7rp1"))))
     (properties `((upstream-name . "Heatplus")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3942,14 +4009,14 @@ position-specific scores within R and Bioconductor.")
 (define-public r-atacseqqc
   (package
     (name "r-atacseqqc")
-    (version "1.10.1")
+    (version "1.10.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ATACseqQC" version))
        (sha256
         (base32
-         "12ix0bvwk50d48z85f3453k7szm1j27gk4qgw56az4fxra472rlh"))))
+         "0dzrizacy3br8fiy1vnsl5zf242lg1hqv9dyv5ayqh2n480is57f"))))
     (properties `((upstream-name . "ATACseqQC")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5305,14 +5372,14 @@ annotations.")
 (define-public r-rsubread
   (package
     (name "r-rsubread")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rsubread" version))
        (sha256
         (base32
-         "0l8q9y2a4m1di0w5nlxhq9jgliinhgr2fwjpm5ixnqx5j3iprlwd"))))
+         "0pdkx9mhvzw3a4ff725qvda9bxvs9vh2ppb29cc5jrivgjndv5cy"))))
     (properties `((upstream-name . "Rsubread")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -5817,14 +5884,14 @@ self-organizing map clustering and minimal spanning trees.")
 (define-public r-mixomics
   (package
     (name "r-mixomics")
-    (version "6.10.6")
+    (version "6.10.8")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "mixOmics" version))
        (sha256
         (base32
-         "18jwrdyc4pnx917y1kskxz3fqvlrkyy4ny0xqrfcidz0j7p0b7wr"))))
+         "0307vhx9ck24rxqbvq15815ssxcc226sl2la060n204b51wi9jaa"))))
     (properties `((upstream-name . "mixOmics")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5859,14 +5926,14 @@ delete entire rows with missing data.")
 (define-public r-depecher
   (package
     (name "r-depecher")
-    (version "1.2.0")
+    (version "1.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DepecheR" version))
        (sha256
         (base32
-         "1f6zbc0fq7xjflh3mkjx1n83mpppw663dj22rlpxzwp1kpmf6wm5"))))
+         "08ja6ayvbax9m3x9w3xzi72z97miiha2nbsild1gp77n6sgn5i35"))))
     (properties `((upstream-name . "DepecheR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5937,14 +6004,14 @@ genes in the gene-set that are ranked above the leading edge).")
 (define-public r-cicero
   (package
     (name "r-cicero")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "cicero" version))
        (sha256
         (base32
-         "0mmm7vvzq50b5fayid0bw82b5lar3xm9fwl2ya30q0p4db2y6wnz"))))
+         "07g6r335zqqy3r5v4x4glxdrcsq9bjhs9jmgvppiggv1h630a22w"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -5966,6 +6033,7 @@ genes in the gene-set that are ranked above the leading edge).")
        ("r-s4vectors" ,r-s4vectors)
        ("r-stringr" ,r-stringr)
        ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)
        ("r-vgam" ,r-vgam)))
     (home-page "https://bioconductor.org/packages/cicero/")
     (synopsis "Predict cis-co-accessibility from single-cell data")
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 065555b37b..4adb3137e5 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2744,7 +2744,7 @@ quantitative phenotypes.")
 (define-public edirect
   (package
     (name "edirect")
-    (version "12.1.20190819")
+    (version "12.1.20190829")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect"
@@ -2752,7 +2752,7 @@ quantitative phenotypes.")
                                   "/edirect-" version ".tar.gz"))
               (sha256
                (base32
-                "1i9s9mppcfqd60pfywpm8vdyz5vpnyslw22nd7dv0bhykrdnkz9g"))))
+                "1xb330z28dgp7slrvp8r7rgncsasv9lpcpqim571yg728dq7xdik"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -6935,14 +6935,14 @@ testing and other simple calculations.")
 (define-public r-shortread
   (package
     (name "r-shortread")
-    (version "1.44.1")
+    (version "1.44.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "ShortRead" version))
        (sha256
         (base32
-         "1dh3q83hmi4l72vpif6dn51dzbi9ljrjgkq2zxg4sqy2jxv4vwza"))))
+         "0ykyrj4g6vc67d5s46sp4659qvar2iavflzhggm79w4p50hxia4s"))))
     (properties `((upstream-name . "ShortRead")))
     (build-system r-build-system)
     (inputs
@@ -7532,13 +7532,13 @@ coding changes and predict coding outcomes.")
 (define-public r-limma
   (package
     (name "r-limma")
-    (version "3.42.0")
+    (version "3.42.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "limma" version))
               (sha256
                (base32
-                "0cfynv6qbnar5rl7vjh5lvddd381g9wqx1zd6a7l130hf59mwswn"))))
+                "1nd01r7rd7jb5qz84vbgfnyrmgm9wiq7fsdji68537kjgvrzmm9z"))))
     (build-system r-build-system)
     (home-page "http://bioinf.wehi.edu.au/limma")
     (synopsis "Package for linear models for microarray and RNA-seq data")
@@ -7751,13 +7751,13 @@ biological sequences or sets of sequences.")
 (define-public r-rsamtools
   (package
     (name "r-rsamtools")
-    (version "2.2.1")
+    (version "2.2.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "Rsamtools" version))
               (sha256
                (base32
-                "0hpdc88prpq1gcja89n5s1ndcg81523qrkbkm9gbhm7rm8wmi8cl"))))
+                "1larx1a9cngmcsm2n7yyxrlnk69zi8m9dp3b90jva0ynspyi76v7"))))
     (properties
      `((upstream-name . "Rsamtools")))
     (build-system r-build-system)
@@ -7939,13 +7939,13 @@ as well as query and modify the browser state, such as the current viewport.")
 (define-public r-genomicfeatures
   (package
     (name "r-genomicfeatures")
-    (version "1.38.1")
+    (version "1.38.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "1c1x29f447dv0i1wi88paji645lfsgmg4ckn19hyhlra72smhzqc"))))
+                "0dd226kgks50jdx5w35f3wmg95hy8aibi4kcn8p5kmqp5i8j580b"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8236,7 +8236,7 @@ throughput genetic sequencing data sets using regression methods.")
 (define-public r-qtl
  (package
   (name "r-qtl")
-  (version "1.44-9")
+  (version "1.45-11")
   (source
    (origin
     (method url-fetch)
@@ -8244,7 +8244,7 @@ throughput genetic sequencing data sets using regression methods.")
                         version ".tar.gz"))
     (sha256
      (base32
-      "03lmvydln8b7666b6w46qbryhf83vsd11d4y2v95rfgvqgq66l1i"))))
+      "1d6qgj602fm6zia3djl4hmca0ri4v57ffp3g93p2yc3cabx2hq90"))))
   (build-system r-build-system)
   (home-page "https://rqtl.org/")
   (synopsis "R package for analyzing QTL experiments in genetics")
@@ -8332,14 +8332,14 @@ secondary structure and comparative analysis in R.")
 (define-public r-rhtslib
   (package
     (name "r-rhtslib")
-    (version "1.18.0")
+    (version "1.18.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhtslib" version))
        (sha256
         (base32
-         "04inkq44lxwymqv51mxgaphasqjcdc9rl5p58imnrdm0kszs8prm"))))
+         "0gkbrmrcg55c9s5166ifljlx0v25rv4ijdyp4wf4c292xd6chy2l"))))
     (properties `((upstream-name . "Rhtslib")))
     (build-system r-build-system)
     ;; Without this a temporary directory ends up in the Rhtslib.so binary,
@@ -9504,13 +9504,13 @@ and irregular enzymatic cleavages, mass measurement accuracy, etc.")
 (define-public r-seurat
   (package
     (name "r-seurat")
-    (version "3.1.2")
+    (version "3.1.3")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "Seurat" version))
               (sha256
                (base32
-                "0m1qi39snbmkkv1p07bzg1r7snc9x6a1y0dghvpk1nzgcfpmnsj4"))))
+                "0962mfgqk1di3wy1j0xdkvnw0q5m3q4xzd67d1l6dijlqiz8nfal"))))
     (properties `((upstream-name . "Seurat")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9549,7 +9549,6 @@ and irregular enzymatic cleavages, mass measurement accuracy, etc.")
        ("r-rtsne" ,r-rtsne)
        ("r-scales" ,r-scales)
        ("r-sctransform" ,r-sctransform)
-       ("r-sdmtools" ,r-sdmtools)
        ("r-tsne" ,r-tsne)
        ("r-uwot" ,r-uwot)))
     (home-page "http://www.satijalab.org/seurat")
@@ -10326,14 +10325,14 @@ family of feature/genome hypotheses.")
 (define-public r-gviz
   (package
     (name "r-gviz")
-    (version "1.30.1")
+    (version "1.30.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Gviz" version))
        (sha256
         (base32
-         "03jj193fzmhvkjw8f5zk6wgflkvm3phny0q38scawcplfsyb8z64"))))
+         "0c9i26h5czm60n1bxzmdxxpywcj0sig6wcj913pb41mr83bbgra3"))))
     (properties `((upstream-name . "Gviz")))
     (build-system r-build-system)
     (propagated-inputs
@@ -10478,14 +10477,14 @@ provided.")
 (define-public r-hdf5array
   (package
     (name "r-hdf5array")
-    (version "1.14.1")
+    (version "1.14.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "HDF5Array" version))
        (sha256
         (base32
-         "04hd02zd5jix5p2zg10asmwjg1fynqgmclbhbmk7fb6arx5hm11f"))))
+         "0mbx9rsr2571k4k4hmx3dr49rhqb31dhwy2r2bkrd4dbhvriqgld"))))
     (properties `((upstream-name . "HDF5Array")))
     (build-system r-build-system)
     (inputs
@@ -10675,14 +10674,14 @@ quality control.")
 (define-public r-scran
   (package
     (name "r-scran")
-    (version "1.14.5")
+    (version "1.14.6")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "scran" version))
        (sha256
         (base32
-         "0ydy6gvpgpvrs4ryk1qvmmxp6cpaizs294jwg42jawxndkds1l3y"))))
+         "1y8wlgk5zbv7c7gcp0ahfpbh9lifab7y3zwf0093fzaw7vr1y6cr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-beachmat" ,r-beachmat)
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 045fbe65ab..fa63c49920 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -380,7 +380,7 @@ and will take advantage of multiple processor cores where possible.")
 (define-public libtorrent-rasterbar
   (package
     (name "libtorrent-rasterbar")
-    (version "1.1.13")
+    (version "1.1.14")
     (source (origin
               (method url-fetch)
               (uri
@@ -390,7 +390,7 @@ and will take advantage of multiple processor cores where possible.")
                 "/libtorrent-rasterbar-" version ".tar.gz"))
               (sha256
                (base32
-                "1mza92ljjqvlz9582pmls3n45srqhxvw3q348xihcg4fhlchf11h"))))
+                "0sn3ingmk1lk9p56f9ifgdwhjg0qizcfgv15wyc9s71nm5fya7sc"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 342f5f59cd..63dc72e1a7 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
@@ -80,7 +80,7 @@ makes a few sacrifices to acquire fast full and incremental build times.")
 (define-public bear
   (package
     (name "bear")
-    (version "2.4.2")
+    (version "2.4.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -89,7 +89,7 @@ makes a few sacrifices to acquire fast full and incremental build times.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1w1kyjzvvy5lj16kn3yyf7iil2cqlfkszi8kvagql7f5h5l6w9b1"))))
+                "19fk4flfykbzhb89ppmzqf0zlrkbjm6ajl9fsayndj9km5ys0041"))))
     (build-system cmake-build-system)
     (inputs
      `(("python" ,python-wrapper)))
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 921d473cd9..160f456f79 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
@@ -132,7 +132,7 @@ compiler while still keeping it small, simple, fast and understandable.")
 (define-public libbytesize
   (package
     (name "libbytesize")
-    (version "2.1")
+    (version "2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -140,7 +140,7 @@ compiler while still keeping it small, simple, fast and understandable.")
                     "download/" version "/libbytesize-" version ".tar.gz"))
               (sha256
                (base32
-                "1bpz9cpb8s47kqplkkiz6ryfahas2ma95g9rh2axnfjp6w1d9ixc"))))
+                "1aivwypmnqcaj2230pifvf3jcgl5chja8rspkxf0j3480asm8g5r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))
diff --git a/gnu/packages/cedille.scm b/gnu/packages/cedille.scm
index 80ed7e9759..d3a6850f9f 100644
--- a/gnu/packages/cedille.scm
+++ b/gnu/packages/cedille.scm
@@ -30,7 +30,7 @@
 (define-public cedille
   (package
     (name "cedille")
-    (version "1.1.1")
+    (version "1.1.2")
     (source
      (origin
        (method git-fetch)
@@ -40,7 +40,7 @@
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "07kv9wncyipfjf5w4ax8h2p35g70zb1qw6zc4afd7c225xia55wp"))))
+         "1h5s6ayh3s76z184jai3jidcs4cjk8s4nvkkv2am8dg4gfsybq22"))))
     (inputs
      `(("agda" ,agda)
        ("agda-ial" ,agda-ial)
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index 9f1acb8837..2328012083 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -185,7 +185,7 @@ taken from the NSS package and thus ultimately from the Mozilla project.")
            (uri "https://letsencrypt.org/certs/isrgrootx1.pem")
            (sha256
             (base32
-             "0zycy85ff9ga53z1q03df89ka9iihb9p8bjhw056rq2y4rn3b6ac"))))
+             "1la36n2f31j9s03v847ig6ny9lr875q3g7smnq33dcsmf2i5gd92"))))
        ;; "Let’s Encrypt Authority X3", the active Let's Encrypt intermediate
        ;; certificate.
        ("letsencryptauthorityx3.pem"
@@ -194,7 +194,7 @@ taken from the NSS package and thus ultimately from the Mozilla project.")
            (uri "https://letsencrypt.org/certs/letsencryptauthorityx3.pem")
            (sha256
             (base32
-             "1kvac1dhm1d02bhrfj6l1cz1dpldz6ishb78zzvy8245zgvh7pdn"))))
+             "100lxxvqv4fj563bm03zzk5r36hq5jx9nnrajzs38g825c5k0cg2"))))
        ;; "Let’s Encrypt Authority X4", the backup Let's Encrypt intermediate
        ;; certificate.  This will be used for disaster recovery and will only be
        ;; used should Let's Encrypt lose the ability to issue with "Let’s
@@ -205,7 +205,7 @@ taken from the NSS package and thus ultimately from the Mozilla project.")
            (uri "https://letsencrypt.org/certs/letsencryptauthorityx4.pem")
            (sha256
             (base32
-             "0giiixknr0mls2ir6qqzb42mq7x9a7vz79gbn7fjszbf87pqhpzm"))))))
+             "0d5256gwf73drq6q6jala28rfzhrgbk5pjfq27vc40ly91pdyh8m"))))))
     (home-page "https://letsencrypt.org/certificates/")
     (synopsis "Let's Encrypt root and intermediate certificates")
     (description "This package provides a certificate store containing only the
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 30db84e167..024a017c97 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1908,15 +1908,14 @@ decompression is a little bit slower.")
 (define-public upx
   (package
     (name "upx")
-    (version "3.94")
+    (version "3.96")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/upx/upx/releases/download/v"
-                                 version "/" name "-" version "-src.tar.xz"))
+                                 version "/upx-" version "-src.tar.xz"))
              (sha256
               (base32
-               "08anybdliqsbsl6x835iwzljahnm9i7v26icdjkcv33xmk6p5vw1"))
-             (patches (search-patches "upx-fix-CVE-2017-15056.patch"))))
+               "051pk5jk8fcfg5mpgzj43z5p4cn7jy5jbyshyn78dwjqr7slsxs7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)))
@@ -1925,36 +1924,25 @@ decompression is a little bit slower.")
        ("zlib" ,zlib)))
     (arguments
      `(#:make-flags
-       (list "all"
-             ;; CHECK_WHITESPACE does not seem to work.
-             ;; See https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/upx.
-             "CHECK_WHITESPACE=true")
+       (list "all")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (delete 'check)
-         (delete 'install)
+         (delete 'configure)            ; no configure script
+         (delete 'check)                ; no test suite
          (add-before 'build 'patch-exec-bin-sh
            (lambda _
-             (substitute* (find-files "Makefile")
-               (("/bin/sh") (which "sh")))
-             (substitute* "src/Makefile"
+             (substitute* (list "Makefile"
+                                "src/Makefile")
                (("/bin/sh") (which "sh")))
              #t))
-         (add-after 'build 'install-upx
+         (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                   (bin (string-append out "/bin")))
+                    (bin (string-append out "/bin")))
                (mkdir-p bin)
                (copy-file "src/upx.out" (string-append bin "/upx")))
-             #t))
-         )))
+             #t)))))
     (home-page "https://upx.github.io/")
-    ;; CVE-2017-16869 is about Mach-O files which is not of a big concern for Guix.
-    ;; See https://github.com/upx/upx/issues/146 and
-    ;; https://nvd.nist.gov/vuln/detail?vulnId=CVE-2017-16869.
-    ;; The issue will be fixed after version 3.94.
-    (properties `((lint-hidden-cve . ("CVE-2017-16869"))))
     (synopsis "Compression tool for executables")
     (description
      "The Ultimate Packer for eXecutables (UPX) is an executable file
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 0098cb8dc7..5f17a0ea95 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,14 +44,14 @@
 (define-public connman
   (package
     (name "connman")
-    (version "1.37")
+    (version "1.38")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://kernel.org/linux/network/connman/"
                             "connman-" version ".tar.xz"))
     (sha256
-     (base32 "05kfjiqhqfmbbwc4snnyvi5hc4zxanac62f6gcwaf5mvn0z9pqkc"))))
+     (base32 "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -74,6 +74,7 @@
        ("glib" ,glib)
        ("gnutls" ,gnutls)
        ("iptables" ,iptables)
+       ("libmnl" ,libmnl)
        ("readline" ,readline)
        ;; These inputs are needed for connman to include the interface to
        ;; these technologies so IF they are installed they can be used.
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index ae1e3e3356..8b32c3f0a9 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -410,3 +411,31 @@ SObjectizer supports not only the Actor Model but also the Publish-Subscribe
 Model and CSP-like channels.  The goal of SObjectizer is to simplify
 development of concurrent and multithreaded applications in C++.")
     (license license:bsd-3)))
+
+(define-public tweeny
+  (package
+    (name "tweeny")
+    (version "3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mobius3/tweeny.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1adm4c17pi7xf3kf6sjyxibz5rdg1ka236p72xsm6js4j9gzlbp4"))))
+    (arguments
+     '(#:tests? #f))                    ;no check target
+    (build-system cmake-build-system)
+    (home-page "https://mobius3.github.io/tweeny/")
+    (synopsis "Modern C++ tweening library")
+    (description "@code{Tweeny} is an inbetweening library designed for the
+creation of complex animations for games and other beautiful interactive
+software.  It leverages features of modern @code{C++} to empower developers with
+an intuitive API for declaring tweenings of any type of value, as long as they
+support arithmetic operations.  The goal of @code{Tweeny} is to provide means to
+create fluid interpolations when animating position, scale, rotation, frames or
+other values of screen objects, by setting their values as the tween starting
+point and then, after each tween step, plugging back the result.")
+    (license license:expat)))
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index fd1cc7f358..67f14a3b88 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -423,14 +423,14 @@ such as copy/paste from an R session.")
 (define-public r-callr
   (package
     (name "r-callr")
-    (version "3.4.1")
+    (version "3.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "callr" version))
        (sha256
         (base32
-         "0nyba0knzd44zz2xmr7zd9qh3rny0q8msysxf49843d9rlyv6y70"))))
+         "0bdlp0labwyfl36jqslj2g7zmw7zwr58v9gam435kiblhjimb8fc"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-r6" ,r-r6)
@@ -529,13 +529,13 @@ particularly easy to create complete web applications using httpuv alone.")
 (define-public r-jsonlite
   (package
     (name "r-jsonlite")
-    (version "1.6")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "jsonlite" version))
               (sha256
                (base32
-                "0lyvhnr6n57h3a89bvipii7x17nvfaycm9j5j50bfrlr48jv9ic8"))))
+                "0xrki07wc17bkmhz0h7jay784j1sls2i9bf1mfpj6yl59791v4kl"))))
     (build-system r-build-system)
     (home-page "https://arxiv.org/abs/1403.2805")
     (synopsis "Robust, high performance JSON parser and generator for R")
@@ -1271,14 +1271,14 @@ Projection code and larger maps are in separate packages (@code{mapproj} and
 (define-public r-mapproj
   (package
     (name "r-mapproj")
-    (version "1.2.6")
+    (version "1.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mapproj" version))
        (sha256
         (base32
-         "1rggww8cbwv0vzlj5afzhbsbngg4bzj5znbkz7wmxsbshfbsm9b2"))))
+         "0nscsfq8md6ri9258xz57c3dj81wdl6kdwf4a9qcrwwbn20i427h"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-maps" ,r-maps)))
     (home-page "https://cran.r-project.org/web/packages/mapproj")
@@ -1293,17 +1293,19 @@ coordinates.")
 (define-public r-rgooglemaps
   (package
     (name "r-rgooglemaps")
-    (version "1.4.5.2")
+    (version "1.4.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RgoogleMaps" version))
        (sha256
         (base32
-         "1y2dinxmzx6mg6ynpk2q7f4k4rxjm66my185gafdcvpc4rl7svs7"))))
+         "02v8k0bw70q4qwx4lcdy8p25q7n3ql2ll46lfpqllxa1p26svmfi"))))
     (properties `((upstream-name . "RgoogleMaps")))
     (build-system r-build-system)
-    (propagated-inputs `(("r-png" ,r-png)))
+    (propagated-inputs
+     `(("r-png" ,r-png)
+       ("r-sp" ,r-sp)))
     (home-page "https://cran.r-project.org/web/packages/RgoogleMaps")
     (synopsis "Use Google Maps in R")
     (description "This package serves two purposes:
@@ -1615,13 +1617,13 @@ print, summary, plot, update, etc.
 (define-public r-ps
   (package
     (name "r-ps")
-    (version "1.3.0")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ps" version))
        (sha256
-        (base32 "1lcq7r0q4jb8x6k023zr2ydj2dg925bqqbkhx1phpnyjrk897498"))))
+        (base32 "0127q6pw9iw8hhcfp231gmdh29nahh2n5jzc38avrzy7yrm4bwl9"))))
     (build-system r-build-system)
     (home-page "https://ps.r-lib.org")
     (synopsis "List, query, and manipulate system processes")
@@ -1914,14 +1916,14 @@ rows, dropping names) to see if the modified versions are identical.")
 (define-public r-dendextend
   (package
     (name "r-dendextend")
-    (version "1.13.2")
+    (version "1.13.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dendextend" version))
        (sha256
         (base32
-         "1iclvd9cyckd4djpa87ynm05fk6zl4b4m735za1w4irimc130m3r"))))
+         "1gx6blw644sx2c4s90672scrwl4bv5xlgnfwbcalkh6nff2sai0h"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -2155,13 +2157,13 @@ most popular ones.")
 (define-public r-sp
   (package
     (name "r-sp")
-    (version "1.3-2")
+    (version "1.4-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sp" version))
        (sha256
-        (base32 "0kpjsqh3lzqp1m0avsvm54lazlgwfx3hyf0av3mvbyslsanj42ll"))))
+        (base32 "0mgjrlviv6qapgpiqdjcbsygzfs8bf5c64krh2rk555vf5njmnh7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -2382,14 +2384,14 @@ matrices, a special case of sparse matrices.")
 (define-public r-bbmle
   (package
     (name "r-bbmle")
-    (version "1.0.22")
+    (version "1.0.23.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bbmle" version))
        (sha256
         (base32
-         "1idn55w5f3iw4r0ydyww8xyinninw07sxlwfqb565vmdrs87dwl4"))))
+         "0p3l9shbr2846qmw8n0fyzf4j7gmi08aypl82jml3dwh26q1whk0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bdsmatrix" ,r-bdsmatrix)
@@ -2410,22 +2412,21 @@ classes in the @code{stats4} package.")
 (define-public r-emdbook
   (package
     (name "r-emdbook")
-    (version "1.3.11")
+    (version "1.3.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emdbook" version))
        (sha256
         (base32
-         "0a515jdzvg87npvrh7md7zp0v5nlz7c2jr7pba5dql6slb0d8j7q"))))
+         "0ls3zxxlwmdv7zn1v9i1y9zc2sn0hbgmyjvsj7zn3ajsw7wwlih6"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bbmle" ,r-bbmle)
        ("r-coda" ,r-coda)
        ("r-lattice" ,r-lattice)
        ("r-mass" ,r-mass)
-       ("r-plyr" ,r-plyr)
-       ("r-rcpp" ,r-rcpp)))
+       ("r-plyr" ,r-plyr)))
     (home-page "http://www.math.mcmaster.ca/bolker/emdbook")
     (synopsis "Support functions and data for \"Ecological Models and Data\"")
     (description
@@ -2635,14 +2636,14 @@ contexts.")
 (define-public r-squarem
   (package
     (name "r-squarem")
-    (version "2020.1")
+    (version "2020.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "SQUAREM" version))
        (sha256
         (base32
-         "0v4ax1v8diw2w7fdhfzz1z0bwixkmcrc39ax3y116f399rc06qbs"))))
+         "1j6sa93xjvynnzx9jx79a3fysbykmbqyknknsqif5bcha6xp6cvf"))))
     (properties `((upstream-name . "SQUAREM")))
     (build-system r-build-system)
     (home-page "https://coah.jhu.edu/people/Faculty_personal_Pages/Varadhan.html")
@@ -2681,14 +2682,14 @@ variable models.")
 (define-public r-drr
   (package
     (name "r-drr")
-    (version "0.0.3")
+    (version "0.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DRR" version))
        (sha256
         (base32
-         "1yd1fvllfkcrwg9v322n4wkk4q4q84nvy58y4vac9pdr3yf3i4vl"))))
+         "1y70si1gig4l7jx5jiqsqliyywfsvimkx53x3zh1lc3yj2j6bqwk"))))
     (properties `((upstream-name . "DRR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2798,14 +2799,14 @@ dimensioned arrays.")
 (define-public r-rmysql
   (package
     (name "r-rmysql")
-    (version "0.10.18")
+    (version "0.10.19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RMySQL" version))
        (sha256
         (base32
-         "0r4626sk78fhlgivr0c7mwg9mj29ayr0iz5x90rdl4d5nc2r6kq4"))))
+         "0269pfq791qvax69lrwvvzgllyzm3cy3sdp9sakwxzvw5pxk2vhv"))))
     (properties `((upstream-name . "RMySQL")))
     (build-system r-build-system)
     (inputs
@@ -3356,26 +3357,21 @@ analysis of multiply imputed data sets.")
 (define-public r-mice
   (package
     (name "r-mice")
-    (version "3.7.0")
+    (version "3.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mice" version))
        (sha256
         (base32
-         "1wx1s1gc07iz63w4m8z0i1n5mc273f89grp5d3hfla7ypicjkasf"))))
+         "1ibybvigqkkla4xwhqs2w4m6c68alfcdsljx99nn4p92rzb1ig04"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-broom" ,r-broom)
        ("r-dplyr" ,r-dplyr)
        ("r-lattice" ,r-lattice)
-       ("r-mass" ,r-mass)
-       ("r-mitml" ,r-mitml)
-       ("r-nnet" ,r-nnet)
        ("r-rcpp" ,r-rcpp)
-       ("r-rlang" ,r-rlang)
-       ("r-rpart" ,r-rpart)
-       ("r-survival" ,r-survival)))
+       ("r-tidyr" ,r-tidyr)))
     (home-page "https://cran.r-project.org/web/packages/mice/")
     (synopsis "Multivariate imputation by chained equations")
     (description
@@ -3585,14 +3581,14 @@ simplifying cross-class interoperability.")
 (define-public r-performanceanalytics
   (package
     (name "r-performanceanalytics")
-    (version "1.5.3")
+    (version "2.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "PerformanceAnalytics" version))
        (sha256
         (base32
-         "0jhjldwyxwq7a47zmk5y1jjck7hvq92p8rlgjvdfy51hx2dmlqqd"))))
+         "0ci26hsj4wnw9g0mh4vrn0cg986cpcpx169rvw6v6rbnjxq718bq"))))
     (properties
      `((upstream-name . "PerformanceAnalytics")))
     (build-system r-build-system)
@@ -3615,14 +3611,14 @@ where possible.")
 (define-public r-laeken
   (package
     (name "r-laeken")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "laeken" version))
        (sha256
         (base32
-         "1g9r3y7b0gl91hijk9awa8rjk97mqpkxinzq2cgmx0m38ng9ylpa"))))
+         "199rjkhjjygpr6cjzab87as46acb5npi44m4yycvk7lnd0blma8s"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-boot" ,r-boot)
@@ -3717,7 +3713,7 @@ normalizations, minimum variance matching, and so on.")
     (properties `((upstream-name . "SDMTools")))
     (build-system r-build-system)
     (propagated-inputs `(("r-r-utils" ,r-r-utils)))
-    (home-page "http://www.rforge.net/SDMTools/")
+    (home-page "https://www.rforge.net/SDMTools/")
     (synopsis "Species distribution modelling tools")
     (description "This package provides a set of tools for post processing
 the outcomes of species distribution modeling exercises.  It includes novel
@@ -3860,14 +3856,14 @@ constants, and control debugging of packages via environment variables.")
 (define-public r-processx
   (package
     (name "r-processx")
-    (version "3.4.1")
+    (version "3.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "processx" version))
        (sha256
         (base32
-         "1g6ipcaxg9y94lyrnbp7kkbqfkcdh1fyrqjjclbjp3x7iysdvazi"))))
+         "02awswxq6wh3rl99dncw5n6c1xmd0v81xcdp2dfyi6vm6b3gz84l"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ps" ,r-ps)
@@ -3887,14 +3883,14 @@ timeout.  It can also poll several processes at once.")
 (define-public r-tsp
   (package
     (name "r-tsp")
-    (version "1.1-8")
+    (version "1.1-9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "TSP" version))
        (sha256
         (base32
-         "0g44f2a4m7rfx6y51cdbr6vcmmpbwgyzpvfjksq3lb7gcpbr7xrx"))))
+         "183m6crb0dv17llj86059n3hbgsahbhfcqlx0ijdzkssg11i1cy7"))))
     (properties `((upstream-name . "TSP")))
     (build-system r-build-system)
     (propagated-inputs `(("r-foreach" ,r-foreach)))
@@ -4067,14 +4063,14 @@ to variables on the left-hand side of the assignment.")
 (define-public r-vctrs
   (package
     (name "r-vctrs")
-    (version "0.2.2")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "vctrs" version))
        (sha256
         (base32
-         "008xjmlj5a5vm303wxac7bliamqwaj7mcj0jv6n9ibc8p8h93aqd"))))
+         "1pnjnxp1pwsr083qa6xp5akls6q0pnjz8pq2m9d7z3kc1886sw8w"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -4714,14 +4710,14 @@ creation and manipulation of WAVE audio files.")
 (define-public r-np
   (package
     (name "r-np")
-    (version "0.60-9")
+    (version "0.60-10")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "np" version))
        (sha256
         (base32
-         "1z4jcpx8bbgwslv42wrphfd1qfq965qjn0kmfxm5f6hbbycahcgy"))))
+         "06h8k0kdv5s258jr6s08fabvlycrbs7iq34jk2f2hfmqm2y4nyx2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-boot" ,r-boot)
@@ -5167,14 +5163,14 @@ specific S3-method.")
 (define-public r-vim
   (package
     (name "r-vim")
-    (version "4.8.0")
+    (version "5.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "VIM" version))
        (sha256
         (base32
-         "08x4a4yzgp8adgrv7a3666yma4b60n64mcsnvhzmwdy023f4ysrw"))))
+         "09600piny3qrxrmh8844iwrvgrhwan1c3nlh6irqy1vjha2w4gb3"))))
     (properties `((upstream-name . "VIM")))
     (build-system r-build-system)
     (propagated-inputs
@@ -5183,6 +5179,7 @@ specific S3-method.")
        ("r-data-table" ,r-data-table)
        ("r-e1071" ,r-e1071)
        ("r-laeken" ,r-laeken)
+       ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-nnet" ,r-nnet)
        ("r-ranger" ,r-ranger)
@@ -5646,14 +5643,14 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.")
 (define-public r-renv
   (package
     (name "r-renv")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "renv" version))
        (sha256
         (base32
-         "1jwnabryn77s29ybwdfzlnd7c8m05xmi69kp5qbvdxy2gjwjzcdr"))))
+         "02ayfgbpw4b58148dcxz31anaxncwczmxs1zzkskwj0rzhb2x60r"))))
     (properties `((upstream-name . "renv")))
     (build-system r-build-system)
     (home-page "https://rstudio.github.io/renv")
@@ -5669,14 +5666,14 @@ reproducible.")
 (define-public r-learnr
   (package
     (name "r-learnr")
-    (version "0.10.0")
+    (version "0.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "learnr" version))
        (sha256
         (base32
-         "0278q9nbkc4nb0rp930kjrwyidf0v7y38d1s187m4f4bs7ha82k6"))))
+         "08xwmms6x58y3dsfbl9c6d03145hb4ij97nqr1cc9dxxilmr6x31"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
@@ -5857,14 +5854,14 @@ and adds the annotation to the plot.")
 (define-public r-ggpubr
   (package
     (name "r-ggpubr")
-    (version "0.2.4")
+    (version "0.2.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggpubr" version))
        (sha256
         (base32
-         "0ln1gh3zlfx5s7zqcpvfdiksq74v1pma5kwkhc6r0riqnjjd19pf"))))
+         "0kb3hpmnhj4mkbx1kx0kv5y22himr8dijqx7ra0h8hi0pf2l2ha7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)
@@ -5938,14 +5935,14 @@ clustering.")
 (define-public r-factominer
   (package
     (name "r-factominer")
-    (version "2.1")
+    (version "2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "FactoMineR" version))
        (sha256
         (base32
-         "1b2jsv8vlaynknd7nlra6fdmr56n7678q5s28rqmagbadiqwvj4h"))))
+         "1hcas9iby95y6xcrf231yrd44s799aaaggb9jd1dcb5nd5vfpzw0"))))
     (properties `((upstream-name . "FactoMineR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6381,14 +6378,14 @@ other add-on packages.")
 (define-public r-insight
   (package
     (name "r-insight")
-    (version "0.8.0")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "insight" version))
        (sha256
         (base32
-         "1bkcwvjpfy4q4k478x8x42yiqz6v0fk6z6hfp6fli3h63smlmck0"))))
+         "1y889bydmji3pcq2bdf6xl6ikmd45wbwl53ssvsk05b5ahkyxi76"))))
     (build-system r-build-system)
     (home-page "https://easystats.github.io/insight/")
     (synopsis "Easy access to model information for various model objects")
@@ -6407,14 +6404,14 @@ information are missing.")
 (define-public r-sjlabelled
   (package
     (name "r-sjlabelled")
-    (version "1.1.2")
+    (version "1.1.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjlabelled" version))
        (sha256
         (base32
-         "1vnx067mxnvz4jzhmpiarda8ln6habzj02qikvkix5piiy85sqcw"))))
+         "1amq7i9sxf0pkxhskqc53xq5wvc9rdxm7cxyb4b6xh6qsskjnlsj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-haven" ,r-haven)
@@ -6510,14 +6507,14 @@ functions.")
 (define-public r-flextable
   (package
     (name "r-flextable")
-    (version "0.5.6")
+    (version "0.5.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flextable" version))
        (sha256
         (base32
-         "1f869f2dfqkzhf6yix7xcbs8rn1nwq3sg623h74zg6h1pl6px66w"))))
+         "1x24rz1r5xin122czg85d7nrkwpaabb60p50m3yrd3dh81vfp0hk"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -6753,14 +6750,14 @@ the work.")
 (define-public r-doby
   (package
     (name "r-doby")
-    (version "4.6-3")
+    (version "4.6.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doBy" version))
        (sha256
         (base32
-         "1d0d6pwai1g4i5jls0jm9va29ci5hy92n5957608f3fzi1jwy635"))))
+         "1ckazh701b4ilg8bj17ji903538jmb49d997gm49ah5j5jc1x0g7"))))
     (properties `((upstream-name . "doBy")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7186,16 +7183,17 @@ and coverage methods to tune the choice of threshold.")
 (define-public r-ggformula
   (package
     (name "r-ggformula")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggformula" version))
        (sha256
-        (base32 "16ycabhnp78fsiv1dc63ccgh9gmpsy2683vbmq0fdzl6w3pd87sr"))))
+        (base32 "1bpsfp9hx001r91pxfiwgxcn5vw5bl1gclb865wz6g9l0jqjfk2p"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-ggplot2" ,r-ggplot2)
+     `(("r-ggforce" ,r-ggforce)
+       ("r-ggplot2" ,r-ggplot2)
        ("r-ggstance" ,r-ggstance)
        ("r-magrittr" ,r-magrittr)
        ("r-mosaiccore" ,r-mosaiccore)
@@ -7234,14 +7232,14 @@ used to teach mathematics, statistics, computation and modeling.")
 (define-public r-raster
   (package
     (name "r-raster")
-    (version "3.0-7")
+    (version "3.0-12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "raster" version))
        (sha256
         (base32
-         "0faxv71hlxkblvbi3ps1vfzm3wwi0brwzmpsr5114bddcqyiqkvn"))))
+         "0rrbsigkqxsdic8fly6nrsc79zsliwvr1x2b4xqpl9d34vr50dvg"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -8243,14 +8241,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.4.3.01")
+    (version "1.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "16v5j31516nbqnj2zhgqvyp5yxd4zcs5zi0aspa5plr2qikvrkmg"))))
+         "0l1qj6x834fmcvqbj807p7yz7462df925vw91xvg50faqm19d41x"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -8401,13 +8399,13 @@ detection, parallelism through BLAS and parallel user templates.")
 (define-public r-sjstats
   (package
     (name "r-sjstats")
-    (version "0.17.8")
+    (version "0.17.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjstats" version))
        (sha256
-        (base32 "0gagqbcmimlvxhpjkmd3s17mbrz5n937qksca1hvm6kj4rk37hzb"))))
+        (base32 "0938ac6ixvkif07azd2msa8g3qnn9rabj6jg17almbysl83kg4nm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayestestr" ,r-bayestestr)
@@ -8444,14 +8442,14 @@ models.")
 (define-public r-glmmtmb
   (package
     (name "r-glmmtmb")
-    (version "0.2.3")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glmmTMB" version))
        (sha256
         (base32
-         "035hkywa37bz555fv6znxd4hfcs5w884365wfnwk4jx5vann4vvb"))))
+         "1md4yw4kbng953rz1n9g1v2xffk3cxx1qmp0kvbdayg1s82l1rgx"))))
     (properties `((upstream-name . "glmmTMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8476,14 +8474,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "01kqvky1ndd1q64rzmqh5yfzz36ci8yhy4w16gjnw4c257ikhvd8"))))
+         "1l0kqw793d8fnk0745fllmqwjwnj9srvqzv4baq5s05ls1gbi2mw"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8501,14 +8499,14 @@ ROPE percentage and pd).")
 (define-public r-performance
   (package
     (name "r-performance")
-    (version "0.4.3")
+    (version "0.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "performance" version))
        (sha256
         (base32
-         "1164585ywbnrcy7an57kifh2gdb6g08z9pxw75ywqdcfyd51i3dz"))))
+         "18h9y66cpsb3k6xnaya87vnpv2s3chf4bzsc4ym3n5sxhh41j7la"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bayestestr" ,r-bayestestr)
@@ -8528,22 +8526,19 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "0.14.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "1djz82xww86h8f33m2vm40lliicppgyhm6hyn3h6rzrqjrlrsmdw"))))
+         "07pvs18vlybp96zz1wjr7cwiwi1cvjwkb9ahxzq0vd6adnd6ya59"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-insight" ,r-insight)
-       ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
-       ("r-purrr" ,r-purrr)
-       ("r-sjlabelled" ,r-sjlabelled)
-       ("r-sjmisc" ,r-sjmisc)))
+       ("r-sjlabelled" ,r-sjlabelled)))
     (home-page "https://github.com/strengejacke/ggeffects")
     (synopsis "Create tidy data frames of marginal effects for ggplot")
     (description
@@ -8776,14 +8771,14 @@ more information about packages, and where they were installed from.")
 (define-public r-remotes
   (package
     (name "r-remotes")
-    (version "2.1.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "remotes" version))
        (sha256
         (base32
-         "19v8dmnk9l4i9m64p7zgmj7y1vhnnwhi5kyn0k5d034zzkvchi49"))))
+         "12qinl7jv54f2524ri13gcrv6d523rg1harpi500j676zi30fnaf"))))
     (build-system r-build-system)
     (home-page "https://github.com/r-lib/remotes#readme")
     (synopsis "R package installation from remote repositories")
@@ -8900,17 +8895,18 @@ ways.")
 (define-public r-summarytools
   (package
     (name "r-summarytools")
-    (version "0.9.4")
+    (version "0.9.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "summarytools" version))
        (sha256
         (base32
-         "1n695baz56mg4f13xjjadfq0xalw5xsn6xicil0yap5hgi8fsr3a"))))
+         "0iv5237478y2ggbqln3cppm0crnqk3myrkf6ydkhwsd1z5q538pd"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-checkmate" ,r-checkmate)
+     `(("r-base64enc" ,r-base64enc)
+       ("r-checkmate" ,r-checkmate)
        ("r-dplyr" ,r-dplyr)
        ("r-htmltools" ,r-htmltools)
        ("r-lubridate" ,r-lubridate)
@@ -8919,7 +8915,6 @@ ways.")
        ("r-pander" ,r-pander)
        ("r-pryr" ,r-pryr)
        ("r-rapportools" ,r-rapportools)
-       ("r-rcurl" ,r-rcurl)
        ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)))
     (home-page "https://github.com/dcomtois/summarytools")
@@ -9164,14 +9159,14 @@ al. (2016)).")
 (define-public r-weights
   (package
     (name "r-weights")
-    (version "1.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "weights" version))
        (sha256
         (base32
-         "0186bfpkhxngrshac6bpg37alp6slwhwd43inrm8hqg0vhpfgc4c"))))
+         "1ka2kvzg464vn80qziqy4mrciy9wwd3jfasgq0d33wbiblhmxkj5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-gdata" ,r-gdata)
@@ -9310,14 +9305,14 @@ Bioconductor packages.")
 (define-public r-rgl
   (package
     (name "r-rgl")
-    (version "0.100.30")
+    (version "0.100.50")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgl" version))
        (sha256
         (base32
-         "0rzqzskcwf2ah4yr62x5rjwf7yh90d43h39gk7jmfc5lc08zaxc5"))))
+         "165p932ml7dpjkm41zc47p5cdxar69il0m5yvg0avi8q01vr17ay"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -9393,13 +9388,13 @@ isosurfaces.")
 (define-public r-ks
   (package
     (name "r-ks")
-    (version "1.11.6")
+    (version "1.11.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ks" version))
        (sha256
-        (base32 "0hcccjfqnzdxkmnfzq8c5a7yhc138azwyl7rp29d1vl1jawwrwfq"))))
+        (base32 "1f6jvxy0hmngyvnvrknzbmhl42njk0vqyycvydm4qnp8cqirqvba"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-fnn" ,r-fnn)
@@ -9753,14 +9748,14 @@ Processing.")
 (define-public r-waveslim
   (package
     (name "r-waveslim")
-    (version "1.7.5.1")
+    (version "1.7.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "waveslim" version))
        (sha256
         (base32
-         "0mky0nb4xxp8rybp87mxw2f1q6k400wpxv01zr4injv7ja6028xk"))))
+         "166ai4q3mlh3v338si952z7fbgph80h0l4ws6bna8ig5jx81rnmz"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -10213,14 +10208,14 @@ Touzet and Varre (2007).")
 (define-public r-rnifti
   (package
     (name "r-rnifti")
-    (version "1.0.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RNifti" version))
        (sha256
         (base32
-         "0hfid40pgfi1ykqka8y3v0m7h0iyd6fbvycvqlad3ibmbg621f0w"))))
+         "1z8ninp3aq18w0slcfn8r2fp48cdz8l0k0namsrnvgyp8lzcpqpn"))))
     (properties `((upstream-name . "RNifti")))
     (build-system r-build-system)
     (propagated-inputs `(("r-rcpp" ,r-rcpp)))
@@ -11176,13 +11171,13 @@ Differences with other sparse matrix packages are:
 (define-public r-fields
   (package
     (name "r-fields")
-    (version "10.0")
+    (version "10.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fields" version))
        (sha256
-        (base32 "173zm5vr236ydiq0v27qy0l3x7h9fc7jly38iakg77j26i0a01il"))))
+        (base32 "12k97vfjlz5h8vynirnvik1nyj1iw25n8xl7awmx9mpd6wvgy2s9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-maps" ,r-maps)
@@ -11342,14 +11337,14 @@ dynamical correlation and dynamical covariance.")
 (define-public r-genenet
   (package
     (name "r-genenet")
-    (version "1.2.13")
+    (version "1.2.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "GeneNet" version))
        (sha256
         (base32
-         "0w52apk0nnr8nsskf26ff7ana8xiksr8wqmkjxzwhzgg7fncm61p"))))
+         "0cdhrj15rz0w0pyw3r8mikrzsdh95y5i1c0pa3cn0c2bjnjx3x3n"))))
     (properties `((upstream-name . "GeneNet")))
     (build-system r-build-system)
     (propagated-inputs
@@ -11391,14 +11386,14 @@ library.")
 (define-public r-protviz
   (package
     (name "r-protviz")
-    (version "0.5.1")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "protViz" version))
        (sha256
         (base32
-         "0cznzm1ijlq33yd5wsa61prav77y2vi698w0n2fx1xcv504c4bjv"))))
+         "165bh2m6rrcmr0pc2drj6hdg6xfx8k02lznxzj1fmsswsrlfhn3v"))))
     (properties `((upstream-name . "protViz")))
     (build-system r-build-system)
     (propagated-inputs `(("r-rcpp" ,r-rcpp)))
@@ -11441,14 +11436,14 @@ JASA, 94:496-509.")
 (define-public r-etm
   (package
     (name "r-etm")
-    (version "1.0.5")
+    (version "1.0.5.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "etm" version))
        (sha256
         (base32
-         "1yivbq8y0ijcl1m4nir4q9hp4pi6iphwxgjprygsdf7vp98wq677"))))
+         "0m41pm277sd50pharigcqzr1a2g92wnmdf6fcab6fx16ia2fzrm7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)
@@ -11578,14 +11573,14 @@ lasso, adaptive lasso and Ridge regression based on cross-validation.")
 (define-public r-mcmc
   (package
     (name "r-mcmc")
-    (version "0.9-6")
+    (version "0.9-6.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mcmc" version))
        (sha256
         (base32
-         "1fc6a6asn53lx7x7pnlb5mb716nv4pcmbp99f1i30y4hzygihfj4"))))
+         "1i1nhdapyijvm58zx38q28zk01ndmi6smjivxk5xs2cx9b6v2av9"))))
     (build-system r-build-system)
     (home-page "http://www.stat.umn.edu/geyer/mcmc/")
     (synopsis "Markov chain Monte Carlo")
@@ -11709,14 +11704,14 @@ machine or distributed on a compute cluster.")
 (define-public r-rsvd
   (package
     (name "r-rsvd")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rsvd" version))
        (sha256
         (base32
-         "0fia77y5fxnhwkcxlgp98ygb8fdfraky75x80hkf7kvvpwc5rzn8"))))
+         "1fvrw46fl5xb2akaa4mp8nja4h7nn4bdhnjdrk22fsdfqc7hwmhk"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-matrix" ,r-matrix)))
@@ -11816,20 +11811,17 @@ chosen parallel environment and associated foreach backend.")
 (define-public r-blockmodeling
   (package
     (name "r-blockmodeling")
-    (version "0.3.4")
+    (version "0.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "blockmodeling" version))
        (sha256
         (base32
-         "11v9903y9dwlzaqp8sx0fsibcg82phvappddy37r8lnxd4vchsd2"))))
+         "12paf76l3wlxad14bkxn37lw9rg6ka473m86wlcf3yhriw8kbaiz"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-doparallel" ,r-doparallel)
-       ("r-dorng" ,r-dorng)
-       ("r-foreach" ,r-foreach)
-       ("r-matrix" ,r-matrix)))
+     `(("r-matrix" ,r-matrix)))
     (native-inputs `(("gfortran" ,gfortran)))
     (home-page "https://cran.r-project.org/web/packages/blockmodeling")
     (synopsis "Generalized and classical blockmodeling of valued networks")
@@ -12068,13 +12060,13 @@ such software by imputing dropout events.")
 (define-public r-gamlss-dist
   (package
     (name "r-gamlss-dist")
-    (version "5.1-5")
+    (version "5.1-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss.dist" version))
        (sha256
-        (base32 "1rl7hzdg5xpvaq3yyzwxhsaqzzs0qidi3ibv454fisijgv8l4vqw"))))
+        (base32 "1p904x0b07z4amaqdn2xhs7qzbq8lisr6lqc844s3pkxzmny7w1z"))))
     (properties `((upstream-name . "gamlss.dist")))
     (build-system r-build-system)
     (propagated-inputs `(("r-mass" ,r-mass)))
@@ -12495,14 +12487,14 @@ compatible with @code{rzmq} are also provided.")
 (define-public r-repr
   (package
     (name "r-repr")
-    (version "1.0.2")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "repr" version))
        (sha256
         (base32
-         "0wn9fdddqjgn0bdfl75x89rcxahbgqs324bhg0pfq6va5q2mlbbw"))))
+         "15jz780w4nd9qjd1g3gq8f5lkh60p2v3ig3hm5kl1rg3z4cf0gvl"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -12690,14 +12682,14 @@ return the match results in tidy data frames.")
 (define-public r-picante
   (package
     (name "r-picante")
-    (version "1.8")
+    (version "1.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "picante" version))
        (sha256
         (base32
-         "1bcq2j7fs89c2jib68qq6la67rxyg9raryf162mwvjakpf6k19l1"))))
+         "1b16zm8zjjsl181b8krkdcrbcw347kf772c4w7y5332qmfi7jhz0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ape" ,r-ape)
@@ -13064,16 +13056,19 @@ univariate class intervals for mapping or other graphics purposes.")
 (define-public r-spdata
   (package
     (name "r-spdata")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spData" version))
        (sha256
         (base32
-         "190msrrpn226x27pcnck4ac34f9k4xcn26cyz2apdri2nzkr6zbw"))))
+         "1v66qkvsx77hvv5c78v760yp0hknf7xzcjir2ri3ha456mz79yl5"))))
     (properties `((upstream-name . "spData")))
     (build-system r-build-system)
+    (propagated-inputs
+     `(("r-raster" ,r-raster)
+       ("r-sp" ,r-sp)))
     (home-page "https://github.com/Nowosad/spData")
     (synopsis "Datasets for spatial analysis")
     (description
@@ -13114,14 +13109,14 @@ sampling.")
 (define-public r-deldir
   (package
     (name "r-deldir")
-    (version "0.1-23")
+    (version "0.1-25")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "deldir" version))
        (sha256
         (base32
-         "0790dwxb2mz1ffz8gd5vwdr0if2q76dzy3vab5rsykf9kz72n4g0"))))
+         "0kdglv8rc1pb4ilcid4xc9wpv5kkj2y6x6wg7919k3hya7mz58ph"))))
     (build-system r-build-system)
     (native-inputs `(("gfortran" ,gfortran)))
     (home-page "https://cran.r-project.org/web/packages/deldir")
@@ -13138,14 +13133,14 @@ tessellation.")
 (define-public r-sf
   (package
     (name "r-sf")
-    (version "0.8-0")
+    (version "0.8-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sf" version))
        (sha256
         (base32
-         "05dyq0vcz2f1fl03hk3v1a4nz4s84yyqw4rc9w9cwfq71gvm9qwf"))))
+         "17wyv74m1ppc3s5jdv60r74jj23nidxpzl46vjhfclfhnpvm7sx9"))))
     (build-system r-build-system)
     (inputs
      `(("gdal" ,gdal)
@@ -13271,14 +13266,14 @@ minimum spanning tree and network, and median-joining networks.")
 (define-public r-rmetasim
   (package
     (name "r-rmetasim")
-    (version "3.1.7")
+    (version "3.1.14")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rmetasim" version))
        (sha256
         (base32
-         "0sz4mdprdi6sgkfwfdvh2hr9nxiwq17sw0vggq3cvs7lzb0i6m9r"))))
+         "0rdkhfgyr97r2d1kd9g8ipb2pn563qxm1y4m9z678q0kqan2ddl0"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ade4" ,r-ade4)
@@ -14274,14 +14269,14 @@ databases, including ENA, PDB or ChEMBL are also accessible.")
 (define-public r-ggraph
   (package
     (name "r-ggraph")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggraph" version))
        (sha256
         (base32
-         "0qj7w3af0pgmd9mil6y571jikfkln7b8csvzg6b08spwbglfy1s3"))))
+         "0q2yqsb981a2arf9j530kqs61vw38ixyxbhb6yvv7skgbck02r6y"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -14872,14 +14867,14 @@ provides tools to compute this metric.")
 (define-public r-lintr
   (package
     (name "r-lintr")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "lintr" version))
        (sha256
         (base32
-         "09gbci4v5n4gsfzminly8332fw7faxdi1kkyvpa10dydx02sjcwb"))))
+         "14yfh641afg6griaadbdciyr3k94fl55s055qwzghgk5gdsj61zy"))))
     (properties `((upstream-name . "lintr")))
     (build-system r-build-system)
     (propagated-inputs
@@ -14892,7 +14887,6 @@ provides tools to compute this metric.")
        ("r-knitr" ,r-knitr)
        ("r-rex" ,r-rex)
        ("r-rstudioapi" ,r-rstudioapi)
-       ("r-stringdist" ,r-stringdist)
        ("r-testthat" ,r-testthat)
        ("r-xml2" ,r-xml2)
        ("r-xmlparsedata" ,r-xmlparsedata)))
@@ -14937,20 +14931,21 @@ batch correction, and data correction.")
 (define-public r-styler
   (package
     (name "r-styler")
-    (version "1.2.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "styler" version))
        (sha256
         (base32
-         "0rdbz60x8bymis6r6188ia1y0ip3nhf5y363i4cmakr618irjab9"))))
+         "14vfw1w22b9kbbgz72dcg814ycjvrd91ziva42jmmzqbspfxjvmw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
        ("r-cli" ,r-cli)
        ("r-magrittr" ,r-magrittr)
        ("r-purrr" ,r-purrr)
+       ("r-r-cache" ,r-r-cache)
        ("r-rematch2" ,r-rematch2)
        ("r-rlang" ,r-rlang)
        ("r-rprojroot" ,r-rprojroot)
@@ -15142,14 +15137,14 @@ engine (Salmon et al., 2011) as provided by the package @code{sitmo}.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "0.4.9")
+    (version "1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "1zviaf7530v8w996lbma0vplabrapgwldi7h70pr0439sxaqd421"))))
+         "0fcyk1zhpw5yyppyw45rplx8603mrbp4vxq8398h2lswgy1nmls4"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs `(("r-ggplot2" ,r-ggplot2)))
@@ -15522,14 +15517,14 @@ computed using the L1 (Manhattan, taxicab) metric.")
 (define-public r-leiden
   (package
     (name "r-leiden")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "leiden" version))
        (sha256
         (base32
-         "0kf6fxqf5l5vilm9g7vspc18daw84cwhpafs5szb1skwd6vrfdzw"))))
+         "1hh6bmbz6cpqwl4i94gxylgv9x92zbqdg81r8r4ymfy8c70f3df2"))))
     (properties `((upstream-name . "leiden")))
     (build-system r-build-system)
     (propagated-inputs
@@ -15842,14 +15837,14 @@ cell RNA-seq experiments.")
 (define-public r-assertr
   (package
     (name "r-assertr")
-    (version "2.6")
+    (version "2.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "assertr" version))
        (sha256
         (base32
-         "0g4ii6vhp0155a29ljhs64a09x0nzy5ybvwwchhk4mkcgsvnvfkj"))))
+         "1x868pd4dac1c7b1q5390wqh2f6s50km8nqcpim3nxcj2l4qkqdb"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -15869,14 +15864,14 @@ in pipelines.")
 (define-public r-parameters
   (package
     (name "r-parameters")
-    (version "0.4.1")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "parameters" version))
        (sha256
         (base32
-         "0xkdn1079sr6kgyhc1zmn9imca4bghnxs3f91h0z7vkzjj73qdbi"))))
+         "19cblrq079svp5j3wgikw5fsdbsp1w0f2llm7kcf1rg5w1aagjr7"))))
     (properties `((upstream-name . "parameters")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16147,14 +16142,14 @@ structural data.")
 (define-public r-bios2cor
   (package
     (name "r-bios2cor")
-    (version "2.0")
+    (version "2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Bios2cor" version))
        (sha256
         (base32
-         "1rrz0vs6wbkwys3l5jv1rdnlhyb4r1q9pv7jlnmsx6c1b4f4vz5n"))))
+         "04wk1cjrrxhpv1kdhd67r1qvjv268xxi0z0r105wy912110z9m6x"))))
     (properties `((upstream-name . "Bios2cor")))
     (build-system r-build-system)
     (propagated-inputs
@@ -16401,14 +16396,14 @@ simulation.")
 (define-public r-abcrlda
   (package
     (name "r-abcrlda")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "abcrlda" version))
        (sha256
         (base32
-         "0j29ifsvmxfx2g6v4bpbb4s6miwfpf4vlkpbgj6f2q078s4clc85"))))
+         "0zjdrbg3zx0znqnh0dvmifs9c12b8vjhbaf3nbwab9xh25nsmg75"))))
     (properties `((upstream-name . "abcrlda")))
     (build-system r-build-system)
     (home-page "https://ieeexplore.ieee.org/document/8720003/")
@@ -16559,14 +16554,14 @@ package.")
 (define-public r-showtext
   (package
     (name "r-showtext")
-    (version "0.7")
+    (version "0.7-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "showtext" version))
        (sha256
         (base32
-         "1ihgqzfia36b0n9aa41p1w98wxxvs1lxh1zz0570hbfqmph1sk73"))))
+         "0a5gg72bfrc7wm0phj1aflj1wc08kfi81ac32na6ya9s2ivyimw5"))))
     (properties `((upstream-name . "showtext")))
     (build-system r-build-system)
     (inputs
@@ -16771,7 +16766,7 @@ experienced.")
     (inputs
      `(("tcl" ,tcl)
        ("tk" ,tk)))
-    (home-page "http://www.sciviews.org/SciViews-R")
+    (home-page "https://www.sciviews.org/SciViews-R")
     (synopsis "Tcl/Tk additions")
     (description
      "This package provides a series of additional Tcl commands and Tk widgets
@@ -16980,14 +16975,14 @@ on Linear Recurrences Modulo 2'', ACM Transactions on Mathematical Software.")
 (define-public r-randtoolbox
   (package
     (name "r-randtoolbox")
-    (version "1.30.0")
+    (version "1.30.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "randtoolbox" version))
        (sha256
         (base32
-         "141p13ajgzmb2s89rlac7zrra92mi1izvpfrngb4kqzlf3igdsqd"))))
+         "0qg20ar6qns858jdzqhmfq7yji81czhr6cim257958gqpj66sn95"))))
     (properties `((upstream-name . "randtoolbox")))
     (build-system r-build-system)
     (propagated-inputs
@@ -17038,14 +17033,14 @@ Latin Hypercube Samples.")
 (define-public r-acebayes
   (package
     (name "r-acebayes")
-    (version "1.8")
+    (version "1.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "acebayes" version))
        (sha256
         (base32
-         "1xm6bw0qm2vlcrk274x0bawzb2lnacb1wsmzba5mg3i75a55pqln"))))
+         "1imfwm1vpbb24vfmfn1nljhmaz8429mwjihw34892p387s8h7xz2"))))
     (properties `((upstream-name . "acebayes")))
     (build-system r-build-system)
     (propagated-inputs
@@ -17145,14 +17140,14 @@ models.")
 (define-public r-gamlss
   (package
     (name "r-gamlss")
-    (version "5.1-5")
+    (version "5.1-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss" version))
        (sha256
         (base32
-         "0gcngfck0dk2rhjg0z1fnc61dqs0s049jy2rkywaf57531s2k8bc"))))
+         "16b7ick1khvldbvfmmpw9cjs1vznnrisvifq7717fxzd8c9s5jdr"))))
     (properties `((upstream-name . "gamlss")))
     (build-system r-build-system)
     (propagated-inputs
@@ -17962,14 +17957,14 @@ poverty measures.  It provides both empirical and theoretical Lorenz curves.")
 (define-public r-actfrag
   (package
     (name "r-actfrag")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ActFrag" version))
        (sha256
         (base32
-         "06l5a679j6289008ls57v420mnzpq9a4ln7svi5bh0vpvws7sr9d"))))
+         "08r3gwjz4fkyy85dxqix0ffm5xyq45032qv3snnzxnlqxslxbqn1"))))
     (properties `((upstream-name . "ActFrag")))
     (build-system r-build-system)
     (propagated-inputs
@@ -17989,14 +17984,14 @@ actigraphy-measured activity counts data.")
 (define-public r-fda
   (package
     (name "r-fda")
-    (version "2.4.8")
+    (version "2.4.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fda" version))
        (sha256
         (base32
-         "0n39rzbhg1hipzn51rzmbchn2358qgapg08iv7lmiqj5y7i9qns2"))))
+         "0g50kj1dx7zarjv0lgwyzd2c7bv6di7nkndmywday5vjywgl8m7a"))))
     (properties `((upstream-name . "fda")))
     (build-system r-build-system)
     (propagated-inputs
@@ -18013,19 +18008,18 @@ examples.")
 (define-public r-actigraphy
   (package
     (name "r-actigraphy")
-    (version "1.3.2")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Actigraphy" version))
        (sha256
         (base32
-         "0y0ccmxhdfhdmi4k6pbfvnqknkqbgvfsf2qf7z7rc4xpfgym6574"))))
+         "0bpmvszzv5fm72nar3wgnmfl5am7znqfajmlbv38ihkbi7jbwk20"))))
     (properties `((upstream-name . "Actigraphy")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-fda" ,r-fda)
-       ("r-sdmtools" ,r-sdmtools)))
+     `(("r-fda" ,r-fda)))
     (home-page "https://cran.r-project.org/web/packages/Actigraphy/")
     (synopsis "Actigraphy data analysis")
     (description
@@ -18305,14 +18299,14 @@ number embedded in the file rather than the file extension.")
 (define-public r-imager
   (package
     (name "r-imager")
-    (version "0.41.2")
+    (version "0.42.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "imager" version))
        (sha256
         (base32
-         "19fqgjhg04garbipx20g72h9dd6k0jj4ac48nby6km4h665vrs4v"))))
+         "1d7a49lcna77wyfjf5q1b89jck3p3vnysnkgz4drb0qkpy6hz76b"))))
     (properties `((upstream-name . "imager")))
     (build-system r-build-system)
     (inputs
@@ -18321,12 +18315,10 @@ number embedded in the file rather than the file extension.")
        ("libx11" ,libx11)
        ("zlib" ,zlib)))
     (propagated-inputs
-     `(("r-cairo" ,r-cairo)
-       ("r-downloader" ,r-downloader)
+     `(("r-downloader" ,r-downloader)
        ("r-igraph" ,r-igraph)
        ("r-jpeg" ,r-jpeg)
        ("r-magrittr" ,r-magrittr)
-       ("r-plyr" ,r-plyr)
        ("r-png" ,r-png)
        ("r-purrr" ,r-purrr)
        ("r-rcpp" ,r-rcpp)
@@ -18478,18 +18470,19 @@ used in outliers detection.")
 (define-public r-tolerance
   (package
     (name "r-tolerance")
-    (version "1.3.0")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tolerance" version))
        (sha256
         (base32
-         "17qh4ad1f3fbcpwlxxqh8qr9bnwjcl4yxk0l3fkbr6b2l4rc5p86"))))
+         "001snzr2ipag3zprynydlbi9prkjzrllc054qh7m0qwkb3r19jjd"))))
     (properties `((upstream-name . "tolerance")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-rgl" ,r-rgl)))
+     `(("r-mass" ,r-mass)
+       ("r-rgl" ,r-rgl)))
     (home-page "https://cran.r-project.org/web/packages/tolerance/")
     (synopsis "Statistical tolerance intervals and regions")
     (description
@@ -18558,14 +18551,14 @@ cluster stability.")
 (define-public r-biclust
   (package
     (name "r-biclust")
-    (version "2.0.1")
+    (version "2.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "biclust" version))
        (sha256
         (base32
-         "1y5n6wfa1lx88ck3x09rcg0dh3pw89225h85hmq2la1s1fpa48i0"))))
+         "1pk7mvwlg4hkc4cn4w6wr2c192qx03d1xfwlzclk5bw1nmcg483b"))))
     (properties `((upstream-name . "biclust")))
     (build-system r-build-system)
     (propagated-inputs
@@ -19259,3 +19252,989 @@ are followed and which ones are not) from one package and use it to check
 another.  This makes it easier to find and correct the most important problems
 first.")
     (license license:gpl3)))
+
+(define-public r-fracdiff
+  (package
+    (name "r-fracdiff")
+    (version "1.5-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "fracdiff" version))
+       (sha256
+        (base32
+         "1dhfjlhr9sb38qgpsx0sm73l9lgc13d0fk32l7fmjfnalhr3n45q"))))
+    (properties `((upstream-name . "fracdiff")))
+    (build-system r-build-system)
+    (home-page "https://github.com/mmaechler/fracdiff")
+    (synopsis
+     "Fractionally differenced ARIMA aka ARFIMA(P,d,q) models")
+    (description
+     "This package provides tools for the maximum likelihood estimation of the
+parameters of a fractionally differenced ARIMA(p,d,q) model (Haslett and
+Raftery, Appl.Statistics, 1989); it includes inference and basic methods.")
+    (license license:gpl2+)))
+
+(define-public r-forecast
+  (package
+    (name "r-forecast")
+    (version "8.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "forecast" version))
+       (sha256
+        (base32
+         "0ayidhnk9cxav2qi83jrvqlg2jh4zlf4lki4xw48gdqsmjvih9x1"))))
+    (properties `((upstream-name . "forecast")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-colorspace" ,r-colorspace)
+       ("r-fracdiff" ,r-fracdiff)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-lmtest" ,r-lmtest)
+       ("r-magrittr" ,r-magrittr)
+       ("r-nnet" ,r-nnet)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-timedate" ,r-timedate)
+       ("r-tseries" ,r-tseries)
+       ("r-urca" ,r-urca)
+       ("r-zoo" ,r-zoo)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))           ; needed for vignettes
+    (home-page "https://pkg.robjhyndman.com/forecast/")
+    (synopsis "Forecasting functions for time series and linear models")
+    (description
+     "This package provides methods and tools for displaying and analysing
+univariate time series forecasts including exponential smoothing via state
+space models and automatic ARIMA modelling.")
+    (license license:gpl3)))
+
+(define-public r-xmisc
+  (package
+    (name "r-xmisc")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Xmisc" version))
+       (sha256
+        (base32
+         "11gwlcyxhz1p50m68cnqrxmisdk99v8vrsbvyr7k67f0kvsznzs1"))))
+    (properties `((upstream-name . "Xmisc")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=Xmisc")
+    (synopsis
+     "Xiaobei's miscellaneous classes and functions")
+    (description
+     "This package provides Xiaobei's miscellaneous classes and functions,
+which are useful when developing R packages for @dfn{object oriented
+programming} (OOP) using R Reference Class.")
+    (license license:gpl2+)))
+
+(define-public r-proxyc
+  (package
+    (name "r-proxyc")
+    (version "0.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "proxyC" version))
+       (sha256
+        (base32
+         "159bc42x4shm6n3rh9fc8ziv3ivq0ipmpbasrh279hhn1prc8gg6"))))
+    (properties `((upstream-name . "proxyC")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rcppparallel" ,r-rcppparallel)))
+    (home-page "https://cran.r-project.org/package=proxyC")
+    (synopsis "Compute proximity in large sparse matrices")
+    (description
+     "This package provides efficient tools to compute the proximity between
+rows or columns of large matrices.  Functions are optimised for large sparse
+matrices using the Armadillo and Intel TBB libraries.  Among several built-in
+similarity/distance measures, computation of correlation, cosine similarity
+and Euclidean distance is particularly fast.")
+    (license license:gpl3)))
+
+(define-public r-isocodes
+  (package
+    (name "r-isocodes")
+    (version "2019.12.22")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ISOcodes" version))
+       (sha256
+        (base32
+         "1k2f2258bwzs0b3nxma9kcw395qkljvk514a7047rx4dn0iwd874"))))
+    (properties `((upstream-name . "ISOcodes")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=ISOcodes")
+    (synopsis "Selected ISO codes")
+    (description
+     "This package provides ISO language, territory, currency, script and
+character codes.  It provides ISO 639 language codes, ISO 3166 territory
+codes, ISO 4217 currency codes, ISO 15924 script codes, and the ISO 8859
+character codes as well as the UN M.49 area codes.")
+    (license license:gpl2)))
+
+(define-public r-stopwords
+  (package
+    (name "r-stopwords")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "stopwords" version))
+       (sha256
+        (base32
+         "1nmi0bpd0c238g5b8ch1v034m5ng9llhs519cgxdrj3sh9fplwlv"))))
+    (properties `((upstream-name . "stopwords")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-isocodes" ,r-isocodes)))
+    (home-page "https://github.com/quanteda/stopwords")
+    (synopsis "Multilingual stopword lists")
+    (description
+     "This package provides multiple sources of stopwords, for use in text
+analysis and natural language processing.")
+    (license license:expat)))
+
+(define-public r-spacyr
+  (package
+    (name "r-spacyr")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "spacyr" version))
+       (sha256
+        (base32
+         "1xsiz6zx89vs6ykrkkp011d8fz4ksdgnf5nyaq5ynjr6zv865vks"))))
+    (properties `((upstream-name . "spacyr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-reticulate" ,r-reticulate)))
+    (home-page "https://spacyr.quanteda.io")
+    (synopsis "R wrapper for the spaCy NLP library")
+    (description
+     "This package provides an R wrapper to the Python @dfn{natural language
+processing} (NLP) library @code{spaCy}, from @url{http://spacy.io}.")
+    (license license:gpl3)))
+
+(define-public r-snowballc
+  (package
+    (name "r-snowballc")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "SnowballC" version))
+       (sha256
+        (base32
+         "0b7pqdavf5jbf8si4ybnii5fff39p3b1rb5rym05j8s48hs7sqb1"))))
+    (properties `((upstream-name . "SnowballC")))
+    (build-system r-build-system)
+    (home-page "https://r-forge.r-project.org/projects/r-temis/")
+    (synopsis "Snowball stemmers based on the C libstemmer UTF-8 library")
+    (description
+     "This package provides an R interface to the C @code{libstemmer} library
+that implements Porter's word stemming algorithm for collapsing words to a
+common root to aid comparison of vocabulary.  Currently supported languages
+are Danish, Dutch, English, Finnish, French, German, Hungarian, Italian,
+Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
+    (license license:bsd-3)))
+
+(define-public r-quanteda
+  (package
+    (name "r-quanteda")
+    (version "1.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "quanteda" version))
+       (sha256
+        (base32
+         "0iv25rpx5cl9ansazjs0qb97pniajrxf4mqsnb5q98y2hil9ipd3"))))
+    (properties `((upstream-name . "quanteda")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-extrafont" ,r-extrafont)
+       ("r-fastmatch" ,r-fastmatch)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggrepel" ,r-ggrepel)
+       ("r-lubridate" ,r-lubridate)
+       ("r-magrittr" ,r-magrittr)
+       ("r-matrix" ,r-matrix)
+       ("r-network" ,r-network)
+       ("r-proxyc" ,r-proxyc)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rcppparallel" ,r-rcppparallel)
+       ("r-rspectra" ,r-rspectra)
+       ("r-sna" ,r-sna)
+       ("r-snowballc" ,r-snowballc)
+       ("r-spacyr" ,r-spacyr)
+       ("r-stopwords" ,r-stopwords)
+       ("r-stringi" ,r-stringi)
+       ("r-xml2" ,r-xml2)
+       ("r-yaml" ,r-yaml)))
+    (home-page "https://quanteda.io")
+    (synopsis "Quantitative analysis of textual data")
+    (description
+     "This package provides a fast, flexible, and comprehensive framework for
+quantitative text analysis in R.  It provides functionality for corpus
+management, creating and manipulating tokens and ngrams, exploring keywords in
+context, forming and manipulating sparse matrices of documents by features and
+feature co-occurrences, analyzing keywords, computing feature similarities and
+distances, applying content dictionaries, applying supervised and unsupervised
+machine learning, visually representing text and text analyses, and more.")
+    (license license:gpl3)))
+
+(define-public r-topicmodels
+  (package
+    (name "r-topicmodels")
+    (version "0.2-9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "topicmodels" version))
+       (sha256
+        (base32
+         "1757r5x8bsl4dk106xg6481mvdkdz9vwg87n7rpbvdkavsvhyxs0"))))
+    (properties `((upstream-name . "topicmodels")))
+    (build-system r-build-system)
+    (native-inputs
+     `(("gsl" ,gsl)))
+    (propagated-inputs
+     `(("r-modeltools" ,r-modeltools)
+       ("r-slam" ,r-slam)
+       ("r-tm" ,r-tm)))
+    (home-page "https://cran.r-project.org/package=topicmodels")
+    (synopsis "Topic models")
+    (description
+     "This package provides an interface to the C code for @dfn{Latent
+Dirichlet Allocation} (LDA) models and @dfn{Correlated Topics Models} (CTM) by
+David M. Blei and co-authors and the C++ code for fitting LDA models using
+Gibbs sampling by Xuan-Hieu Phan and co-authors.")
+    (license license:gpl2)))
+
+(define-public r-stm
+  (package
+    (name "r-stm")
+    (version "1.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "stm" version))
+       (sha256
+        (base32
+         "1yyfxaxqc6yq0yq68zhdnhpwpvsyp71dlmivn7zxixfmp932s6cn"))))
+    (properties `((upstream-name . "stm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-data-table" ,r-data-table)
+       ("r-glmnet" ,r-glmnet)
+       ("r-lda" ,r-lda)
+       ("r-matrix" ,r-matrix)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-quadprog" ,r-quadprog)
+       ("r-quanteda" ,r-quanteda)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-slam" ,r-slam)
+       ("r-stringr" ,r-stringr)))
+    (home-page "http://www.structuraltopicmodel.com/")
+    (synopsis "Estimation of the Structural Topic Model")
+    (description
+     "The @dfn{Structural Topic Model} (STM) allows researchers to estimate
+topic models with document-level covariates.  The package also includes tools
+for model selection, visualization, and estimation of topic-covariate
+regressions.")
+    (license license:expat)))
+
+(define-public r-polycor
+  (package
+    (name "r-polycor")
+    (version "0.7-10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "polycor" version))
+       (sha256
+        (base32
+         "0wzwzklflbhi8sv9m7ijwr16v9zmkk0j0v4pbcpf32f8lbn3psna"))))
+    (properties `((upstream-name . "polycor")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrix" ,r-matrix)
+       ("r-mvtnorm" ,r-mvtnorm)))
+    (home-page "https://r-forge.r-project.org/projects/polycor/")
+    (synopsis "Polychoric and polyserial correlations")
+    (description
+     "This package provides tools to compute polychoric and polyserial
+correlations by quick \"two-step\" methods or ML, optionally with standard
+errors; tetrachoric and biserial correlations are special cases.")
+    (license license:gpl2+)))
+
+(define-public r-msm
+  (package
+    (name "r-msm")
+    (version "1.6.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "msm" version))
+       (sha256
+        (base32
+         "1d32y8f0vb2dfv3999liigpns788j145nrvd1xpxb9i2lsg8mwgk"))))
+    (properties `((upstream-name . "msm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-expm" ,r-expm)
+       ("r-mvtnorm" ,r-mvtnorm)
+       ("r-survival" ,r-survival)))
+    (home-page "https://github.com/chjackson/msm")
+    (synopsis "Multi-state Markov and hidden Markov models in continuous time")
+    (description
+     "This package provides functions for fitting continuous-time Markov and
+hidden Markov multi-state models to longitudinal data.  It was designed for
+processes observed at arbitrary times in continuous time (panel data) but some
+other observation schemes are supported.  Both Markov transition rates and the
+hidden Markov output process can be modelled in terms of covariates, which may
+be constant or piecewise-constant in time.")
+    (license license:gpl2+)))
+
+(define-public r-ltm
+  (package
+    (name "r-ltm")
+    (version "1.1-1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "ltm" version))
+       (sha256
+        (base32
+         "1qrgzwx5l58qf5rfp1knxc84r0g943q5sdr3ky74zzwpnmrf2vf7"))))
+    (properties `((upstream-name . "ltm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-mass" ,r-mass)
+       ("r-msm" ,r-msm)
+       ("r-polycor" ,r-polycor)))
+    (home-page "https://github.com/drizopoulos/ltm")
+    (synopsis "Latent trait models under IRT")
+    (description
+     "This is a package supporting the analysis of multivariate dichotomous
+and polytomous data using latent trait models under the Item Response Theory
+approach.  It includes the Rasch, the Two-Parameter Logistic, the Birnbaum's
+Three-Parameter, the Graded Response, and the Generalized Partial Credit
+Models.")
+    (license license:gpl2+)))
+
+(define-public r-mi
+  (package
+    (name "r-mi")
+    (version "1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "mi" version))
+        (sha256
+          (base32
+            "1h47k5mpbvhid83277dvvj2di493bgzz9iarpyv3r30y219l7x1l"))))
+    (properties `((upstream-name . "mi")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-arm" ,r-arm)
+       ("r-matrix" ,r-matrix)))
+    (home-page "http://www.stat.columbia.edu/~gelman/")
+    (synopsis "Missing data imputation and model checking")
+    (description
+     "This package provides functions for data manipulation, imputing missing
+values in an approximate Bayesian framework, diagnostics of the models used to
+generate the imputations, confidence-building mechanisms to validate some of
+the assumptions of the imputation algorithm, and functions to analyze multiply
+imputed data sets with the appropriate degree of sampling uncertainty.")
+    (license license:gpl2+)))
+
+(define-public r-matrixcalc
+  (package
+    (name "r-matrixcalc")
+    (version "1.0-3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "matrixcalc" version))
+       (sha256
+        (base32
+         "1c4w9dhi5w98qj1wwh9bbpnfk39rhiwjbanalr8bi5nmxkpcmrhp"))))
+    (properties `((upstream-name . "matrixcalc")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/matrixcalc/")
+    (synopsis "Collection of functions for matrix calculations")
+    (description
+     "This package provides a collection of functions to support matrix
+calculations for probability, econometric and numerical analysis.  There are
+additional functions that are comparable to APL functions which are useful for
+actuarial models such as pension mathematics.")
+    (license license:gpl2+)))
+
+(define-public r-sem
+  (package
+    (name "r-sem")
+    (version "3.1-9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "sem" version))
+       (sha256
+        (base32
+         "1f9c6g6pfx66gd2pappcsqh484ah6a0x4z47hpd46rah0817hcsa"))))
+    (properties `((upstream-name . "sem")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-boot" ,r-boot)
+       ("r-mass" ,r-mass)
+       ("r-matrixcalc" ,r-matrixcalc)
+       ("r-mi" ,r-mi)))
+    (home-page "https://cran.r-project.org/package=sem")
+    (synopsis "Structural equation models")
+    (description
+     "This package provides functions for fitting general linear structural
+equation models (with observed and latent variables) using the RAM approach,
+and for fitting structural equations in observed-variable models by two-stage
+least squares.")
+    (license license:gpl2+)))
+
+(define-public r-semtools
+  (package
+    (name "r-semtools")
+    (version "0.5-2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "semTools" version))
+       (sha256
+        (base32
+         "1zj841pszfsikzp82cmh463qyc4xhdrqjqcnhc2r8mcflv12irv6"))))
+    (properties `((upstream-name . "semTools")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lavaan" ,r-lavaan)))
+    (home-page "https://github.com/simsem/semTools/wiki")
+    (synopsis "Useful tools for structural equation modeling")
+    (description
+     "This package provides useful tools for structural equation modeling.")
+    (license license:gpl2+)))
+
+(define-public r-regsem
+  (package
+    (name "r-regsem")
+    (version "1.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "regsem" version))
+       (sha256
+        (base32
+         "0ch057010xfsw0nqcsarzakdbiplvxaldyqlbbacspqs65ax1yk7"))))
+    (properties `((upstream-name . "regsem")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lavaan" ,r-lavaan)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rsolnp" ,r-rsolnp)))
+    (home-page "https://cran.r-project.org/package=regsem")
+    (synopsis "Regularized structural equation modeling")
+    (description
+     "This package uses both ridge and lasso penalties (and extensions) to
+penalize specific parameters in structural equation models.  The package
+offers additional cost functions, cross validation, and other extensions
+beyond traditional structural equation models.  It also contains a function to
+perform @dfn{exploratory mediation} (XMed).")
+    (license license:gpl2+)))
+
+(define-public r-stanheaders
+  (package
+    (name "r-stanheaders")
+    (version "2.19.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "StanHeaders" version))
+       (sha256
+        (base32
+         "0cmk0fzczx7dcywcw1dhm6gfq84qlsx77qrsk4z3bf3dhr4bznam"))))
+    (properties `((upstream-name . "StanHeaders")))
+    (build-system r-build-system)
+    (inputs `(("pandoc" ,ghc-pandoc)))
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("r-knitr" ,r-knitr))) ; for vignettes
+    (home-page "https://mc-stan.org/")
+    (synopsis "C++ header files for Stan")
+    (description
+     "The C++ header files of the Stan project are provided by this package.
+There is a shared object containing part of the @code{CVODES} library, but it
+is not accessible from R.  @code{r-stanheaders} is only useful for developers
+who want to utilize the @code{LinkingTo} directive of their package's
+DESCRIPTION file to build on the Stan library without incurring unnecessary
+dependencies.
+
+The Stan project develops a probabilistic programming language that implements
+full or approximate Bayesian statistical inference via Markov Chain Monte
+Carlo or variational methods and implements (optionally penalized) maximum
+likelihood estimation via optimization.  The Stan library includes an advanced
+automatic differentiation scheme, templated statistical and linear algebra
+functions that can handle the automatically differentiable scalar types (and
+doubles, ints, etc.), and a parser for the Stan language.  The @code{r-rstan}
+package provides user-facing R functions to parse, compile, test, estimate,
+and analyze Stan models.")
+    (license license:bsd-3)))
+
+(define-public r-rpf
+  (package
+    (name "r-rpf")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rpf" version))
+       (sha256
+        (base32
+         "0j1229qc1mg0vy3msk3yzrpk2r64b8zvnk4rj8q27s38pgz9mix3"))))
+    (properties `((upstream-name . "rpf")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lifecycle" ,r-lifecycle)
+       ("r-mvtnorm" ,r-mvtnorm)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)))
+    (home-page "https://github.com/jpritikin/rpf")
+    (synopsis "Response probability functions")
+    (description
+     "The purpose of this package is to factor out logic and math common to
+Item Factor Analysis fitting, diagnostics, and analysis.  It is envisioned as
+core support code suitable for more specialized IRT packages to build upon.
+Complete access to optimized C functions is made available with
+@code{R_RegisterCCallable()}.")
+    (license license:gpl3+)))
+
+(define-public r-openmx
+  (package
+    (name "r-openmx")
+    (version "2.17.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "OpenMx" version))
+       (sha256
+        (base32
+         "092xbwgi72ihxv45qmzm6lv0470rsrqsn7l2jh61jnkx95n72zbb"))))
+    (properties `((upstream-name . "OpenMx")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bh" ,r-bh)
+       ("r-digest" ,r-digest)
+       ("r-mass" ,r-mass)
+       ("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppeigen" ,r-rcppeigen)
+       ("r-rpf" ,r-rpf)
+       ("r-stanheaders" ,r-stanheaders)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "http://openmx.ssri.psu.edu")
+    (synopsis "Extended structural equation modelling")
+    (description
+     "This package allows for the estimation of a wide variety of advanced
+multivariate statistical models.  It consists of a library of functions and
+optimizers that allow you to quickly and flexibly define an SEM model and
+estimate parameters given observed data.")
+    (license license:asl2.0)))
+
+(define-public r-kutils
+  (package
+    (name "r-kutils")
+    (version "1.69")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "kutils" version))
+       (sha256
+        (base32
+         "12pg26a85h0jxlfcyai68dbh4bq1gnq8v1ngi8k9qvafbrpc6gx8"))))
+    (properties `((upstream-name . "kutils")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-foreign" ,r-foreign)
+       ("r-lavaan" ,r-lavaan)
+       ("r-openxlsx" ,r-openxlsx)
+       ("r-plyr" ,r-plyr)
+       ("r-runit" ,r-runit)
+       ("r-xtable" ,r-xtable)))
+    (home-page "https://cran.r-project.org/package=kutils")
+    (synopsis "Project management tools")
+    (description
+     "This package provides tools for data importation, recoding, and
+inspection.  There are functions to create new project folders, R code
+templates, create uniquely named output directories, and to quickly obtain a
+visual summary for each variable in a data frame.  The main feature here is
+the systematic implementation of the \"variable key\" framework for data
+importation and recoding.")
+    (license license:gpl2)))
+
+(define-public r-rockchalk
+  (package
+    (name "r-rockchalk")
+    (version "1.8.144")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "rockchalk" version))
+       (sha256
+        (base32
+         "07dp1n155b9gfvk8l30h6bhjbhbylsjxfzns08mryn4mxj3nqpnb"))))
+    (properties `((upstream-name . "rockchalk")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-cardata" ,r-cardata)
+       ("r-kutils" ,r-kutils)
+       ("r-lme4" ,r-lme4)
+       ("r-mass" ,r-mass)))
+    (home-page "https://cran.r-project.org/package=rockchalk")
+    (synopsis "Regression estimation and presentation")
+    (description
+     "This package provides a collection of functions for interpretation and
+presentation of regression analysis.  These functions are used to produce the
+statistics lectures in @url{http://pj.freefaculty.org/guides}.  The package
+includes regression diagnostics, regression tables, and plots of interactions
+and \"moderator\" variables.  The emphasis is on \"mean-centered\" and
+\"residual-centered\" predictors.  The vignette @code{rockchalk} offers a
+fairly comprehensive overview.")
+    (license license:gpl3+)))
+
+(define-public r-lisreltor
+  (package
+    (name "r-lisreltor")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "lisrelToR" version))
+       (sha256
+        (base32
+         "0zicq0z3hhixan1p1apybnf3v5s6v6ysll4pcz8ivygwr2swv3p5"))))
+    (properties `((upstream-name . "lisrelToR")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/package=lisrelToR")
+    (synopsis "Import output from LISREL into R")
+    (description
+     "This is an unofficial package aimed at automating the import of LISREL
+output in R.")
+    (license license:gpl2)))
+
+(define-public r-bdgraph
+  (package
+    (name "r-bdgraph")
+    (version "2.62")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "BDgraph" version))
+       (sha256
+        (base32
+         "1b1vfar940swvn3pcil848qsp8ji50fjjll8jjzp6y2adx0f8pby"))))
+    (properties `((upstream-name . "BDgraph")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-igraph" ,r-igraph)))
+    (home-page "https://www.uva.nl/profile/a.mohammadi")
+    (synopsis "Bayesian structure learning in graphical models")
+    (description
+     "This package provides statistical tools for Bayesian structure learning
+in undirected graphical models for continuous, discrete, and mixed data.  It
+uses a trans-dimensional @dfn{Markov Chain Monte Carlo} (MCMC) approach based
+on a continuous-time birth-death process.")
+    (license license:gpl2+)))
+
+(define-public r-d3network
+  (package
+    (name "r-d3network")
+    (version "0.5.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "d3Network" version))
+       (sha256
+        (base32
+         "1gh979z9wksyxxxdzlfzibn0ysvf6h1ij7vwpd55fvbwr308syaw"))))
+    (properties `((upstream-name . "d3Network")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-plyr" ,r-plyr)
+       ("r-rjson" ,r-rjson)
+       ("r-whisker" ,r-whisker)))
+    (home-page "http://christophergandrud.github.io/d3Network/")
+    (synopsis "Create D3 JavaScript network, tree, dendrogram, and Sankey graphs")
+    (description
+     "This packages is intended to make it easy to create D3 JavaScript
+network, tree, dendrogram, and Sankey graphs from R using data frames.")
+    (license license:gpl3+)))
+
+(define-public r-qgraph
+  (package
+    (name "r-qgraph")
+    (version "1.6.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "qgraph" version))
+       (sha256
+        (base32
+         "0pwys9irxvp0ap158drplyypkplbmwqinv0fmlsblk7q875cr592"))))
+    (properties `((upstream-name . "qgraph")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-abind" ,r-abind)
+       ("r-bdgraph" ,r-bdgraph)
+       ("r-colorspace" ,r-colorspace)
+       ("r-corpcor" ,r-corpcor)
+       ("r-d3network" ,r-d3network)
+       ("r-dplyr" ,r-dplyr)
+       ("r-fdrtool" ,r-fdrtool)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggraph" ,r-ggraph)
+       ("r-glasso" ,r-glasso)
+       ("r-gtools" ,r-gtools)
+       ("r-hmisc" ,r-hmisc)
+       ("r-huge" ,r-huge)
+       ("r-igraph" ,r-igraph)
+       ("r-jpeg" ,r-jpeg)
+       ("r-lavaan" ,r-lavaan)
+       ("r-matrix" ,r-matrix)
+       ("r-pbapply" ,r-pbapply)
+       ("r-plyr" ,r-plyr)
+       ("r-png" ,r-png)
+       ("r-psych" ,r-psych)
+       ("r-rcpp" ,r-rcpp)
+       ("r-reshape2" ,r-reshape2)
+       ("r-tidygraph" ,r-tidygraph)))
+    (home-page "http://sachaepskamp.com/qgraph/")
+    (synopsis "Weighted network visualization and analysis")
+    (description
+     "This package implements tools for weighted network visualization and
+analysis, as well as Gaussian graphical model computation.  It contains graph
+plotting methods, and tools for psychometric data visualization and graphical
+model estimation.  See Epskamp et al. (2012)
+@url{doi:10.18637/jss.v048.i04}.")
+    (license license:gpl2)))
+
+(define-public r-semplot
+  (package
+    (name "r-semplot")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "semPlot" version))
+       (sha256
+        (base32
+         "0l1v9yi1pv59iwfknw4dh9qskk5y8r347jq1vq13gnfd3bmd71xr"))))
+    (properties `((upstream-name . "semPlot")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-colorspace" ,r-colorspace)
+       ("r-corpcor" ,r-corpcor)
+       ("r-igraph" ,r-igraph)
+       ("r-lavaan" ,r-lavaan)
+       ("r-lisreltor" ,r-lisreltor)
+       ("r-openmx" ,r-openmx)
+       ("r-plyr" ,r-plyr)
+       ("r-qgraph" ,r-qgraph)
+       ("r-regsem" ,r-regsem)
+       ("r-rockchalk" ,r-rockchalk)
+       ("r-sem" ,r-sem)
+       ("r-xml" ,r-xml)))
+    (home-page "https://github.com/SachaEpskamp/semPlot")
+    (synopsis "Unified visualizations of structural equation models")
+    (description
+     "Structural equation modeling (SEM) has a long history of representing
+models graphically as path diagrams.  The semPlot package for R fills the gap
+between advanced, but time-consuming, graphical software and the limited
+graphics produced automatically by SEM software.  In addition, semPlot offers
+more functionality than drawing path diagrams: it can act as a common ground
+for importing SEM results into R.  Any result usable as input to semPlot can
+also be represented in any of the three popular SEM frame-works, as well as
+translated to input syntax for the R packages @code{sem} and @code{lavaan}.")
+    (license license:gpl2)))
+
+(define-public r-cdm
+  (package
+    (name "r-cdm")
+    (version "7.4-19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "CDM" version))
+       (sha256
+        (base32
+         "1ln1r3rk004fmk55iy08bjh3vv4wnkb8zg2wj3r9rq7pi8jn8fv4"))))
+    (properties `((upstream-name . "CDM")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-mvtnorm" ,r-mvtnorm)
+       ("r-polycor" ,r-polycor)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)))
+    (home-page
+     "https://github.com/alexanderrobitzsch/CDM")
+    (synopsis "Cognitive diagnosis modeling")
+    (description
+     "This package provides functions for cognitive diagnosis modeling and
+multidimensional item response modeling for dichotomous and polytomous item
+responses.  It enables the estimation of the DINA and DINO model, the multiple
+group (polytomous) GDINA model, the multiple choice DINA model, the general
+diagnostic model (GDM), the structured latent class model (SLCA), and
+regularized latent class analysis.  See George, Robitzsch, Kiefer, Gross, and
+Uenlue (2017) @url{doi:10.18637/jss.v074.i02} for further details on
+estimation and the package structure.  For tutorials on how to use the CDM
+package see George and Robitzsch (2015, @url{doi:10.20982/tqmp.11.3.p189}) as
+well as Ravand and Robitzsch (2015).")
+    (license license:gpl2+)))
+
+(define-public r-tam
+  (package
+    (name "r-tam")
+    (version "3.3-10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "TAM" version))
+       (sha256
+        (base32
+         "1rkjp5x6wrk1dfspp1imvfals0wvy4w1wb8a5mhfbnilc7vgnlbq"))))
+    (properties `((upstream-name . "TAM")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-cdm" ,r-cdm)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)))
+    (home-page "http://www.edmeasurementsurveys.com/TAM/Tutorials/")
+    (synopsis "Test analysis modules")
+    (description
+     "This package includes tools for marginal maximum likelihood estimation
+and joint maximum likelihood estimation for unidimensional and
+multidimensional item response models.  The package functionality covers the
+Rasch model, 2PL model, 3PL model, generalized partial credit model,
+multi-faceted Rasch model, nominal item response model, structured latent
+class model, mixture distribution IRT models, and located latent class models.
+Latent regression models and plausible value imputation are also supported.")
+    (license license:gpl2+)))
+
+(define-public r-erm
+  (package
+    (name "r-erm")
+    (version "1.0-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "eRm" version))
+       (sha256
+        (base32
+         "11p8j61arq1ih2qi33wf0442vcdbp3zvknzm5aknsifwl4mbzzly"))))
+    (properties `((upstream-name . "eRm")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lattice" ,r-lattice)
+       ("r-mass" ,r-mass)
+       ("r-matrix" ,r-matrix)))
+    (native-inputs `(("gfortran" ,gfortran)))
+    (home-page "https://cran.r-project.org/package=eRm")
+    (synopsis "Extended Rasch modeling")
+    (description
+     "This package provides tools to fit @dfn{Rasch models} (RM), @dfn{linear
+logistic test models} (LLTM), @dfn{rating scale model} (RSM), @dfn{linear
+rating scale models} (LRSM), @dfn{partial credit models} (PCM), and
+@dfn{linear partial credit models} (LPCM).  Missing values are allowed in the
+data matrix.  Additional features are the ML estimation of the person
+parameters, Andersen's LR-test, item-specific Wald test, Martin-Loef-Test,
+nonparametric Monte-Carlo Tests, itemfit and personfit statistics including
+infit and outfit measures, ICC and other plots, automated stepwise item
+elimination, and a simulation module for various binary data matrices.")
+    (license license:gpl3)))
+
+(define-public r-irtoys
+  (package
+    (name "r-irtoys")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "irtoys" version))
+       (sha256
+        (base32
+         "0h6iiaxikhbxhbyksbjnb09qdxinlkwr2v9yzs5wslbni14paq5q"))))
+    (properties `((upstream-name . "irtoys")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ltm" ,r-ltm)
+       ("r-sm" ,r-sm)))
+    (home-page "https://cran.r-project.org/package=irtoys")
+    (synopsis "Collection of functions related to Item Response Theory (IRT)")
+    (description
+     "This package provides a collection of functions useful in learning and
+practicing @dfn{Item Response Theory} (IRT), which can be combined into larger
+programs.  It provides basic CTT analysis, a simple common interface to the
+estimation of item parameters in IRT models for binary responses with three
+different programs (ICL, BILOG-MG, and ltm), ability estimation (MLE, BME,
+EAP, WLE, plausible values), item and person fit statistics, scaling
+methods (MM, MS, Stocking-Lord, and the complete Hebaera method), and a rich
+array of parametric and non-parametric (kernel) plots.  It estimates and plots
+Haberman's interaction model when all items are dichotomously scored.")
+    (license license:gpl2+)))
+
+(define-public r-iheatmapr
+  (package
+    (name "r-iheatmapr")
+    (version "0.4.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "iheatmapr" version))
+       (sha256
+        (base32
+         "0s479j9l35xiss599vablxgvg6i2j9zq9sxphsq4vdk3bafg84bw"))))
+    (properties `((upstream-name . "iheatmapr")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-fastcluster" ,r-fastcluster)
+       ("r-ggdendro" ,r-ggdendro)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-knitr" ,r-knitr)
+       ("r-magrittr" ,r-magrittr)
+       ("r-plyr" ,r-plyr)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-scales" ,r-scales)))
+    (home-page "https://docs.ropensci.org/iheatmapr")
+    (synopsis "Interactive, Complex Heatmaps")
+    (description
+     "iheatmapr is an R package for building complex, interactive heatmaps
+using modular building blocks.  \"Complex\" heatmaps are heatmaps in which
+subplots along the rows or columns of the main heatmap add more information
+about each row or column.  For example, a one column additional heatmap may
+indicate what group a particular row or column belongs to.  Complex heatmaps
+may also include multiple side by side heatmaps which show different types of
+data for the same conditions.  Interactivity can improve complex heatmaps by
+providing tooltips with information about each cell and enabling zooming into
+interesting features. iheatmapr uses the plotly library for interactivity.")
+    (license license:expat)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index f874a63f49..699fb52d11 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -29,6 +29,7 @@
   #:use-module (guix packages)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages pcre)
@@ -276,6 +277,33 @@ text or blue underlined text, on ANSI terminals.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-anyhow-1.0
+  (package
+    (name "rust-anyhow")
+    (version "1.0.26")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "anyhow" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0g6mzcxyj88k8bv8rr3zx4yczgimqvvgr12n14a29sqj6s1zc9bq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-futures" ,rust-futures-0.3)
+        ("rust-rustversion" ,rust-rustversion-1.0)
+        ("rust-thiserror" ,rust-thiserror-1.0)
+        ("rust-trybuild" ,rust-trybuild-1.0))))
+    (home-page "https://github.com/dtolnay/anyhow")
+    (synopsis "Flexible concrete Error type")
+    (description "This package provides a flexible concrete Error type built on
+@code{std::error::Error}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-approx-0.3
   (package
     (name "rust-approx")
@@ -318,8 +346,37 @@ text or blue underlined text, on ANSI terminals.")
          "153awzwywmb61xg857b80l63b1x6hifx2pha7lxf6fck9qxwraq8"))))
     (arguments '())))
 
+(define-public rust-arc-swap-0.4
+  (package
+    (name "rust-arc-swap")
+    (version "0.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "arc-swap" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zwswfi9n7n3hiq51w1xv34572k2diazx680rrxlc9w07c9akf6p"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
+        ("rust-itertools" ,rust-itertools-0.8)
+        ("rust-model" ,rust-model-0.1)
+        ("rust-num-cpus" ,rust-num-cpus-1.11)
+        ("rust-once-cell" ,rust-once-cell-1.2)
+        ("rust-proptest" ,rust-proptest-0.8)
+        ("rust-version-sync" ,rust-version-sync-0.8))))
+    (home-page "https://github.com/vorner/arc-swap")
+    (synopsis "Atomically swappable Arc")
+    (description "This package provides an atomically swappable Arc.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-arc-swap-0.3
   (package
+    (inherit rust-arc-swap-0.4)
     (name "rust-arc-swap")
     (version "0.3.11")
     (source
@@ -331,7 +388,6 @@ text or blue underlined text, on ANSI terminals.")
        (sha256
         (base32
          "0ha8724dpki985v52ifq5sd98xvpa5q51hyma52di75dbqbn4imw"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-development-inputs
@@ -343,11 +399,7 @@ text or blue underlined text, on ANSI terminals.")
         ("rust-num-cpus" ,rust-num-cpus-1.10)
         ("rust-parking-lot" ,rust-parking-lot-0.8)
         ("rust-proptest" ,rust-proptest-0.9)
-        ("rust-version-sync" ,rust-version-sync-0.8))))
-    (home-page "https://github.com/vorner/arc-swap")
-    (synopsis "Atomically swappable Arc")
-    (description "This package provides an atomically swappable Arc.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-version-sync" ,rust-version-sync-0.8))))))
 
 (define-public rust-argon2rs-0.2
   (package
@@ -501,6 +553,31 @@ ArrayVec and ArrayString.")
      "This package asserts that a value matches a pattern in Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-aster-0.41
+  (package
+    (name "rust-aster")
+    (version "0.41.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "aster" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1q704kn23wnwnrxml7w1mxw6a3xb6386x5wgys6ibnyramrxzksc"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-clippy" ,rust-clippy-0.0)
+        ("rust-compiletest-rs" ,rust-compiletest-rs-0.2)
+        ("rust-syntex-syntax" ,rust-syntex-syntax-0.58))))
+    (home-page "https://github.com/serde-rs/aster")
+    (synopsis "Libsyntax ast builder")
+    (description "This package provides a libsyntax ast builder.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-atty-0.2
   (package
     (name "rust-atty")
@@ -662,8 +739,34 @@ trace (backtrace) at runtime in a Rust program.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-base64-0.11
+  (package
+    (name "rust-base64")
+    (version "0.11.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "base64" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1iqmims6yvr6vwzyy54qd672zw29ipjj17p8klcr578c9ajpw6xl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-rand" ,rust-rand-0.6))))
+    (home-page "https://github.com/marshallpierce/rust-base64")
+    (synopsis "Encodes and decodes base64 as bytes or utf8")
+    (description
+     "This package encodes and decodes base64 as bytes or utf8.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-base64-0.10
   (package
+    (inherit rust-base64-0.11)
     (name "rust-base64")
     (version "0.10.1")
     (source
@@ -675,19 +778,13 @@ trace (backtrace) at runtime in a Rust program.")
        (sha256
         (base32
          "13k6bvd3n6dm7jqn9x918w65dd9xhx454bqphbnv0bkd6n9dj98b"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
-        ("rust-rand" ,rust-rand-0.4))))
-    (home-page "https://github.com/marshallpierce/rust-base64")
-    (synopsis "Encodes and decodes base64 as bytes or utf8")
-    (description
-     "Encodes and decodes base64 as bytes or utf8.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-rand" ,rust-rand-0.4))))))
 
 (define-public rust-base-x-0.2
   (package
@@ -965,6 +1062,35 @@ behave like a set of bitflags.")
         (base32
          "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))))
 
+(define-public rust-blake2-0.8
+  (package
+    (name "rust-blake2")
+    (version "0.8.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "blake2" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0c4k11j04kqhkci6i9b7lz6p13kpcv228pdqixgrawvavaq0gjwl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-byte-tools" ,rust-byte-tools-0.3)
+        ("rust-crypto-mac" ,rust-crypto-mac-0.7)
+        ("rust-digest" ,rust-digest-0.8)
+        ("rust-opaque-debug" ,rust-opaque-debug-0.2))
+       #:cargo-development-inputs
+       (("rust-crypto-mac" ,rust-crypto-mac-0.7)
+        ("rust-digest" ,rust-digest-0.8)
+        ("rust-hex-literal" ,rust-hex-literal-0.1))))
+    (home-page "https://github.com/RustCrypto/hashes")
+    (synopsis "BLAKE2 hash functions")
+    (description "This package provides BLAKE2 hash functions in Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-blake2-rfc-0.2
   (package
     (name "rust-blake2-rfc")
@@ -1071,6 +1197,30 @@ BLAKE2bp hash functions.")
      "Iterator over simple binary blob storage.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-block-0.1
+  (package
+    (name "rust-block")
+    (version "0.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "block" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "16k9jgll25pzsq14f244q22cdv0zb4bqacldg3kx6h89d7piz30d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-objc-test-utils" ,rust-objc-test-utils-0.0))))
+    (home-page "http://github.com/SSheldon/rust-block")
+    (synopsis "Rust interface for Apple's C language extension of blocks")
+    (description "This package provides a rust interface for Apple's C language
+extension of blocks.")
+    (license license:expat)))
+
 (define-public rust-block-buffer-0.7
   (package
     (name "rust-block-buffer")
@@ -1122,10 +1272,10 @@ BLAKE2bp hash functions.")
      "Padding and unpadding of messages divided into blocks.")
     (license (list license:asl1.1 license:expat))))
 
-(define-public rust-bumpalo-2.5
+(define-public rust-bumpalo-3
   (package
     (name "rust-bumpalo")
-    (version "2.5.0")
+    (version "3.2.0")
     (source
      (origin
        (method url-fetch)
@@ -1134,19 +1284,39 @@ BLAKE2bp hash functions.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "018b5calz3895v04shk9bn7i73r4zf8yf7p1dqg92s3xya13vm1c"))))
+         "0hpp4wfcn04gnl1ji4a80b85xwknsci81xqyllq174gq9z0rsd8z"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f      ; cargo_readme_up_to_date test fails
        #:cargo-development-inputs
-       (("rust-criterion" ,rust-criterion-0.2)
-        ("rust-quickcheck" ,rust-quickcheck-0.8))))
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.9))))
     (home-page "https://github.com/fitzgen/bumpalo")
     (synopsis "Fast bump allocation arena for Rust")
     (description
      "This package provides a fast bump allocation arena for Rust.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-bumpalo-2.5
+  (package
+    (inherit rust-bumpalo-3)
+    (name "rust-bumpalo")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bumpalo" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "018b5calz3895v04shk9bn7i73r4zf8yf7p1dqg92s3xya13vm1c"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.2)
+        ("rust-quickcheck" ,rust-quickcheck-0.8))))))
+
 (define-public rust-bstr-0.2
   (package
     (name "rust-bstr")
@@ -1247,7 +1417,7 @@ in a byte slice, fast.")
 (define-public rust-byteorder-1.3
   (package
     (name "rust-byteorder")
-    (version "1.3.2")
+    (version "1.3.4")
     (source
      (origin
        (method url-fetch)
@@ -1256,14 +1426,13 @@ in a byte slice, fast.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1xbwjlmq2ziqjmjvkqxdx1yh136xxhilxd40bky1w4d7hn4xvhx7"))))
+         "1pkjfhgjnq898g1d38ygcfi0msg3m6756cwv0sgysj1d26p8mi08"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-development-inputs
+     `(#:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.4))))
+        ("rust-rand" ,rust-rand-0.6))))
     (home-page
      "https://github.com/BurntSushi/byteorder")
     (synopsis
@@ -1303,6 +1472,62 @@ little-endian.")
      "Types and traits for working with bytes.")
     (license license:expat)))
 
+(define-public rust-bytes-0.3
+  (package
+    (inherit rust-bytes-0.4)
+    (name "rust-bytes")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "bytes" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09vcp9kh12pva2xn2ir79k90v1a0id8f4sdv1abn5ifw2bqsyaf1"))))
+    (arguments
+     `(#:tests? #f      ; Tests not distributed in crate.
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.3))))))
+
+(define-public rust-bzip2-sys-0.1
+  (package
+    (name "rust-bzip2-sys")
+    (version "0.1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bzip2-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pz2mdhkk8yphiqdh2kghdxb60kqyd10lfrjym3r4k5dylvam135"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (delete-file-recursively "bzip2-1.0.6")
+            (delete-file "build.rs")
+            ;; Inspired by Debian's patch.
+            (with-output-to-file "build.rs"
+              (lambda _
+                (format #t "fn main() {~@
+                        println!(\"cargo:rustc-link-lib=bz2\");~@
+                        }~%")))
+            #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-cc" ,rust-cc-1.0))))
+    (home-page "https://github.com/alexcrichton/bzip2-rs")
+    (synopsis "Rust bindings to libbzip2")
+    (description
+     "Bindings to @code{libbzip2} for bzip2 compression and decompression
+exposed as Reader/Writer streams.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-c2-chacha-0.2
   (package
     (name "rust-c2-chacha")
@@ -1332,6 +1557,39 @@ little-endian.")
      "The ChaCha family of stream ciphers.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-calloop-0.4
+  (package
+    (name "rust-calloop")
+    (version "0.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "calloop" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0q6ic9lr0s86886mbyn4yncg68b2sykgwjf3iygdw01swmxhk8ks"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (substitute* "Cargo.toml"
+              (("=1.0.0") "^1.0.0"))
+            #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-mio" ,rust-mio-0.6)
+        ("rust-mio-extras" ,rust-mio-extras-2)
+        ("rust-nix" ,rust-nix-0.14))
+       #:cargo-development-inputs
+       (("rust-lazycell" ,rust-lazycell-1.2))))
+    (home-page "https://github.com/Smithay/calloop")
+    (synopsis "Callback-based event loop")
+    (description
+     "This package provides a callback-based event loop")
+    (license license:expat)))
+
 (define-public rust-caps-0.3
   (package
     (name "rust-caps")
@@ -1546,6 +1804,48 @@ depending on a large number of #[cfg] parameters.  Structured like an
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-cgl-0.3
+  (package
+    (name "rust-cgl")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cgl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zs7skrsyrsm759vfy2cygkx52fx91b567a12bpaz1sf4d8hbv8c"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; only available on macOS
+       #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/servo/cgl-rs")
+    (synopsis "Rust bindings for CGL on Mac")
+    (description "Rust bindings for CGL on Mac.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-cgl-0.2
+  (package
+    (inherit rust-cgl-0.3)
+    (name "rust-cgl")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "cgl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0j8ayr8pbwvyv6l8r7m5z197rs3pqn97085w9j4rfn7yfh5yrrsm"))))
+    (arguments
+     `(#:skip-build? #t     ; only available on macOS
+       #:cargo-inputs
+       (("rust-gleam" ,rust-gleam-0.6)
+        ("rust-libc" ,rust-libc-0.2))))))
+
 (define-public rust-ci-info-0.3
   (package
     (name "rust-ci-info")
@@ -1632,6 +1932,36 @@ depending on a large number of #[cfg] parameters.  Structured like an
                        (string-append clang "/lib")))
              #t)))))))
 
+(define-public rust-clang-sys-0.22
+  (package
+    (inherit rust-clang-sys-0.26)
+    (name "rust-clang-sys")
+    (version "0.22.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "clang-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0f65dw1ydnzq4wrv894fql78n4ikb53jjp53xck0s4hb64s1m6lk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-clippy" ,rust-clippy-0.0)
+        ("rust-glob" ,rust-glob-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-libloading" ,rust-libloading-0.5))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-environmental-variable
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((clang (assoc-ref inputs "libclang")))
+               (setenv "LIBCLANG_PATH"
+                       (string-append clang "/lib")))
+             #t)))))))
+
 (define-public rust-clap-2
   (package
     (name "rust-clap")
@@ -2119,10 +2449,10 @@ intrinsics.")
      "Fast, SIMD-accelerated CRC32 (IEEE) checksum computation.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-criterion-0.2
+(define-public rust-criterion-0.3
   (package
     (name "rust-criterion")
-    (version "0.2.11")
+    (version "0.3.0")
     (source
      (origin
        (method url-fetch)
@@ -2131,25 +2461,22 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1543wlpc4p1kz7sqqa7ylr8bkdr8l4f34hy4bxj7krpkahwhaqq3"))))
+         "1iig7r9c6bkn5qb6axxkblc1amif6k49lix35rhqs728cphh71wk"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-cast" ,rust-cast-0.2)
         ("rust-clap" ,rust-clap-2)
-        ("rust-criterion-plot" ,rust-criterion-plot-0.3)
+        ("rust-criterion-plot" ,rust-criterion-plot-0.4)
         ("rust-csv" ,rust-csv-1.1)
         ("rust-itertools" ,rust-itertools-0.8)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-libc" ,rust-libc-0.2)
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-rand-os" ,rust-rand-os-0.2)
         ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.3)
         ("rust-rayon" ,rust-rayon-1.1)
-        ("rust-rayon-core" ,rust-rayon-core-1.5)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
@@ -2157,17 +2484,86 @@ intrinsics.")
         ("rust-walkdir" ,rust-walkdir-2.2))
        #:cargo-development-inputs
        (("rust-approx" ,rust-approx-0.3)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.4)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7)
         ("rust-tempdir" ,rust-tempdir-0.3))))
     (home-page "https://bheisler.github.io/criterion.rs/book/index.html")
     (synopsis "Statistics-driven micro-benchmarking library")
     (description
-     "Statistics-driven micro-benchmarking library.")
+     "This package provides a statistics-driven micro-benchmarking library.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-criterion-0.2
+  (package
+    (inherit rust-criterion-0.3)
+    (name "rust-criterion")
+    (version "0.2.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "criterion" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1543wlpc4p1kz7sqqa7ylr8bkdr8l4f34hy4bxj7krpkahwhaqq3"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-atty" ,rust-atty-0.2)
+        ("rust-cast" ,rust-cast-0.2)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-criterion-plot" ,rust-criterion-plot-0.3)
+        ("rust-csv" ,rust-csv-1.1)
+        ("rust-itertools" ,rust-itertools-0.8)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rand-core" ,rust-rand-core-0.3)
+        ("rust-rand-os" ,rust-rand-os-0.1)
+        ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.1)
+        ("rust-rayon" ,rust-rayon-1.1)
+        ("rust-rayon-core" ,rust-rayon-core-1.5)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0)
+        ("rust-tinytemplate" ,rust-tinytemplate-1.0)
+        ("rust-walkdir" ,rust-walkdir-2.2))
+       #:cargo-development-inputs
+       (("rust-approx" ,rust-approx-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-tempdir" ,rust-tempdir-0.3))))))
+
+(define-public rust-criterion-plot-0.4
+  (package
+    (name "rust-criterion-plot")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "criterion-plot" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0id5sfww0hjxlzvkzacdlgbls3lxza8iysqljr7j7s2qxbh1a7m0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cast" ,rust-cast-0.2)
+        ("rust-itertools" ,rust-itertools-0.8))
+       #:cargo-development-inputs
+       (("rust-itertools-num" ,rust-itertools-num-0.1)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-rand" ,rust-rand-0.4))))
+    (home-page "https://github.com/bheisler/criterion.rs")
+    (synopsis "Criterion's plotting library")
+    (description "This package provides criterion's plotting library.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-criterion-plot-0.3
   (package
+    (inherit rust-criterion-plot-0.4)
     (name "rust-criterion-plot")
     (version "0.3.1")
     (source
@@ -2179,21 +2575,15 @@ intrinsics.")
        (sha256
         (base32
          "13pv09z4ryp70qyzablkibwa2mh6c2852qq1sjr9wjigvwnj3ybn"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-cast" ,rust-cast-0.2)
         ("rust-itertools" ,rust-itertools-0.8))
        #:cargo-development-inputs
        (("rust-itertools-num" ,rust-itertools-num-0.1)
         ("rust-num-complex" ,rust-num-complex-0.2)
-        ("rust-rand" ,rust-rand-0.4))))
-    (home-page "https://github.com/bheisler/criterion.rs")
-    (synopsis "Criterion's plotting library")
-    (description "Criterion's plotting library.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-rand" ,rust-rand-0.4))))))
 
 (define-public rust-crossbeam-0.7
   (package
@@ -2487,6 +2877,31 @@ intrinsics.")
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.4))))))
 
+(define-public rust-crypto-mac-0.7
+  (package
+    (name "rust-crypto-mac")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "crypto-mac" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1rbrq6qy9dl0pj4ym2zy33miaaa8vpzdss60p9bdb58xy46l0d24"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-blobby" ,rust-blobby-0.1)
+        ("rust-generic-array" ,rust-generic-array-0.12)
+        ("rust-subtle" ,rust-subtle-1.0))))
+    (home-page "https://github.com/RustCrypto/traits")
+    (synopsis "Trait for Message Authentication Code (MAC) algorithms")
+    (description "This package provides trait for @dfn{Message Authentication
+Code} (MAC) algorithms.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-csv-1.1
   (package
     (name "rust-csv")
@@ -2685,6 +3100,32 @@ hexadecimal, base32, and base64.")
 and arithmetic.")
     (license license:expat)))
 
+(define-public rust-deflate-0.7
+  (package
+    (name "rust-deflate")
+    (version "0.7.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "deflate" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1d7d9fpmgjnznrksmd3vlv3dyw01wsrm11ifil6ag22871xnlyvh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-adler32" ,rust-adler32-1.0)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-gzip-header" ,rust-gzip-header-0.3)
+        ("rust-flate2" ,rust-flate2-1.0))))
+    (home-page "https://github.com/image-rs/deflate-rs")
+    (synopsis "DEFLATE, zlib and gzip encoder written in rust")
+    (description
+     "This package provides a DEFLATE, zlib and gzip encoder written in rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-defmac-0.2
   (package
     (name "rust-defmac")
@@ -2719,6 +3160,30 @@ and arithmetic.")
          (base32
           "17giv0n0n1r64z0dahfvkjy3ys517jxyhs8sd9lmgvcljpjyryxa"))))))
 
+(define-public rust-dlib-0.4
+  (package
+    (name "rust-dlib")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "dlib" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0smp2cdvy12xfw26qyqms273w5anszfadv73g75s88yqm54i5rbp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libloading" ,rust-libloading-0.5))))
+    (home-page "https://github.com/vberger/dlib")
+    (synopsis "Helper macros for manually loading optional system libraries")
+    (description
+     "This package provides helper macros for handling manually loading optional
+system libraries.")
+    (license license:expat)))
+
 (define-public rust-cpp-demangle-0.2
   (package
     (name "rust-cpp-demangle")
@@ -3040,6 +3505,27 @@ from macros.")
     (description "Command line argument parsing.")
     (license (list license:expat license:unlicense))))
 
+(define-public rust-docopt-0.7
+  (package
+    (inherit rust-docopt-1.1)
+    (name "rust-docopt")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "docopt" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1n6gbhsks2w9y0b4bwqyawh4ghbkka09w6pjcrq9i1sd51pflcmb"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-0.2)
+        ("rust-regex" ,rust-regex-0.2)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-strsim" ,rust-strsim-0.6))))))
+
 (define-public rust-downcast-rs-1.1
   (package
     (name "rust-downcast-rs")
@@ -3181,6 +3667,32 @@ floating-point primitives to an @code{io::Write}.")
 @code{Right} is a general purpose sum type with two cases.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-embed-resource-1.3
+  (package
+    (name "rust-embed-resource")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "embed-resource" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0v1adsw9mq7gjjjhx4hcjhqppdf4vm0gbcgh7sxirbxh99la9axv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-vswhom" ,rust-vswhom-0.1)
+        ("rust-winreg" ,rust-winreg-0.6))))
+    (home-page "https://github.com/nabijaczleweli/rust-embed-resource")
+    (synopsis
+     "Cargo library to handle compilation and inclusion of Windows resources")
+    (description
+     "This package provides a Cargo library to handle compilation and
+inclusion of Windows resources in the most resilient fashion imaginable.")
+    (license license:expat)))
+
 (define-public rust-encode-unicode-0.3
   (package
     (name "rust-encode-unicode")
@@ -3423,7 +3935,7 @@ Standard.")
 (define-public rust-encoding-rs-io-0.1
   (package
     (name "rust-encoding-rs-io")
-    (version "0.1.6")
+    (version "0.1.7")
     (source
      (origin
        (method url-fetch)
@@ -3432,11 +3944,10 @@ Standard.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0b7k9p7inkrcanh7h6q4m278y05gmcwi8p5r43h7grzl5dxfw6cn"))))
+         "10ra4l688cdadd8h1lsbahld1zbywnnqv68366mbhamn3xjwbhqw"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-encoding-rs" ,rust-encoding-rs-0.8))))
     (home-page "https://github.com/BurntSushi/encoding_rs_io")
     (synopsis "Streaming transcoding for encoding_rs")
@@ -3687,6 +4198,32 @@ is configured via an environment variable.")
      "Yet another error boilerplate library.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-euclid-0.20
+  (package
+    (name "rust-euclid")
+    (version "0.20.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "euclid" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pa8kxblvc0s9gia9n0966w7169aswpg7knw2pmwrqa204r2v19z"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-mint" ,rust-mint-0.5)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-test" ,rust-serde-test-1.0))))
+    (home-page "https://github.com/servo/euclid")
+    (synopsis "Geometry primitives")
+    (description "Geometry primitives written in Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-fake-simd-0.1
   (package
     (name "rust-fake-simd")
@@ -4000,8 +4537,33 @@ implementation that is more efficient for smaller hash keys.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-foreign-types-0.5
+  (package
+    (name "rust-foreign-types")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "foreign-types" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0rfr2zfxnx9rz3292z5nyk8qs2iirznn5ff3rd4vgdwza6mdjdyp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-foreign-types-macros" ,rust-foreign-types-macros-0.2)
+        ("rust-foreign-types-shared" ,rust-foreign-types-shared-0.3))))
+    (home-page "https://github.com/sfackler/foreign-types")
+    (synopsis "Framework for Rust wrappers over C APIs")
+    (description
+     "This package provides a framework for Rust wrappers over C APIs.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-foreign-types-0.3
   (package
+    (inherit rust-foreign-types-0.5)
     (name "rust-foreign-types")
     (version "0.3.2")
     (source
@@ -4013,23 +4575,41 @@ implementation that is more efficient for smaller hash keys.")
        (sha256
         (base32
          "1cgk0vyd7r45cj769jym4a6s7vwshvd0z4bqrb92q1fwibmkkwzn"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-foreign-types-macros" ,rust-foreign-types-macros-0.1)
-        ("rust-foreign-types-shared" ,rust-foreign-types-shared-0.1))))
+        ("rust-foreign-types-shared" ,rust-foreign-types-shared-0.1))))))
+
+(define-public rust-foreign-types-macros-0.2
+  (package
+    (name "rust-foreign-types-macros")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "foreign-types-macros" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0x71sdffjfb123l2jn5vhz0ni09b4rdq3h3gpczd1dj1g5qlr2yv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
     (home-page "https://github.com/sfackler/foreign-types")
-    (synopsis "Framework for Rust wrappers over C APIs")
+    (synopsis "Internal crate used by foreign-types")
     (description
-     "This package provides a framework for Rust wrappers over C
-APIs.")
+     "This package is an internal crate used by foreign-types.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-foreign-types-macros-0.1
   (package
+    (inherit rust-foreign-types-macros-0.2)
     (name "rust-foreign-types-macros")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
@@ -4038,14 +4618,22 @@ APIs.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "16yjigjcsklcwy2ad32l24k1nwm9n3bsnyhxc3z9whjbsrj60qk6"))))
+         "0bh6z5rwdhfm987idal8r0ha5svz1li7md5l1g2a5966gya1jns0"))))))
+
+(define-public rust-foreign-types-shared-0.3
+  (package
+    (name "rust-foreign-types-shared")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "foreign-types-shared" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0mg85r21bxg2i97zl3q8l3cviqz4wcbwziz875wlja3zpcrwz13n"))))
     (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
-        ("rust-quote" ,rust-quote-1.0)
-        ("rust-syn" ,rust-syn-0.15))))
     (home-page "https://github.com/sfackler/foreign-types")
     (synopsis "Internal crate used by foreign-types")
     (description
@@ -4054,6 +4642,7 @@ APIs.")
 
 (define-public rust-foreign-types-shared-0.2
   (package
+    (inherit rust-foreign-types-shared-0.3)
     (name "rust-foreign-types-shared")
     (version "0.2.0")
     (source
@@ -4063,15 +4652,7 @@ APIs.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0kanxlif1vp0ffh2r9l610jqbkmb3183yqykxq1z5w1vay2rn7y6"))))
-    (build-system cargo-build-system)
-    (arguments `(#:skip-build? #t))
-    (home-page "https://github.com/sfackler/foreign-types")
-    (synopsis "Internal crate used by foreign-types")
-    (description
-     "An internal crate used by foreign-types.")
-    (license (list license:asl2.0
-                   license:expat))))
+          "0kanxlif1vp0ffh2r9l610jqbkmb3183yqykxq1z5w1vay2rn7y6"))))))
 
 (define-public rust-foreign-types-shared-0.1
   (package
@@ -4088,6 +4669,63 @@ APIs.")
         (base32
          "0jxgzd04ra4imjv8jgkmdq59kj8fsz6w4zxsbmlai34h26225c00"))))))
 
+(define-public rust-freetype-rs-0.23
+  (package
+    (name "rust-freetype-rs")
+    (version "0.23.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "freetype-rs" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "06yn6l44wad0h0i4nzs5jfq64zgf89xr01fy1w22i90j22ilnkmd"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-freetype-sys" ,rust-freetype-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-unicode-normalization" ,rust-unicode-normalization-0.1))))
+    (inputs
+     `(("freetype" ,freetype)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/PistonDevelopers/freetype-rs")
+    (synopsis "Bindings for FreeType font library")
+    (description "This package provides bindings for FreeType font library.")
+    (license license:expat)))
+
+(define-public rust-freetype-sys-0.9
+  (package
+    (name "rust-freetype-sys")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "freetype-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1i309xc6gcsgdfiim3j5f0sk08imr4frlzfa185iaxqciysqgikx"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-libz-sys" ,rust-libz-sys-1.0)
+        ("rust-pkg-config" ,rust-pkg-config-0.3))))
+    (inputs
+     `(("freetype" ,freetype)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/PistonDevelopers/freetype-sys")
+    (synopsis "Low level binding for FreeType font library")
+    (description
+     "This package provides low level binding for FreeType font library.")
+    (license license:expat)))
+
 (define-public rust-fs-extra-1.1
   (package
     (name "rust-fs-extra")
@@ -4109,6 +4747,86 @@ APIs.")
 process and much more.")
     (license license:expat)))
 
+(define-public rust-fs2-0.2
+  (package
+    (name "rust-fs2")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "fs2" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vsih93cvds3x6f3w9bc5rnkyv8haix1px4jpcqvjyd9l7ji9m5w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.2))
+       #:cargo-development-inputs
+       (("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/danburkert/fs2-rs")
+    (synopsis "File locks and file duplication")
+    (description
+     "This package provides cross-platform file locks and file duplication.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-fsevent-0.4
+  (package
+    (name "rust-fsevent")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fsevent" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1djxnc2fmv265xqf1iyfz56smh13v9r1p0w9125wjg6k3fyx3dss"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; only available on macOS
+       #:cargo-inputs
+        (("rust-bitflags" ,rust-bitflags-1)
+         ("rust-fsevent-sys" ,rust-fsevent-sys-2))
+        #:cargo-development-inputs
+        (("rust-tempdir" ,rust-tempdir-0.3)
+         ("rust-time" ,rust-time-0.1))))
+    (home-page "https://github.com/octplane/fsevent-rust")
+    (synopsis "Rust bindings to the fsevent-sys macOS API")
+    (description
+     "This package provides Rust bindings to the @code{fsevent-sys} macOS API
+for file changes notifications")
+    (license license:expat)))
+
+(define-public rust-fsevent-sys-2
+  (package
+    (name "rust-fsevent-sys")
+    (version "2.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fsevent-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "18246vxk7rqn52m0sfrhivxq802i34p2wqqx5zsa0pamjj5086zl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; only available on macOS
+       #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/octplane/fsevent-rust/tree/master/fsevent-sys")
+    (synopsis "Rust bindings to the fsevent macOS API")
+    (description "This package provides Rust bindings to the @code{fsevent}
+macOS API for file changes notifications")
+    (license license:expat)))
+
 (define-public rust-fuchsia-cprng-0.1
   (package
     (name "rust-fuchsia-cprng")
@@ -4196,6 +4914,41 @@ pseudorandom number generator")
     (description "Handling fragments of UTF-8.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-futures-0.3
+  (package
+    (name "rust-futures")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "futures" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "11srrbc0hp7pgz142qjfx2z07kfhc98rbfwqyrgm4mxvxib61wdn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-executor" ,rust-futures-executor-0.3)
+        ("rust-futures-io" ,rust-futures-io-0.3)
+        ("rust-futures-sink" ,rust-futures-sink-0.3)
+        ("rust-futures-task" ,rust-futures-task-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3))
+       #:cargo-development-inputs
+       (("rust-assert-matches" ,rust-assert-matches-1.3)
+        ("rust-pin-utils" ,rust-pin-utils-0.1)
+        ("rust-tokio" ,rust-tokio-0.1))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs")
+    (synopsis "Rust implementation of futures and streams")
+    (description
+     "A Rust implementation of futures and streams featuring zero allocations,
+composability, and iterator-like interfaces.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-futures-0.1
   (package
     (name "rust-futures")
@@ -4301,11 +5054,11 @@ featuring zero allocations, composability, and iterator-like interfaces.")
          (base32
           "1xaq8m609k6cz8xydwhwp8xxyxigabcw1w9ngycfy0bnkg7iq52b"))))
     (build-system cargo-build-system)
+    (arguments '(#:tests? #f))
     (home-page "https://rust-lang-nursery.github.io/futures-rs/")
     (synopsis "Core traits and types in for the @code{futures} library.")
     (description "This crate provides the core traits and types in for the
 @code{futures} library.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -4334,6 +5087,34 @@ the computation on the threads themselves.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-executor-0.3
+  (package
+    (name "rust-futures-executor")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "futures-executor" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cf24wbgxqh4kdjbb557vk1axzmbpmwb8s05ga1nls1zaqv4f9qy"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-task" ,rust-futures-task-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
+        ("rust-num-cpus" ,rust-num-cpus-1.11))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs")
+    (synopsis "Executors for asynchronous tasks based on the futures-rs library")
+    (description
+     "This package provides executors for asynchronous tasks based on the
+@code{futures-rs} library.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-futures-executor-preview-0.3
   (package
     (name "rust-futures-executor-preview")
@@ -4403,10 +5184,35 @@ for the futures-rs library.")
     (synopsis "Async read and write traits for the futures library")
     (description "This crate provides the @code{AsyncRead} and
 @code{AsyncWrite} traits for the @code{futures-rs} library.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-futures-macro-0.3
+  (package
+    (name "rust-futures-macro")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "futures-macro" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0r3px32wgqfbmfyb1lrj9wplvjris5magdyhfr7xnyjk2mncbrsj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro-hack" ,rust-proc-macro-hack-0.5)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs")
+    (synopsis "Futures-rs procedural macro implementations")
+    (description
+     "This package provides the @code{futures-rs} procedural macro implementations.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-futures-select-macro-preview-0.3
   (package
     (name "rust-futures-select-macro-preview")
@@ -4469,12 +5275,14 @@ the futures-rs library.")
          (base32
           "1r4d0gy73hdxkh5g1lrhl1kjnwp6mywjgcj70v0z78b921da42a3"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures-core-preview" ,rust-futures-core-preview-0.3))))
     (home-page "https://rust-lang-nursery.github.io/futures-rs/")
     (synopsis  "Asynchronous `Sink` trait for the futures-rs library")
     (description
      "This package provides the asynchronous @code{Sink} trait for the
 futures-rs library.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -4498,6 +5306,41 @@ futures-rs library.")
     (description "Tools for working with tasks.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-futures-util-0.3
+  (package
+    (name "rust-futures-util")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "futures-util" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xlyqdn6lnpkw27lwxczihx91h64gbdd31n8c8y5v63nzds65mn0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures" ,rust-futures-0.1)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-io" ,rust-futures-io-0.3)
+        ("rust-futures-macro" ,rust-futures-macro-0.3)
+        ("rust-futures-sink" ,rust-futures-sink-0.3)
+        ("rust-futures-task" ,rust-futures-task-0.3)
+        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-pin-utils" ,rust-pin-utils-0.1)
+        ("rust-proc-macro-hack" ,rust-proc-macro-hack-0.5)
+        ("rust-proc-macro-nested" ,rust-proc-macro-nested-0.1)
+        ("rust-slab" ,rust-slab-0.4)
+        ("rust-tokio-io" ,rust-tokio-io-0.1))))
+    (home-page "https://rust-lang-nursery.github.io/futures-rs")
+    (synopsis "Common utilities and extension traits for the futures-rs library")
+    (description "This package provides common utilities and extension traits
+for the futures-rs library.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-futures-util-preview-0.3
   (package
     (name "rust-futures-util-preview")
@@ -4590,6 +5433,32 @@ archive to be linked into Rustcode.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-gdi32-sys-0.2
+  (package
+    (name "rust-gdi32-sys")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gdi32-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-winapi" ,rust-winapi-0.2))
+       #:cargo-development-inputs
+       (("rust-winapi-build" ,rust-winapi-build-0.1))))
+    (home-page "https://github.com/retep998/winapi-rs")
+    (synopsis "Function definitions for the Windows API library gdi32")
+    (description "This package contains function definitions for the Windows
+API library @code{gdi32}.")
+    (license license:expat)))
+
 (define-public rust-generic-array-0.13
   (package
     (name "rust-generic-array")
@@ -4805,6 +5674,84 @@ reading and writing git repositories.")
         ("rust-thread-id" ,rust-thread-id-3.3)
         ("rust-time" ,rust-time-0.1))))))
 
+(define-public rust-gl-generator-0.14
+  (package
+    (name "rust-gl-generator")
+    (version "0.14.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gl-generator" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0k8j1hmfnff312gy7x1aqjzcm8zxid7ij7dlb8prljib7b1dz58s"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-khronos-api" ,rust-khronos-api-3)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-xml-rs" ,rust-xml-rs-0.8))))
+    (home-page "https://github.com/brendanzab/gl-rs/")
+    (synopsis "Code generators for bindings to the Khronos OpenGL APIs")
+    (description
+     "Code generators for creating bindings to the Khronos OpenGL APIs.")
+    (license license:asl2.0)))
+
+(define-public rust-gl-generator-0.13
+  (package
+    (inherit rust-gl-generator-0.14)
+    (name "rust-gl-generator")
+    (version "0.13.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gl-generator" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jpqjqpyrl73sf8y20p5rv50qz8glnsvv9infg8h4vi52zgbp66a"))))))
+
+(define-public rust-gl-generator-0.11
+ (package
+   (inherit rust-gl-generator-0.13)
+   (name "rust-gl-generator")
+   (version "0.11.0")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (crate-uri "gl-generator" version))
+      (file-name
+       (string-append name "-" version ".tar.gz"))
+      (sha256
+       (base32
+        "1gdchvay0k0g931b2ki33mkfixcw4radk5b8sqsm29rahxg3v8ir"))))))
+
+(define-public rust-gleam-0.6
+  (package
+    (name "rust-gleam")
+    (version "0.6.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gleam" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1iazvk3kvw3620gm6x8hy2x1lz51k04acl78cr3ppryhk5y0vqfa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-gl-generator" ,rust-gl-generator-0.13))))
+    (home-page "https://github.com/servo/gleam")
+    (synopsis "Generated OpenGL bindings and wrapper for Servo")
+    (description
+     "Generated OpenGL bindings and wrapper for Servo.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-glob-0.3
   (package
     (name "rust-glob")
@@ -5140,6 +6087,30 @@ standard printing of search results, similar to grep itself.")
      "Fast line oriented regex searching as a library.")
     (license (list license:unlicense license:expat))))
 
+(define-public rust-gzip-header-0.3
+  (package
+    (name "rust-gzip-header")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "gzip-header" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fg6vm8sgsm69szwqyz7abfbyziv6pv0jkcailimlamvsfrzwc81"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crc32fast" ,rust-crc32fast-1.2))))
+    (home-page "https://github.com/oyvindln/gzip-header")
+    (synopsis "Decoding and encoding the header part of gzip files")
+    (description
+     "This package provides a crate for decoding and encoding the header part
+of gzip files based on the gzip header implementation in the @code{flate2} crate.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-half-1.3
   (package
     (name "rust-half")
@@ -5417,6 +6388,25 @@ hexadecimal representation.")
 compile time.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-hex-literal-0.1
+  (package
+    (inherit rust-hex-literal-0.2)
+    (name "rust-hex-literal")
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "hex-literal" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ffnn5g9q5xhdmzj2ic5hk9y18kyqflbmqcssqcya9gixs5r5hnx"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-hex-literal-impl" ,rust-hex-literal-impl-0.1)
+        ("rust-proc-macro-hack" ,rust-proc-macro-hack-0.4))))))
+
 (define-public rust-hex-literal-impl-0.2
   (package
     (name "rust-hex-literal-impl")
@@ -5441,6 +6431,24 @@ compile time.")
      "Internal implementation of the hex-literal crate.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-hex-literal-impl-0.1
+  (package
+    (inherit rust-hex-literal-impl-0.2)
+    (name "rust-hex-literal-impl")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "hex-literal-impl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1nnxqhyn9l998ma04ip79bmpqv1as6003s03g26ynhrr471p022j"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro-hack" ,rust-proc-macro-hack-0.4))))))
+
 (define-public rust-html5ever-0.23
   (package
     (name "rust-html5ever")
@@ -5679,7 +6687,8 @@ SystemTime}}.")
         ("rust-regex" ,rust-regex-1.1)
         ("rust-same-file" ,rust-same-file-1.0)
         ("rust-thread-local" ,rust-thread-local-1.0)
-        ("rust-walkdir" ,rust-walkdir-2.2))))
+        ("rust-walkdir" ,rust-walkdir-2.2)
+        ("rust-winapi-util" ,rust-winapi-util-0.1))))
     (home-page "https://github.com/BurntSushi/ripgrep/tree/master/ignore")
     (synopsis "Efficiently match ignore files such as .gitignore")
     (description
@@ -5729,6 +6738,80 @@ This crate was initially published under the name ordermap, but it was
 renamed to indexmap.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-inflate-0.4
+  (package
+    (name "rust-inflate")
+    (version "0.4.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "inflate" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zxjdn8iwa0ssxrnjmywm3r1v284wryvzrf8vkc7nyf5ijbjknqw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-adler32" ,rust-adler32-1.0))))
+    (home-page "https://github.com/PistonDevelopers/inflate.git")
+    (synopsis "DEFLATE decoding")
+    (description "This package provides DEFLATE decoding.")
+    (license license:expat)))
+
+(define-public rust-inotify-0.6
+  (package
+    (name "rust-inotify")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "inotify" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0627k5aq44knjlrc09hl017nxap3svpl79przf26y3ciycwlbda0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-futures" ,rust-futures-0.1)
+        ("rust-inotify-sys" ,rust-inotify-sys-0.1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-tokio-io" ,rust-tokio-io-0.1)
+        ("rust-tokio-reactor" ,rust-tokio-reactor-0.1))
+       #:cargo-development-inputs
+       (("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/inotify-rs/inotify")
+    (synopsis "Idiomatic wrapper for inotify")
+    (description "This package provides an idiomatic wrapper for inotify written
+in Rust.")
+    (license license:isc)))
+
+(define-public rust-inotify-sys-0.1
+  (package
+    (name "rust-inotify-sys")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "inotify-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1h2nwgajz80qddjm4mpma94zahxw84nscbycy9pgzbjrgjl1ljp7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/inotify-rs/inotify-sys")
+    (synopsis "Inotify bindings for Rust")
+    (description
+     "This package provides inotify bindings for the Rust programming language.")
+    (license license:isc)))
+
 (define-public rust-insta-0.8
   (package
     (name "rust-insta")
@@ -6062,6 +7145,24 @@ wasm-bindgen crate.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-jemalloc-sys-0.1
+  (package
+    (inherit rust-jemalloc-sys-0.3)
+    (name "rust-jemalloc-sys")
+    (version "0.1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "jemalloc-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bh07rlzgg39ys1lsgnpxgvjj6blagp2h17fx267d0g3a272rimz"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin (delete-file-recursively "jemalloc") #t))))))
+
 (define-public rust-jemallocator-0.3
   (package
     (name "rust-jemallocator")
@@ -6089,6 +7190,36 @@ wasm-bindgen crate.")
      "This package provides a Rust allocator backed by jemalloc.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-jemallocator-0.1
+  (package
+    (inherit rust-jemallocator-0.3)
+    (name "rust-jemallocator")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "jemallocator" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1csabk36p06nlh3qxxsg6nkf074b2jq2cld5zriq0xazqqmd834z"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-jemalloc-sys" ,rust-jemalloc-sys-0.1)
+        ("rust-libc" ,rust-libc-0.2))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'override-jemalloc
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jemalloc (assoc-ref inputs "jemalloc")))
+               (setenv "JEMALLOC_OVERRIDE"
+                       (string-append jemalloc "/lib/libjemalloc_pic.a")))
+             #t)))))
+    (native-inputs
+     `(("jemalloc" ,jemalloc)))))
+
 (define-public rust-json-0.11
   (package
     (name "rust-json")
@@ -6228,6 +7359,42 @@ requires non-const function calls to be computed.")
     (arguments
      `(#:cargo-inputs (("rust-spin" ,rust-spin-0.5))))))
 
+(define-public rust-lazy-static-0.2
+  (package
+    (inherit rust-lazy-static-1.4)
+    (name "rust-lazy-static")
+    (version "0.2.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "lazy_static" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wxy8vak7jsx6r8gx475pjqpx11p2bfq4wvw6idmqi31mp3k7w3n"))))
+    (arguments
+     `(#:tests? #f      ; Tests fail to compile.
+       #:cargo-inputs
+       (("rust-compiletest-rs" ,rust-compiletest-rs-0.3)
+        ("rust-spin" ,rust-spin-0.4))))))
+
+(define-public rust-lazy-static-0.1
+  (package
+    (inherit rust-lazy-static-0.2)
+    (name "rust-lazy-static")
+    (version "0.1.16")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "lazy_static" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05vl1h4b0iv800grsdyc3fg2bq29p70wjav6zpjvxxd5i8d6s66g"))))
+    (arguments '())))
+
 (define-public rust-lazycell-1.2
   (package
     (name "rust-lazycell")
@@ -7191,7 +8358,7 @@ drop-in replacement for miniz.")
 (define-public rust-mio-0.6
   (package
     (name "rust-mio")
-    (version "0.6.19")
+    (version "0.6.21")
     (source
      (origin
        (method url-fetch)
@@ -7200,12 +8367,13 @@ drop-in replacement for miniz.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "08zzs227vrnyz5kvws6awzlgzb8zqpnihs71hkqlw07dlfb1kxc3"))))
+         "13q02a7cwc140aygf8amadpzpl5lyj3p2r4wnvgydfpnphifqb9h"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
-       (("rust-fuchsia-zircon" ,rust-fuchsia-zircon-0.3)
+       (("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-fuchsia-zircon" ,rust-fuchsia-zircon-0.3)
         ("rust-fuchsia-zircon-sys" ,rust-fuchsia-zircon-sys-0.3)
         ("rust-iovec" ,rust-iovec-0.1)
         ("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
@@ -7214,16 +8382,68 @@ drop-in replacement for miniz.")
         ("rust-miow" ,rust-miow-0.2)
         ("rust-net2" ,rust-net2-0.2)
         ("rust-slab" ,rust-slab-0.4)
-        ("rust-winapi" ,rust-winapi-0.3))
+        ("rust-winapi" ,rust-winapi-0.2))
        #:cargo-development-inputs
-       (("rust-bytes" ,rust-bytes-0.4)
-        ("rust-env-logger" ,rust-env-logger-0.6)
+       (("rust-bytes" ,rust-bytes-0.3)
+        ("rust-env-logger" ,rust-env-logger-0.4)
         ("rust-tempdir" ,rust-tempdir-0.3))))
     (home-page "https://github.com/tokio-rs/mio")
     (synopsis "Lightweight non-blocking IO")
     (description "Lightweight non-blocking IO.")
     (license license:expat)))
 
+(define-public rust-mio-anonymous-pipes-0.1
+  (package
+    (name "rust-mio-anonymous-pipes")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "mio-anonymous-pipes" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1bqs8wncd73q4pnbiwskhgds57hyr8g89vfpqmw1vk9dqp1p9hpq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-mio" ,rust-mio-0.6)
+        ("rust-miow" ,rust-miow-0.3)
+        ("rust-spsc-buffer" ,rust-spsc-buffer-0.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/davidhewitt/mio-anonymous-pipes")
+    (synopsis "Asynchronous wrapper for Windows synchronous pipes")
+    (description
+     "This package provides asynchronous wrapper for Windows synchronous pipes.")
+    (license license:expat)))
+
+(define-public rust-mio-extras-2
+  (package
+    (name "rust-mio-extras")
+    (version "2.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "mio-extras" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "069gfhlv0wlwfx1k2sriwfws490kjp490rv2qivyfb01j3i3yh2j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazycell" ,rust-lazycell-1.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-slab" ,rust-slab-0.4))))
+    (home-page "https://github.com/dimbleby/mio-extras")
+    (synopsis "Extra components for use with Mio")
+    (description "Extra components for use with Mio.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-mio-named-pipes-0.1
   (package
     (name "rust-mio-named-pipes")
@@ -7379,6 +8599,29 @@ checking.")
       "Chaining APIs for both self -> Self and &mut self methods.")
     (license license:expat)))
 
+(define-public rust-named-pipe-0.4
+  (package
+    (name "rust-named-pipe")
+    (version "0.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "named-pipe" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0azby10wzmsrf66m1bysbil0sjfybnvhsa8py093xz4irqy4975d"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; Only builds on Windows.
+       #:cargo-inputs (("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/blackbeam/named_pipe")
+    (synopsis "Wrapper for overlapped (asyncronous) IO of Windows's named pipes")
+    (description "This package provides a wrapper for overlapped (asyncronous)
+IO of Windows's named pipes.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-natord-1.0
   (package
     (name "rust-natord")
@@ -7669,6 +8912,41 @@ release (fork of debug_unreachable)")
 prove a function can't ever panic.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-notify-4
+  (package
+    (name "rust-notify")
+    (version "4.0.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "notify" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12vpbg8j49196rxkm01hw2xfr0mk005ljmx0p9kwf6xj6gy2i5hr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-filetime" ,rust-filetime-0.2)
+        ("rust-fsevent" ,rust-fsevent-0.4)
+        ("rust-fsevent-sys" ,rust-fsevent-sys-2)
+        ("rust-inotify" ,rust-inotify-0.6)
+        ("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-mio-extras" ,rust-mio-extras-2)
+        ("rust-walkdir" ,rust-walkdir-2.2)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/passcod/notify")
+    (synopsis "Cross-platform filesystem notification library")
+    (description
+     "Cross-platform filesystem notification library.")
+    (license license:cc0)))
+
 (define-public rust-nix-0.14
   (package
     (inherit rust-nix-0.15)
@@ -7722,12 +9000,10 @@ prove a function can't ever panic.")
     (license (list license:asl2.0
                    license:expat))))
 
-;; This package requires features which are unavailable
-;; on the stable releases of Rust.
 (define-public rust-nodrop-union-0.1
   (package
     (name "rust-nodrop-union")
-    (version "0.1.10")
+    (version "0.1.11")
     (source
       (origin
         (method url-fetch)
@@ -7735,14 +9011,14 @@ prove a function can't ever panic.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0jsnkdn9l8jlmb9h4wssi76sxnyxwnyi00p6y1p2gdq7c1gdw2b7"))))
+          "1h59pph19rxanyqcaid8pg73s7wmzdx3zhjv5snlim5qx606zxkc"))))
     (build-system cargo-build-system)
+    (arguments '(#:skip-build? #t))   ; depends on features not in stable Rust
     (home-page "https://github.com/bluss/arrayvec")
     (synopsis "Wrapper type to inhibit drop (destructor)")
     (description "This package provides a wrapper type to inhibit drop
-(destructor).  Implementation crate for nodrop, the untagged unions
+(destructor).  Implementation crate for @code{nodrop}, the untagged unions
 implementation (which is unstable / requires nightly).")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -7764,14 +9040,12 @@ implementation (which is unstable / requires nightly).")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-lexical-core" ,rust-lexical-core-0.4)
         ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-regex" ,rust-regex-1.1))
+        ("rust-regex" ,rust-regex-1.1)
+        ("rust-version-check" ,rust-version-check-0.1))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
-        ("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-jemallocator" ,rust-jemallocator-0.3)
-        ("rust-version-check" ,rust-version-check-0.9))))
+        ("rust-jemallocator" ,rust-jemallocator-0.1))))
     (home-page "https://github.com/Geal/nom")
     (synopsis
      "Byte-oriented, zero-copy, parser combinators library")
@@ -7780,6 +9054,29 @@ implementation (which is unstable / requires nightly).")
 combinators library.")
     (license license:expat)))
 
+(define-public rust-nom-3
+  (package
+    (inherit rust-nom-4.2)
+    (name "rust-nom")
+    (version "3.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nom" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0yr8fazcspgawl6s7wmx5llz61s68jl88cnrph18fa7xf06cbbh5"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; stream::tests::seeking_consumer fails
+       #:cargo-inputs
+       (("rust-compiler-error" ,rust-compiler-error-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-0.2)
+        ("rust-memchr" ,rust-memchr-1.0)
+        ("rust-regex" ,rust-regex-0.2))))))
+
 (define-public rust-nom-1.2
   (package
     (inherit rust-nom-4.2)
@@ -7798,10 +9095,70 @@ combinators library.")
       ;; This is an ancient version and all inputs are optional.
      `(#:skip-build? #t))))
 
+(define-public rust-num-0.2
+  (package
+    (name "rust-num")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0dhcvhprvvx1iaaq7sxlgxw5awmj8dibni8vhizi59zyz4q60lxq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.2)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-iter" ,rust-num-iter-0.1)
+        ("rust-num-rational" ,rust-num-rational-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2))))
+    (home-page "https://github.com/rust-num/num")
+    (synopsis "Collection of numeric types and traits for Rust")
+    (description
+     "This package provides a collection of numeric types and traits for Rust,
+including bigint, complex, rational, range iterators, generic integers, and more.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-num-bigint-0.2
+  (package
+    (name "rust-num-bigint")
+    (version "0.2.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num-bigint" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "015k3wixdi4w698sappvy43pf8bvkw0f88xplmdgc3zfk2cpy309"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-quickcheck-macros" ,rust-quickcheck-macros-0.8)
+        ("rust-rand" ,rust-rand-0.5)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-autocfg" ,rust-autocfg-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-test" ,rust-serde-test-1.0))))
+    (home-page "https://github.com/rust-num/num-bigint")
+    (synopsis "Big integer implementation for Rust")
+    (description
+     "Big integer implementation for Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-num-complex-0.2
   (package
     (name "rust-num-complex")
-    (version "0.2.3")
+    (version "0.2.4")
     (source
      (origin
        (method url-fetch)
@@ -7810,16 +9167,14 @@ combinators library.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1z6zjdzx1g1hj4y132ddy83d3p3zvw06igbf59npxxrzzcqwzc7w"))))
+         "15dwaksw729r3v14sgzc9723s3fnfixiir8jzwx7b7kim48r9cdn"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-num-traits" ,rust-num-traits-0.2)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-serde" ,rust-serde-1.0))
-       #:cargo-development-inputs
-       (("rust-autocfg" ,rust-autocfg-0.1))))
+        ("rust-rand" ,rust-rand-0.5)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-autocfg" ,rust-autocfg-1.0))))
     (home-page
      "https://github.com/rust-num/num-complex")
     (synopsis
@@ -7874,6 +9229,33 @@ combinators library.")
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3))))))
 
+(define-public rust-num-derive-0.2
+  (package
+    (name "rust-num-derive")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num-derive" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wnv7776fh4i40r3zfxcxcmm0dh029skx7gp4sjknz2kqm2hpzga"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))
+       #:cargo-development-inputs
+       (("rust-num" ,rust-num-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2))))
+    (home-page "https://github.com/rust-num/num-derive")
+    (synopsis "Numeric syntax extensions")
+    (description "Numeric syntax extensions in Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-num-integer-0.1
   (package
     (name "rust-num-integer")
@@ -7924,6 +9306,33 @@ combinators library.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-num-rational-0.2
+  (package
+    (name "rust-num-rational")
+    (version "0.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "num-rational" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18q3vq3xldhaj0z3f92am8f59m1awywgdj28c7wvx0bcksgwfkfs"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.2)
+        ("rust-num-integer" ,rust-num-integer-0.1)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-autocfg" ,rust-autocfg-1.0))))
+    (home-page "https://github.com/rust-num/num-rational")
+    (synopsis "Rational numbers implementation for Rust")
+    (description
+     "Rational numbers implementation for Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-num-traits-0.2
   (package
     (name "rust-num-traits")
@@ -8056,6 +9465,32 @@ wrapper for Rust.")
 try/catch statements.")
     (license license:expat)))
 
+(define-public rust-objc-foundation-0.1
+  (package
+    (name "rust-objc-foundation")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "objc-foundation" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1y9bwb3m5fdq7w7i4bnds067dhm4qxv4m1mbg9y61j9nkrjipp8s"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; Only available on macOS.
+       #:cargo-inputs
+       (("rust-block" ,rust-block-0.1)
+        ("rust-objc" ,rust-objc-0.2)
+        ("rust-objc-id" ,rust-objc-id-0.1))))
+    (home-page "http://github.com/SSheldon/rust-objc-foundation")
+    (synopsis "Rust wrapper for Objective-C's Foundation framework")
+    (description "This package provides a rust wrapper for Objective-C's
+Foundation framework.")
+    (license license:expat)))
+
 (define-public rust-objc-id-0.1
   (package
     (name "rust-objc-id")
@@ -8305,6 +9740,32 @@ system for OpenSSL.")
      "This package provides FFI bindings to OpenSSL for use in rust crates.")
     (license license:expat)))
 
+(define-public rust-ordered-float-1.0
+  (package
+    (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"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-test" ,rust-serde-test-1.0))))
+    (home-page "https://github.com/reem/rust-ordered-float")
+    (synopsis "Wrappers for total ordering on floats")
+    (description
+     "This package provides wrappers for total ordering on floats in Rust.")
+    (license license:expat)))
+
 (define-public rust-ordermap-0.3
   (package
     (name "rust-ordermap")
@@ -8365,6 +9826,28 @@ under its new name.")
      "A cross-platform library for opening OS pipes.")
     (license license:expat)))
 
+(define-public rust-osmesa-sys-0.1
+  (package
+    (name "rust-osmesa-sys")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "osmesa-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fq1q1zcgfb0qydrg9r2738jlwc4hqxgb9vj11z72bjxx7kfrkw8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-shared-library" ,rust-shared-library-0.1))))
+    (home-page "https://crates.io/crates/osmesa-sys")
+    (synopsis "OSMesa library bindings for Rust")
+    (description "This package provides OSMesa library bindings for Rust.")
+    (license license:cc0)))
+
 (define-public rust-owning-ref-0.4
   (package
     (name "rust-owning-ref")
@@ -8378,13 +9861,15 @@ under its new name.")
          (base32
           "04zgwy77lin8qz398s6g44467pd6kjhbrlqifkia5rkr47mbi929"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-stable-deref-trait" ,rust-stable-deref-trait-1.1))))
     (home-page "https://github.com/Kimundi/owning-ref-rs")
     (synopsis "Create references that carry their owner with them")
     (description
      "This package provides a library for creating references that carry their
 owner with them.  This can sometimes be useful because Rust borrowing rules
 normally prevent moving a type that has been borrowed from.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-packed-simd-0.3
@@ -8440,10 +9925,10 @@ normally prevent moving a type that has been borrowed from.")
       "This package provides a library for padding strings at runtime.")
     (license license:expat)))
 
-(define-public rust-parking-lot-0.9
+(define-public rust-parking-lot-0.10
   (package
     (name "rust-parking-lot")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
@@ -8452,18 +9937,16 @@ normally prevent moving a type that has been borrowed from.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0lk2vq3hp88ygpgsrypdr3ss71fidnqbykva0csgxhmn5scb2hpq"))))
+         "1z0wgf2sd1266y768kxxs3313zjfzj9r3k7j4arfaz0bmd4qrscj"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-lock-api" ,rust-lock-api-0.3)
-        ("rust-parking-lot-core" ,rust-parking-lot-core-0.6))
+        ("rust-parking-lot-core" ,rust-parking-lot-core-0.7))
        #:cargo-development-inputs
        (("rust-bincode" ,rust-bincode-1.1)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-rustc-version" ,rust-rustc-version-0.2))))
+        ("rust-rand" ,rust-rand-0.7))))
     (home-page "https://github.com/Amanieu/parking_lot")
     (synopsis "Compact standard synchronization primitives")
     (description
@@ -8471,6 +9954,31 @@ normally prevent moving a type that has been borrowed from.")
 synchronization primitives.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-parking-lot-0.9
+  (package
+    (inherit rust-parking-lot-0.10)
+    (name "rust-parking-lot")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "parking_lot" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0lk2vq3hp88ygpgsrypdr3ss71fidnqbykva0csgxhmn5scb2hpq"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-lock-api" ,rust-lock-api-0.3)
+        ("rust-parking-lot-core" ,rust-parking-lot-core-0.6))
+       #:cargo-development-inputs
+       (("rust-bincode" ,rust-bincode-1.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-rand" ,rust-rand-0.4)
+        ("rust-rustc-version" ,rust-rustc-version-0.2))))))
+
 (define-public rust-parking-lot-0.8
   (package
     (inherit rust-parking-lot-0.9)
@@ -8521,8 +10029,40 @@ synchronization primitives.")
         ("rust-rand" ,rust-rand-0.4)
         ("rust-rustc-version" ,rust-rustc-version-0.2))))))
 
+(define-public rust-parking-lot-core-0.7
+  (package
+    (name "rust-parking-lot-core")
+    (version "0.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "parking_lot_core" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wdbrvh35nn09ga570vl5062dpwfbrwgzyrlhhy78ifzhj2870km"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-backtrace" ,rust-backtrace-0.3)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-cloudabi" ,rust-cloudabi-0.0)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-petgraph" ,rust-petgraph-0.4)
+        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-thread-id" ,rust-thread-id-3.3)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/Amanieu/parking_lot")
+    (synopsis "API for creating custom synchronization primitives")
+    (description
+     "An advanced API for creating custom synchronization primitives in Rust.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-parking-lot-core-0.6
   (package
+    (inherit rust-parking-lot-core-0.7)
     (name "rust-parking-lot-core")
     (version "0.6.2")
     (source
@@ -8534,7 +10074,6 @@ synchronization primitives.")
        (sha256
         (base32
          "0ay67dpnrn68ryyvp720m9i8hzp189fd4d6slrs1lvmcwywv2xmq"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -8549,13 +10088,7 @@ synchronization primitives.")
         ("rust-thread-id" ,rust-thread-id-3.3)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
-       (("rust-rustc-version" ,rust-rustc-version-0.2))))
-    (home-page "https://github.com/Amanieu/parking_lot")
-    (synopsis
-     "Advanced API for creating custom synchronization primitives")
-    (description
-     "An advanced API for creating custom synchronization primitives.")
-    (license (list license:asl2.0 license:expat))))
+       (("rust-rustc-version" ,rust-rustc-version-0.2))))))
 
 (define-public rust-parking-lot-core-0.5
   (package
@@ -8979,8 +10512,7 @@ algorithms.")
          "0zjiblicfm0nrmr2xxrs6pnf6zz2394wgch6dcbd8jijkq98agmh"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-phf-generator" ,rust-phf-generator-0.7)
         ("rust-phf-shared" ,rust-phf-shared-0.7))))
     (home-page
@@ -9004,10 +10536,9 @@ algorithms.")
          "0qi62gxk3x3whrmw5c4i71406icqk11qmpgln438p6qm7k4lqdh9"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-phf-shared" ,rust-phf-shared-0.7)
-        ("rust-rand" ,rust-rand-0.4))))
+        ("rust-rand" ,rust-rand-0.6))))
     (home-page "https://github.com/sfackler/rust-phf")
     (synopsis "PHF generation logic")
     (description "PHF generation logic")
@@ -9028,12 +10559,12 @@ algorithms.")
          "0dzylcy14ksy60h265l433j9ra8xhg8xlq3pd5qk658m6f1mxd5x"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f      ; Depends on features not in Rust's stable release channel.
        #:cargo-inputs
        (("rust-phf-generator" ,rust-phf-generator-0.7)
         ("rust-phf-shared" ,rust-phf-shared-0.7)
         ("rust-proc-macro2" ,rust-proc-macro2-0.4)
-        ("rust-quote" ,rust-quote-1.0)
+        ("rust-quote" ,rust-quote-0.6)
         ("rust-syn" ,rust-syn-0.15))
        #:cargo-development-inputs
        (("rust-compiletest-rs" ,rust-compiletest-rs-0.3))))
@@ -9060,10 +10591,9 @@ algorithms.")
          "18371fla0vsj7d6d5rlfb747xbr2in11ar9vgv5qna72bnhp2kr3"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-siphasher" ,rust-siphasher-0.2)
-        ("rust-unicase" ,rust-unicase-2.4))))
+        ("rust-unicase" ,rust-unicase-1))))
     (home-page "https://github.com/sfackler/rust-phf")
     (synopsis "Support code shared by PHF libraries")
     (description
@@ -9267,7 +10797,7 @@ dependency to expose a precomputed hash.")
 (define-public rust-proc-macro-hack-0.5
   (package
     (name "rust-proc-macro-hack")
-    (version "0.5.7")
+    (version "0.5.11")
     (source
      (origin
        (method url-fetch)
@@ -9276,14 +10806,13 @@ dependency to expose a precomputed hash.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1www5lrvsk7pq04clgfmjlnnrshikgs1h51l17vrc7qy58bx878c"))))
+         "1idz5vmnjjhvr51yvwyjb45mza18wa53fr05m1skqvbdyw15gm7c"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-quote" ,rust-quote-1.0)
-        ("rust-syn" ,rust-syn-0.15))
+        ("rust-syn" ,rust-syn-1.0))
        #:cargo-development-inputs
        (("rust-demo-hack" ,rust-demo-hack-0.0)
         ("rust-demo-hack-impl" ,rust-demo-hack-impl-0.0))))
@@ -9294,6 +10823,28 @@ dependency to expose a precomputed hash.")
      "Procedural macros in expression position.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-proc-macro-hack-0.4
+  (package
+    (inherit rust-proc-macro-hack-0.5)
+    (name "rust-proc-macro-hack")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "proc-macro-hack" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fxn3qfhw76c518dfal2qqjwj5dbf0a1f7z0r5c4wd0igygg4fs6"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-proc-macro-hack-impl" ,rust-proc-macro-hack-impl-0.4))
+       #:cargo-development-inputs
+       (("rust-demo-hack" ,rust-demo-hack-0.0)
+        ("rust-demo-hack-impl" ,rust-demo-hack-impl-0.0))))))
+
 (define-public rust-proc-macro-hack-impl-0.4
   (package
     (name "rust-proc-macro-hack-impl")
@@ -9339,7 +10890,7 @@ dependency to expose a precomputed hash.")
 (define-public rust-proc-macro2-1.0
   (package
     (name "rust-proc-macro2")
-    (version "1.0.6")
+    (version "1.0.8")
     (source
       (origin
         (method url-fetch)
@@ -9347,11 +10898,10 @@ dependency to expose a precomputed hash.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "09rgb5ab0jgw39kyad0lgqs4nb9yaf7mwcrgxqnsxbn4il54g7lw"))))
+          "0j45p176fnw0d02dzcky9sxyr4fadiggq07skmblwspqdxy33jrs"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-unicode-xid" ,rust-unicode-xid-0.2))
        #:cargo-development-inputs
        (("rust-quote" ,rust-quote-1.0))))
@@ -9420,6 +10970,37 @@ in terms of the upstream unstable API.")
      "Hypothesis-like property-based testing and shrinking.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-proptest-0.8
+  (package
+    (inherit rust-proptest-0.9)
+    (name "rust-proptest")
+    (version "0.8.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "proptest" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "07qrxwsd72wr1cqs0b5b159lnagjffp0l4s4zriz8jak8w20cvcj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; 1 doc test fails
+       #:cargo-inputs
+       (("rust-bit-set" ,rust-bit-set-0.5)
+        ("rust-bitflags" ,rust-bitflags-1)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-quick-error" ,rust-quick-error-1.2)
+        ("rust-rand" ,rust-rand-0.5)
+        ("rust-regex-syntax" ,rust-regex-syntax-0.6)
+        ("rust-rusty-fork" ,rust-rusty-fork-0.2)
+        ("rust-tempfile" ,rust-tempfile-3.0))
+       #:cargo-development-inputs
+       (("rust-regex" ,rust-regex-1.1))))))
+
 (define-public rust-psm-0.1
   (package
     (name "rust-psm")
@@ -9502,6 +11083,85 @@ stack pointer and inspect the properties of the stack.")
      "This package provides a collection of approximate quantile algorithms.")
     (license license:expat)))
 
+(define-public rust-quasi-0.32
+  (package
+    (name "rust-quasi")
+    (version "0.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "quasi" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1csqqgz3aw85q570ywmhb34r3sqgi1sprf8xadfwzlfnai45ri0q"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-clippy" ,rust-clippy-0.0)
+        ("rust-syntex-errors" ,rust-syntex-errors-0.58)
+        ("rust-syntex-syntax" ,rust-syntex-syntax-0.58))))
+    (home-page "https://github.com/serde-rs/quasi")
+    (synopsis "Quasi-quoting macro system")
+    (description
+     "This package provides a quasi-quoting macro system.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-quasi-codegen-0.32
+  (package
+    (name "rust-quasi-codegen")
+    (version "0.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "quasi_codegen" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1m3nwzn5ip8y86cyfk6hdnbhiinsk2faag7l0cc4q11wl9gy5fai"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-aster" ,rust-aster-0.41)
+        ("rust-clippy" ,rust-clippy-0.0)
+        ("rust-syntex" ,rust-syntex-0.58)
+        ("rust-syntex-errors" ,rust-syntex-errors-0.58)
+        ("rust-syntex-syntax" ,rust-syntex-syntax-0.58))))
+    (home-page "https://github.com/serde-rs/quasi")
+    (synopsis "Quasi-quoting macro system")
+    (description "This package provides a quasi-quoting macro system.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-quasi-macros-0.32
+  (package
+    (name "rust-quasi-macros")
+    (version "0.32.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "quasi_macros" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1p825s96wa9xcc01pm5f4nlb01nx0pah50qnwkbncrw1q9xwiki9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-clippy" ,rust-clippy-0.0)
+        ("rust-quasi-codegen" ,rust-quasi-codegen-0.32))
+       #:cargo-development-inputs
+       (("rust-aster" ,rust-aster-0.41)
+        ("rust-quasi" ,rust-quasi-0.32))))
+    (home-page "https://github.com/serde-rs/quasi")
+    (synopsis "Quasi-quoting macro system")
+    (description "This package provides a quasi-quoting macro system.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-quick-error-1.2
   (package
     (name "rust-quick-error")
@@ -9523,10 +11183,37 @@ to write.")
     (license (list license:asl2.0
                    license:expat))))
 
-;; Many circular dependencies.
-;; Dev dependencies are allowed to have them in crates.io.
+(define-public rust-quickcheck-0.9
+  (package
+    (name "rust-quickcheck")
+    (version "0.9.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "quickcheck" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pwl7j21wmf843kpa9gr0byb40hg975ghjrwp0yxcym99bkq6j54"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-core" ,rust-rand-core-0.5))))
+    (home-page "https://github.com/BurntSushi/quickcheck")
+    (synopsis "Automatic property based testing with shrinking")
+    (description
+     "QuickCheck is a way to do property based testing using randomly generated
+input.  This crate comes with the ability to randomly generate and shrink
+integers, floats, tuples, booleans, lists, strings, options and results.")
+    (license (list license:unlicense license:expat))))
+
 (define-public rust-quickcheck-0.8
   (package
+    (inherit rust-quickcheck-0.9)
     (name "rust-quickcheck")
     (version "0.8.5")
     (source
@@ -9538,24 +11225,16 @@ to write.")
        (sha256
         (base32
          "0mkl4wnvvjk4m32aq3an4ayfyvnmbxnzcybfm7n3fbsndb1xjdcw"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-env-logger" ,rust-env-logger-0.6)
         ("rust-log" ,rust-log-0.4)
         ("rust-rand" ,rust-rand-0.6)
-        ("rust-rand-core" ,rust-rand-core-0.4))))
-    (home-page
-     "https://github.com/BurntSushi/quickcheck")
-    (synopsis
-     "Automatic property based testing with shrinking")
-    (description
-     "Automatic property based testing with shrinking.")
-    (license (list license:expat license:unlicense))))
+        ("rust-rand-core" ,rust-rand-core-0.4))))))
 
 (define-public rust-quickcheck-0.7
   (package
-    (inherit rust-quickcheck-0.8)
+    (inherit rust-quickcheck-0.9)
     (name "rust-quickcheck")
     (version "0.7.2")
     (source
@@ -9568,8 +11247,7 @@ to write.")
          (base32
           "05pqzja6fwdyrs1za5vmxb9ifb993knmpdsrs1fs2wyz9qz7slyl"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-env-logger" ,rust-env-logger-0.5)
         ("rust-log" ,rust-log-0.4)
         ("rust-rand" ,rust-rand-0.5)
@@ -9577,7 +11255,7 @@ to write.")
 
 (define-public rust-quickcheck-0.6
   (package
-    (inherit rust-quickcheck-0.8)
+    (inherit rust-quickcheck-0.9)
     (name "rust-quickcheck")
     (version "0.6.2")
     (source
@@ -9590,15 +11268,14 @@ to write.")
          (base32
           "1dyazm2fcq0v9fscq1a7597zsvdl9f0j8c2bfj1jm2nlzz2sn6y0"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-env-logger" ,rust-env-logger-0.5)
         ("rust-log" ,rust-log-0.4)
         ("rust-rand" ,rust-rand-0.4))))))
 
 (define-public rust-quickcheck-0.5
   (package
-    (inherit rust-quickcheck-0.8)
+    (inherit rust-quickcheck-0.9)
     (name "rust-quickcheck")
     (version "0.5.0")
     (source
@@ -9610,15 +11287,14 @@ to write.")
          (base32
           "1jzm1ygfbn4igaq14b9nipc8yvsn6c8panpgd1qiy5r2insjllyd"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-env-logger" ,rust-env-logger-0.4)
         ("rust-log" ,rust-log-0.3)
         ("rust-rand" ,rust-rand-0.3))))))
 
 (define-public rust-quickcheck-0.2
   (package
-    (inherit rust-quickcheck-0.8)
+    (inherit rust-quickcheck-0.9)
     (name "rust-quickcheck")
     (version "0.2.27")
     (source
@@ -9636,6 +11312,33 @@ to write.")
         ("rust-rand" ,rust-rand-0.3))
        #:skip-build? #t))))  ; Package needs 'unicode' crate.
 
+(define-public rust-quickcheck-macros-0.8
+  (package
+    (name "rust-quickcheck-macros")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "quickcheck_macros" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0b3mhn0xcrdd3fkbkx3rghhivwzwil8w991ngp6gaj70l72c3pyp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))
+       #:cargo-development-inputs
+       (("rust-quickcheck" ,rust-quickcheck-0.8))))
+    (home-page "https://github.com/BurntSushi/quickcheck")
+    (synopsis "Macro attribute for quickcheck")
+    (description
+     "This package provides a macro attribute for quickcheck.")
+    (license (list license:unlicense license:expat))))
+
 (define-public rust-quote-1.0
   (package
     (name "rust-quote")
@@ -9996,8 +11699,36 @@ generator that uses the HC-128 algorithm.")
      `(#:skip-build? #t
        #:cargo-inputs (("rust-rand-core" ,rust-rand-core-0.3))))))
 
+(define-public rust-rand-isaac-0.2
+  (package
+    (name "rust-rand-isaac")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rand_isaac" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xlb9415x518ffkazxhvk8b04i9i548nva4i5l5s34crvjrv1xld"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-bincode" ,rust-bincode-1.1))))
+    (home-page "https://crates.io/crates/rand_isaac")
+    (synopsis "ISAAC random number generator")
+    (description "This package implements the @code{ISAAC} and @code{ISAAC-64}
+random number generators.  ISAAC stands for \"Indirection, Shift, Accumulate,
+Add, and Count\" which are the principal bitwise operations employed.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rand-isaac-0.1
   (package
+    (inherit rust-rand-isaac-0.2)
     (name "rust-rand-isaac")
     (version "0.1.1")
     (source
@@ -10008,21 +11739,13 @@ generator that uses the HC-128 algorithm.")
         (sha256
          (base32
           "027flpjr4znx2csxk7gxb7vrf9c7y5mydmvg5az2afgisp4rgnfy"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-rand-core" ,rust-rand-core-0.3)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
-    (home-page "https://crates.io/crates/rand_isaac")
-    (synopsis "ISAAC random number generator")
-    (description "This package implements the @code{ISAAC} and @code{ISAAC-64}
-random number generators.  ISAAC stands for \"Indirection, Shift, Accumulate,
-Add, and Count\" which are the principal bitwise operations employed.")
-    (license (list license:asl2.0
-                   license:expat))))
+       (("rust-bincode" ,rust-bincode-1.1))))))
 
 (define-public rust-rand-jitter-0.1
   (package
@@ -10206,8 +11929,35 @@ generator based on timing jitter.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rand-xoshiro-0.4
+  (package
+    (name "rust-rand-xoshiro")
+    (version "0.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rand-xoshiro" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "013h45rikipv5bda2ixmwx5rwsk9wpc7mr0a77cz20hxi0pdvz59"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-bincode" ,rust-bincode-1.1))))
+    (home-page "https://crates.io/crates/rand_xoshiro")
+    (synopsis "Xoshiro, xoroshiro and splitmix64 random number generators")
+    (description "This package provides the xoshiro, xoroshiro and splitmix64
+random number generators.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rand-xoshiro-0.3
   (package
+    (inherit rust-rand-xoshiro-0.4)
     (name "rust-rand-xoshiro")
     (version "0.3.0")
     (source
@@ -10219,25 +11969,17 @@ generator based on timing jitter.")
        (sha256
         (base32
          "07w3qgrac8r356lz5vqff42rly6yd9vs3g5lx5pbn13rcmb05rqb"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
-    (home-page "https://github.com/rust-random/rand")
-    (synopsis
-     "Xoshiro, xoroshiro and splitmix64 random number generators")
-    (description
-     "Xoshiro, xoroshiro and splitmix64 random number generators.")
-    (license (list license:expat license:asl2.0))))
+       (("rust-bincode" ,rust-bincode-1.1))))))
 
 (define-public rust-rand-xoshiro-0.1
   (package
-    (inherit rust-rand-xoshiro-0.3)
+    (inherit rust-rand-xoshiro-0.4)
     (name "rust-rand-xoshiro")
     (version "0.1.0")
     (source
@@ -10251,13 +11993,34 @@ generator based on timing jitter.")
          "0ac9ha6ll8b6l1930bd99k29jrjpsbpddvr6ycrnbi5rkwb1id03"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-rand-core" ,rust-rand-core-0.3))
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.6))))))
 
+(define-public rust-raw-window-handle-0.3
+  (package
+    (name "rust-raw-window-handle")
+    (version "0.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "raw-window-handle" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04c2wir7qq3g2b143yav52a1g5ack8ffqx2bpmrn9bc0dix1li0a"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/rust-windowing/raw-window-handle")
+    (synopsis "Interoperability library for Rust Windowing applications")
+    (description
+     "Interoperability library for Rust Windowing applications.")
+    (license license:expat)))
+
 (define-public rust-rawpointer-0.1
   (package
     (name "rust-rawpointer")
@@ -10527,6 +12290,32 @@ system calls.")
 functionality.")
     (license license:expat)))
 
+(define-public rust-ref-cast-1.0
+  (package
+    (name "rust-ref-cast")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ref-cast" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vy378bdzb4kcz13kh96c5n5qw1jinhfrya5j4bf9rxz65x1jzq7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ref-cast-impl" ,rust-ref-cast-impl-1.0))
+       #:cargo-development-inputs
+       (("rust-rustversion" ,rust-rustversion-1.0)
+        ("rust-trybuild" ,rust-trybuild-1.0))))
+    (home-page "https://github.com/dtolnay/ref-cast")
+    (synopsis "Safely cast &T to &U")
+    (description
+     "Safely cast &T to &U where the struct U contains a single field of type T.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-ref-cast-0.2
   (package
     (name "rust-ref-cast")
@@ -10551,10 +12340,10 @@ functionality.")
      "Safely cast &T to &U where the struct U contains a single field of type T.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-ref-cast-impl-0.2
+(define-public rust-ref-cast-impl-1.0
   (package
     (name "rust-ref-cast-impl")
-    (version "0.2.6")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
@@ -10563,19 +12352,38 @@ functionality.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0hw0frpzna5rf5szix56zyzd0vackcb3svj94ndj629xi75dkb32"))))
+         "07rc752npmkyc5b8xcqk2ydbl3gxi1n4fzrq0wx9wz5qd4mvavn3"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-quote" ,rust-quote-1.0)
-        ("rust-syn" ,rust-syn-0.15))))
+        ("rust-syn" ,rust-syn-1.0))))
     (home-page "https://github.com/dtolnay/ref-cast")
     (synopsis "Derive implementation for @code{ref_cast::RefCast}")
     (description
-     "Derive implementation for ref_cast::RefCast.")
-    (license (list license:asl2.0 license:expat))))
+     "Derive implementation for @code{ref_cast::RefCast}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-ref-cast-impl-0.2
+  (package
+    (inherit rust-ref-cast-impl-1.0)
+    (name "rust-ref-cast-impl")
+    (version "0.2.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "ref-cast-impl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hw0frpzna5rf5szix56zyzd0vackcb3svj94ndj629xi75dkb32"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))))))
 
 (define-public rust-regex-1.3
   (package
@@ -11114,6 +12922,32 @@ rustc compiler.")
      "Automatically apply the suggestions made by rustc.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustversion-1.0
+  (package
+    (name "rust-rustversion")
+    (version "1.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustversion" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1xkr1g792w728py2qpg2zj0vfviv2xzmxkkd9w6035l9d5ss3fxk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
+    (home-page "https://github.com/dtolnay/rustversion")
+    (synopsis "Conditional compilation according to rustc compiler version")
+    (description
+     "This package provides conditional compilation according to the
+@code{rustc} compiler version.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustversion-0.1
   (package
     (name "rust-rustversion")
@@ -11228,8 +13062,7 @@ quickly convert floating point numbers to decimal strings.")
           "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-winapi-util" ,rust-winapi-util-0.1))
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3))))
@@ -11241,6 +13074,28 @@ paths point to the same file.")
     (license (list license:unlicense
                    license:expat))))
 
+(define-public rust-same-file-0.1
+  (package
+    (inherit rust-same-file-1.0)
+    (name "rust-same-file")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "same-file" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19qpl6j8s3ph9jm8rh1k0wp2nkyw5ah34xly00vqcfx4v97s8cfr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-winapi" ,rust-winapi-0.2))
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.3))))))
+
 (define-public rust-schannel-0.1
   (package
     (name "rust-schannel")
@@ -11455,7 +13310,7 @@ proven statistical guarantees.")
 (define-public rust-security-framework-sys-0.3
   (package
     (name "rust-security-framework-sys")
-    (version "0.3.1")
+    (version "0.3.3")
     (source
       (origin
         (method url-fetch)
@@ -11463,13 +13318,15 @@ proven statistical guarantees.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0mlsakq9kmqyc0fg2hcbgm6rjk55mb0rhjw2wid3hqdzkjcghdln"))))
+          "15gqhhi206lzynd0pcbswxhvqc4p9bmpl2h9qnwfnpb16zy96573"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-core-foundation-sys" ,rust-core-foundation-sys-0.6))))
     (home-page "https://lib.rs/crates/security-framework-sys")
     (synopsis "Apple `Security.framework` low-level FFI bindings")
     (description
-     "Apple `Security.framework` low-level FFI bindings.")
-    (properties '((hidden? . #t)))
+     "Apple @code{Security.framework} low-level FFI bindings.")
     (license (list license:asl2.0
                    license:expat))))
 
@@ -11634,8 +13491,34 @@ proven statistical guarantees.")
      "Optimized handling of @code{&[u8]} and @code{Vec<u8>} for Serde.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-serde-cbor-0.11
+  (package
+    (name "rust-serde-cbor")
+    (version "0.11.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serde-cbor" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "08m62mfqjnpa543kd9r9cyxlqc6y73avhsl3n8svgs4h5zxaq60y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-half" ,rust-half-1.3)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/pyfisch/cbor")
+    (synopsis "CBOR support for serde")
+    (description "CBOR support for serde.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-serde-cbor-0.10
   (package
+    (inherit rust-serde-cbor-0.11)
     (name "rust-serde-cbor")
     (version "0.10.2")
     (source
@@ -11647,7 +13530,6 @@ proven statistical guarantees.")
        (sha256
         (base32
          "0kyizacjabsa78p9f7qvj31zirpnsgsr4zpfv1p6lwpcb3biw27p"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -11655,10 +13537,37 @@ proven statistical guarantees.")
         ("rust-half" ,rust-half-1.3)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-serde-derive" ,rust-serde-derive-1.0))))
-    (home-page "https://github.com/pyfisch/cbor")
-    (synopsis "CBOR support for serde")
-    (description "CBOR support for serde.")
+       (("rust-serde-derive" ,rust-serde-derive-1.0))))))
+
+(define-public rust-serde-codegen-0.4
+  (package
+    (name "rust-serde-codegen")
+    (version "0.4.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "serde_codegen" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0167ghvqs0n8qin8fjx2ihn3gx92m55685qpv4nzihw48h4rq0vq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-aster" ,rust-aster-0.41)
+        ("rust-quasi" ,rust-quasi-0.32)
+        ("rust-quasi-macros" ,rust-quasi-macros-0.32)
+        ("rust-syntex" ,rust-syntex-0.58)
+        ("rust-syntex-syntax" ,rust-syntex-syntax-0.58))
+       #:cargo-development-inputs
+       (("rust-quasi-codegen" ,rust-quasi-codegen-0.32)
+        ("rust-syntex" ,rust-syntex-0.58))))
+    (home-page "https://serde.rs")
+    (synopsis "Macros for the serde framework")
+    (description "This package provides macros to auto-generate implementations
+for the serde framework.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-serde-derive-1.0
@@ -11907,6 +13816,30 @@ proven statistical guarantees.")
      "A library for using child processes from multiple threads.")
     (license license:expat)))
 
+(define-public rust-shared-library-0.1
+  (package
+    (name "rust-shared-library")
+    (version "0.1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "shared_library" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "04fs37kdak051hm524a360978g58ayrcarjsbf54vqps5c7px7js"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/tomaka/shared_library/")
+    (synopsis "Bind to and load shared libraries")
+    (description
+     "This package allows easy binding to, and loading of, shared libraries.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-shlex-0.1
   (package
     (name "rust-shlex")
@@ -11930,7 +13863,7 @@ words, like Python's shlex.")
 (define-public rust-signal-hook-0.1
   (package
     (name "rust-signal-hook")
-    (version "0.1.9")
+    (version "0.1.13")
     (source
      (origin
        (method url-fetch)
@@ -11939,16 +13872,15 @@ words, like Python's shlex.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0nlw1gwi58ppds5klyy8vp2ickx3majvdp1pcdz8adm4zpqmiavj"))))
+         "0b0yh6hlb5hs5kq6adyk0bn168y1ncymxvlizlygaabad2hz7f8h"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-futures" ,rust-futures-0.1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-mio" ,rust-mio-0.6)
         ("rust-mio-uds" ,rust-mio-uds-0.6)
-        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1.0)
+        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1.2)
         ("rust-tokio-reactor" ,rust-tokio-reactor-0.1))
        #:cargo-development-inputs
        (("rust-tokio" ,rust-tokio-0.1)
@@ -11958,10 +13890,10 @@ words, like Python's shlex.")
     (description "Unix signal handling.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-signal-hook-registry-1.0
+(define-public rust-signal-hook-registry-1.2
   (package
     (name "rust-signal-hook-registry")
-    (version "1.0.1")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
@@ -11970,12 +13902,11 @@ words, like Python's shlex.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1mw5v909fn99h5qb96ma4almlik80lr1c7xbakn24rql6bx4zvfd"))))
+         "0haz828bif1lbp3alx17zkcy5hwy15bbpmvks72j8iznx7npix4l"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-arc-swap" ,rust-arc-swap-0.3)
+     `(#:cargo-inputs
+       (("rust-arc-swap" ,rust-arc-swap-0.4)
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
        (("rust-signal-hook" ,rust-signal-hook-0.1)
@@ -11983,6 +13914,59 @@ words, like Python's shlex.")
     (home-page "https://github.com/vorner/signal-hook")
     (synopsis "Backend crate for signal-hook")
     (description "Backend crate for signal-hook.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-signal-hook-registry-1.0
+  (package
+    (inherit rust-signal-hook-registry-1.2)
+    (name "rust-signal-hook-registry")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "signal-hook-registry" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mw5v909fn99h5qb96ma4almlik80lr1c7xbakn24rql6bx4zvfd"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-arc-swap" ,rust-arc-swap-0.3)
+        ("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-signal-hook" ,rust-signal-hook-0.1)
+        ("rust-version-sync" ,rust-version-sync-0.8))))))
+
+(define-public rust-simd-0.2
+  (package
+    (name "rust-simd")
+    (version "0.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "simd" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1dgpmfzd4favsckd5m0p6bna1dcgw19hjigkqcgwfhc4d05hxczj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t     ; Crate no longer builds on Rust 1.33+
+       #:cargo-inputs
+       (("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))
+       #:cargo-development-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1))))
+    (home-page "https://github.com/hsivonen/simd")
+    (synopsis "Limited cross-platform access to SIMD instructions on CPUs")
+    (description
+     "@code{simd} offers limited cross-platform access to SIMD instructions on
+CPUs, as well as raw interfaces to platform-specific instructions.
+(To be obsoleted by the @code{std::simd} implementation RFC 2366.)
+")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-siphasher-0.2
@@ -11999,7 +13983,6 @@ words, like Python's shlex.")
         (base32
          "1b53m53l24lyhr505lwqzrpjyq5qfnic71mynrcfvm43rybf938b"))))
     (build-system cargo-build-system)
-    (arguments `(#:skip-build? #t))
     (home-page "https://docs.rs/siphasher")
     (synopsis "SipHash functions from rust-core < 1.13")
     (description
@@ -12081,10 +14064,10 @@ data type.")
                    license:expat
                    license:asl2.0))))
 
-(define-public rust-smallvec-0.6
+(define-public rust-smallvec-1
   (package
     (name "rust-smallvec")
-    (version "0.6.10")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
@@ -12093,11 +14076,10 @@ data type.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1dyl43rgzny79jjpgzi07y0ly2ggx1xwsn64csxj0j91bsf6lq5b"))))
+         "1z6f47i3qpg9pdjzzvb0g5i1vvdm2ymk3kqc1mdnl8fdkgnb4bsw"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
        (("rust-bincode" ,rust-bincode-1.1))))
@@ -12108,6 +14090,27 @@ data type.")
 stack.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-smallvec-0.6
+  (package
+    (inherit rust-smallvec-1)
+    (name "rust-smallvec")
+    (version "0.6.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "smallvec" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1dl219vnfkmsfx28lm3f83lyw24zap6fdsli6rg8nnp1aa67bc7p"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-maybe-uninit" ,rust-maybe-uninit-2.0)
+        ("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-bincode" ,rust-bincode-1.1))))))
+
 (define-public rust-socket2-0.3
   (package
     (name "rust-socket2")
@@ -12225,6 +14228,29 @@ initializers are available.")
          "07ywqn1vrpi3c43fmvsx7pawk9h3rb77yyqbnhap2micl454kb6f"))))
     (arguments '(#:skip-build? #t))))
 
+(define-public rust-spsc-buffer-0.1
+  (package
+    (name "rust-spsc-buffer")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "spsc-buffer" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fsv5zpxkax2n46flxhyajq1yblgh8f33la39gp86hksqcwkyv5y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.2))))
+    (home-page "https://github.com/davidhewitt/spsc-buffer")
+    (synopsis "Single-producer single-consumer lock-free buffer")
+    (description
+     "This package provides a single-producer single-consumer lock-free buffer.")
+    (license license:expat)))
+
 (define-public rust-stable-deref-trait-1.1
   (package
     (name "rust-stable-deref-trait")
@@ -12324,10 +14350,38 @@ deeply recursive algorithms that may accidentally blow the stack.")
 are met.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-stb-truetype-0.3
+  (package
+    (name "rust-stb-truetype")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "stb_truetype" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0lgvnh3ma6cz811bk8imj45djz76zs47b8327sgnmik2x03nnyzp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; tests not included in release
+       #:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-libm" ,rust-libm-0.2))
+       #:cargo-development-inputs
+       (("rust-approx" ,rust-approx-0.3))))
+    (home-page "https://gitlab.redox-os.org/redox-os/stb_truetype-rs")
+    (synopsis "Translation of the font loading code to Rust")
+    (description
+     "This package provides a straight translation of the font loading code
+in @code{stb_truetype.h} from C to Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-stdweb-0.4
   (package
     (name "rust-stdweb")
-    (version "0.4.17")
+    (version "0.4.20")
     (source
      (origin
        (method url-fetch)
@@ -12336,7 +14390,7 @@ are met.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "094giad1v81rxxs4izf88ijc9c6w3c7cr5a7cwwr86mc22xn4hy3"))))
+         "1md14n9rzxzdskz3hpgln8vxfwqsw2cswc0f5nslh4r82rmlj8nh"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -12368,7 +14422,7 @@ Web.")
 (define-public rust-stdweb-derive-0.5
   (package
     (name "rust-stdweb-derive")
-    (version "0.5.1")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
@@ -12377,26 +14431,27 @@ Web.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0c1rxx6rqcc4iic5hx320ki3vshpi8k58m5600iqzq4x2zcyn88f"))))
+         "1vsh7g0gaxn4kxqq3knhymdn02p2pfxmnd2j0vplpj6c1yj60yn8"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
-       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-quote" ,rust-quote-1.0)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
-        ("rust-syn" ,rust-syn-0.15))))
+        ("rust-syn" ,rust-syn-1.0))))
     (home-page "https://github.com/koute/stdweb")
     (synopsis "Derive macros for the stdweb crate")
     (description
-     "Derive macros for the @code{stdweb} crate.")
+     "This crate currently defines a derive macro for @code{stdweb} which allows
+you to define custom reference types outside of the @code{stdweb} library.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-stdweb-internal-macros-0.2
   (package
     (name "rust-stdweb-internal-macros")
-    (version "0.2.7")
+    (version "0.2.9")
     (source
      (origin
        (method url-fetch)
@@ -12405,23 +14460,22 @@ Web.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1yjrmkc6sb1035avic383pa3avk2s9k3n17yjcza8yb9nw47v3z6"))))
+         "049fq8fl5ny9l5if2qv7kxwng7g6ns95h4fbm3zx360dmpv5zyjq"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-base-x" ,rust-base-x-0.2)
-        ("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-quote" ,rust-quote-1.0)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
         ("rust-sha1" ,rust-sha1-0.6)
-        ("rust-syn" ,rust-syn-0.15))))
+        ("rust-syn" ,rust-syn-1.0))))
     (home-page "https://github.com/koute/stdweb")
     (synopsis "Internal procedural macros for the stdweb crate")
     (description
-     "Internal procedural macros for the stdweb crate.")
+     "Internal procedural macros for the @code{stdweb} crate.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-stdweb-internal-runtime-0.1
@@ -12830,9 +14884,111 @@ cryptographic implementations.")
     (synopsis "Helper test traits for synstructure doctests")
     (description
      "This package provides helper test traits for synstructure doctests.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
+(define-public rust-syntex-0.58
+ (package
+   (name "rust-syntex")
+   (version "0.58.1")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (crate-uri "syntex" version))
+      (file-name
+       (string-append name "-" version ".tar.gz"))
+      (sha256
+       (base32
+        "03lgd36cxhc6gzaab0wqvckbhml00s6s73lk34ymf6cklymf7xd8"))))
+   (build-system cargo-build-system)
+   (arguments
+    `(#:skip-build? #t
+      #:cargo-inputs
+      (("rust-syntex-errors" ,rust-syntex-errors-0.58)
+       ("rust-syntex-syntax" ,rust-syntex-syntax-0.58))))
+   (home-page "https://github.com/erickt/rust-syntex")
+   (synopsis "Compile time syntax extension expansion")
+   (description
+    "This package provides a library that enables compile time
+syntax extension expansion.")
+   (license (list license:expat license:asl2.0))))
+
+(define-public rust-syntex-errors-0.58
+  (package
+    (name "rust-syntex-errors")
+    (version "0.58.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "syntex_errors" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "176vma7sjv6li17q7dsilryac66b76zyis9ampmff2hlsz1caz46"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-syntex-pos" ,rust-syntex-pos-0.58)
+        ("rust-term" ,rust-term-0.4)
+        ("rust-unicode-xid" ,rust-unicode-xid-0.0))))
+    (home-page "https://github.com/serde-rs/syntex")
+    (synopsis "Backport of librustc_errors")
+    (description "This package provides a backport of @code{librustc_errors}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-syntex-pos-0.58
+  (package
+    (name "rust-syntex-pos")
+    (version "0.58.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "syntex_pos" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0iqhircpr723da1g97xrrj8smqqz3gxw91cf03sckasjzri4gb8k"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))
+    (home-page "https://github.com/serde-rs/syntex")
+    (synopsis "Backport of libsyntax_pos")
+    (description "This package provides a backport of @code{libsyntax_pos}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-syntex-syntax-0.58
+  (package
+    (name "rust-syntex-syntax")
+    (version "0.58.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "syntex_syntax" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "14f74l7yzwl6fr9i23k4j23k66qn0gakvhk4jjc9ipb3w6x4s3kf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-0.8)
+        ("rust-log" ,rust-log-0.3)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-syntex-errors" ,rust-syntex-errors-0.58)
+        ("rust-syntex-pos" ,rust-syntex-pos-0.58)
+        ("rust-unicode-xid" ,rust-unicode-xid-0.0))))
+    (home-page "https://github.com/serde-rs/syntex")
+    (synopsis "Backport of libsyntax")
+    (description "This package provides a backport of libsyntax.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-sysctl-0.4
   (package
     (name "rust-sysctl")
@@ -12895,6 +15051,15 @@ cryptographic implementations.")
          (base32
           "1lr6v3cpkfxd2lk5ll2jd8wr1xdskwj35smnh5sfb8xvzzxnn6dk"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Test tarballs not included in crate.
+       #:cargo-inputs
+       (("rust-filetime" ,rust-filetime-0.2)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+        ("rust-xattr" ,rust-xattr-0.2))
+       #:cargo-development-inputs
+       (("rust-tempdir" ,rust-tempdir-0.3))))
     (home-page "https://github.com/alexcrichton/tar-rs")
     (synopsis "Tar file reading/writing for Rust")
     (description
@@ -12903,7 +15068,6 @@ writer.  This library does not currently handle compression, but it is abstract
 over all I/O readers and writers.  Additionally, great lengths are taken to
 ensure that the entire contents are never required to be entirely resident in
 memory all at once.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -12974,7 +15138,7 @@ deleting all contents when it's dropped.")
         ("rust-redox-syscall" ,rust-redox-syscall-0.1)
         ("rust-remove-dir-all" ,rust-remove-dir-all-0.5)
         ("rust-winapi" ,rust-winapi-0.3))))
-    (home-page "http://stebalien.com/projects/tempfile-rs")
+    (home-page "https://stebalien.com/projects/tempfile-rs")
     (synopsis "Library for managing temporary files and directories")
     (description
      "This package provides a library for managing temporary files and
@@ -13035,8 +15199,33 @@ directories.")
      "Compact buffer/string type for zero-copy parsing.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-term-0.6
+ (package
+   (name "rust-term")
+   (version "0.6.1")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (crate-uri "term" version))
+      (file-name
+       (string-append name "-" version ".tar.gz"))
+      (sha256
+       (base32
+        "1ddqxq9hrk8zqq1f8pqhz72vrlfc8vh2xcza2gb623z78lrkm1n0"))))
+   (build-system cargo-build-system)
+   (arguments
+    `(#:cargo-inputs
+      (("rust-dirs" ,rust-dirs-2.0)
+       ("rust-winapi" ,rust-winapi-0.3))))
+   (home-page "https://github.com/Stebalien/term")
+   (synopsis "Terminal formatting library")
+   (description
+    "This package provides a terminal formatting library.")
+   (license (list license:expat license:asl2.0))))
+
 (define-public rust-term-0.5
   (package
+    (inherit rust-term-0.6)
     (name "rust-term")
     (version "0.5.2")
     (source
@@ -13048,23 +15237,15 @@ directories.")
        (sha256
         (base32
          "0hkgjrfisj6zjwz525639pmsvzhlc48a0h65nw87qrdp6jihdlgd"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-dirs" ,rust-dirs-1.0)
-        ("rust-winapi" ,rust-winapi-0.3))))
-    (home-page "https://github.com/Stebalien/term")
-    (synopsis "Terminal formatting library")
-    (description
-     "This package provides a terminal formatting library in rust.")
-    (license (list license:asl2.0
-                   license:expat))))
+        ("rust-winapi" ,rust-winapi-0.3))))))
 
 (define-public rust-term-0.4
   (package
-    (inherit rust-term-0.5)
+    (inherit rust-term-0.6)
     (name "rust-term")
     (version "0.4.6")
     (source
@@ -13076,8 +15257,7 @@ directories.")
          (base32
           "1wbh8ngqkqr3f6wz902yplf60bd5yapnckvrkgmzp5nffi7n8qzs"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
         ("rust-winapi" ,rust-winapi-0.2))))))
 
@@ -13177,10 +15357,35 @@ writing colored text to a terminal.")
     (license (list license:unlicense
                    license:expat))))
 
+(define-public rust-terminfo-0.6
+  (package
+    (name "rust-terminfo")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "terminfo" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17k8vqvicd6yg0iqmkjnxjhz8h8pknv86r03nq3f3ayjmxdhclcf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-fnv" ,rust-fnv-1.0)
+        ("rust-nom" ,rust-nom-4.2)
+        ("rust-phf" ,rust-phf-0.7)
+        ("rust-phf-codegen" ,rust-phf-codegen-0.7))))
+    (home-page "https://github.com/meh/rust-terminfo")
+    (synopsis "Terminal information")
+    (description "Terminal capabilities with type-safe getters.")
+    (license license:wtfpl2)))
+
 (define-public rust-termion-1.5
   (package
     (name "rust-termion")
-    (version "1.5.3")
+    (version "1.5.5")
     (source
       (origin
         (method url-fetch)
@@ -13188,13 +15393,19 @@ writing colored text to a terminal.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0c634rg520zjjfhwnxrc2jbfjz7db0rcpsjs1qici0nyghpv53va"))))
+          "01f9787d5nx445bqbj644v38bn0hl2swwjy9baz0dnbqi6fyqb62"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Tests want a terminal.
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-numtoa" ,rust-numtoa-0.1)
+        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+        ("rust-redox-termios" ,rust-redox-termios-0.1))))
     (home-page "https://gitlab.redox-os.org/redox-os/termion")
     (synopsis "Library for manipulating terminals")
     (description
      "This package provides a bindless library for manipulating terminals.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-termios-0.3
@@ -13210,6 +15421,9 @@ writing colored text to a terminal.")
          (base32
           "09any1p4jp4bphvb5ikagnvwjc3xn2djchy96nkpa782xb2j1dkj"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2))))
     (home-page  "https://github.com/dcuddeback/termios-rs")
     (synopsis "Safe bindings for the termios library")
     (description
@@ -13217,7 +15431,6 @@ writing colored text to a terminal.")
 to the terminal I/O interface implemented by Unix operating systems.  The safe
 bindings are a small wrapper around the raw C functions, which converts integer
 return values to @code{std::io::Result} to indicate success or failure.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-test-assembler-0.1
@@ -13297,6 +15510,60 @@ handle Unicode characters correctly.")
     (properties '((hidden? . #t)))
     (license license:expat)))
 
+(define-public rust-thiserror-1.0
+  (package
+    (name "rust-thiserror")
+    (version "1.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "thiserror" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0zlp3kzjssl1ndqmn7cipqnyggq4851ghhqj4bfc4fxk2hc7sdbg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-thiserror-impl" ,rust-thiserror-impl-1.0))
+       #:cargo-development-inputs
+       (("rust-anyhow" ,rust-anyhow-1.0)
+        ("rust-ref-cast" ,rust-ref-cast-1.0)
+        ("rust-rustversion" ,rust-rustversion-1.0)
+        ("rust-trybuild" ,rust-trybuild-1.0))))
+    (home-page "https://github.com/dtolnay/thiserror")
+    (synopsis "derive(Error)")
+    (description "This package provides @code{derive(Error)} in Rust.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-thiserror-impl-1.0
+  (package
+    (name "rust-thiserror-impl")
+    (version "1.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "thiserror-impl" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vxzhb98pm5yrq9mmcz50bgpml35iyx7lwjgi4v89sq7ag92abpb"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
+    (home-page "https://github.com/dtolnay/thiserror")
+    (synopsis "Implementation detail of the thiserror crate")
+    (description "This package provides an implementation detail of the
+@code{thiserror} crate.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-thread-id-3.3
   (package
     (name "rust-thread-id")
@@ -13310,15 +15577,38 @@ handle Unicode characters correctly.")
          (base32
           "1h90v19fjz3x9b25ywh68z5yf2zsmm6h5zb4rl302ckbsp4z9yy7"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/ruuda/thread-id")
     (synopsis "Get a unique ID for the current thread in Rust")
     (description
      "For diagnostics and debugging it can often be useful to get an ID that is
 different for every thread.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-thread-id-2.0
+  (package
+    (inherit rust-thread-id-3.3)
+    (name "rust-thread-id")
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "thread-id" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+        ("rust-libc" ,rust-libc-0.2))))))
+
 (define-public rust-thread-local-1.0
   (package
     (name "rust-thread-local")
@@ -13358,6 +15648,24 @@ different for every thread.")
      `(#:skip-build? #t
        #:cargo-inputs (("rust-lazy-static" ,rust-lazy-static-1))))))
 
+(define-public rust-thread-local-0.2
+  (package
+    (inherit rust-thread-local-0.3)
+    (name "rust-thread-local")
+    (version "0.2.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "thread_local" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-thread-id" ,rust-thread-id-2.0))))))
+
 (define-public rust-threadpool-1.7
   (package
     (name "rust-threadpool")
@@ -13371,12 +15679,14 @@ different for every thread.")
          (base32
           "0rd89n1q7vy47w4c32cnynibffv9kj3jy3dwr0536n9lbw5ckw72"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-cpus" ,rust-num-cpus-1.11))))
     (home-page "https://github.com/rust-threadpool/rust-threadpool")
     (synopsis "Thread pool for running jobs on a fixed set of worker threads")
     (description
      "This package provides a thread pool for running a number of jobs on a
 fixed set of worker threads.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -13728,10 +16038,12 @@ futures efficiently")
          (base32
           "1y7q83qfk9ljjfvs82b453pmz9x1v3d6kr4x55j8mal01s6790dw"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-futures" ,rust-futures-0.1))))
     (home-page  "https://github.com/carllerche/tokio-mock-task")
     (synopsis "Mock a Tokio task")
-    (description "Mock a Tokio task")
-    (properties '((hidden? . #t)))
+    (description "Mock a Tokio task.")
     (license license:expat)))
 
 (define-public rust-tokio-process-0.2
@@ -14100,7 +16412,7 @@ serializing Rust structures.")
 (define-public rust-tracing-core-0.1
   (package
     (name "rust-tracing-core")
-    (version "0.1.2")
+    (version "0.1.9")
     (source
       (origin
         (method url-fetch)
@@ -14108,13 +16420,15 @@ serializing Rust structures.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "01fa73wzw2m5ybi3kkd52dgrw97mgc3i6inmhwys46ab28giwnxi"))))
+          "0y0rcvvqq89yaiz0qdx88byxgz8j6hsm9slq8d5vvf3jwc8nz90k"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1))))
     (home-page "https://tokio.rs")
     (synopsis "Core primitives for application-level tracing")
     (description
      "Core primitives for application-level tracing.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14150,11 +16464,13 @@ serializing Rust structures.")
          (base32
           "12wdd4ja7047sd3rx70hv2056hyc8gcdllcx3a41g1rnw64kng98"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1))))
     (home-page "https://github.com/derekjw/try_from")
     (synopsis "TryFrom and TryInto traits for failable conversions")
     (description
-      "TryFrom and TryInto traits for failable conversions that return a Result.")
-    (properties '((hidden? . #t)))
+     "TryFrom and TryInto traits for failable conversions that return a Result.")
     (license license:expat)))
 
 (define-public rust-try-lock-0.2
@@ -14174,7 +16490,6 @@ serializing Rust structures.")
     (synopsis "Lightweight atomic lock")
     (description
      "This package provides a lightweight atomic lock.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-trybuild-1.0
@@ -14222,7 +16537,6 @@ serializing Rust structures.")
     (home-page "https://github.com/reem/rust-typeable")
     (synopsis "Exposes Typeable, for getting TypeIds at runtime")
     (description "Exposes Typeable, for getting TypeIds at runtime.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
 (define-public rust-typed-arena-1.4
@@ -14287,7 +16601,6 @@ serializing Rust structures.")
 compile time.  It currently supports bits, unsigned integers, and signed
 integers.  It also provides a type-level array of type-level numbers, but its
 implementation is incomplete.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14330,18 +16643,20 @@ Unicode character database.")
          (base32
           "1hh6kyzh5xygwy96wfmsf8v8czlzhps2lgbcyhj1xzy1w1xys04g"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1))))
     (home-page "https://github.com/BurntSushi/ucd-generate")
     (synopsis "Trie for storing Unicode codepoint sets and maps")
     (description
      "This package provides a trie for storing Unicode codepoint sets and maps.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
 (define-public rust-ucd-util-0.1
   (package
     (name "rust-ucd-util")
-    (version "0.1.5")
+    (version "0.1.7")
     (source
       (origin
         (method url-fetch)
@@ -14349,13 +16664,12 @@ Unicode character database.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0x088q5z0m09a2jqcfgsnq955y8syn1mgn35cl78qinkxm4kp6zs"))))
+          "13ng291mkc9b132jjf4laj76f5nqm5qd2447rm8bry3wxbdc5kaw"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/BurntSushi/ucd-generate")
     (synopsis "library for working with the Unicode character database")
     (description "This package provides a small utility library for working
 with the Unicode character database.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14402,6 +16716,26 @@ with the Unicode character database.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-unicase-1
+  (package
+    (inherit rust-unicase-2.4)
+    (name "rust-unicase")
+    (version "1.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "unicase" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cwazh4qsmm9msckjk86zc1z35xg7hjxjykrgjalzdv367w6aivz"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-heapsize" ,rust-heapsize-0.3)
+        ("rust-heapsize-plugin" ,rust-heapsize-plugin-0.1)
+        ("rust-version-check" ,rust-version-check-0.1))))))
+
 (define-public rust-unicode-bidi-0.3
   (package
     (name "rust-unicode-bidi")
@@ -14500,7 +16834,7 @@ boundaries according to Unicode Standard Annex #29 rules.")
 (define-public rust-unicode-width-0.1
   (package
     (name "rust-unicode-width")
-    (version "0.1.6")
+    (version "0.1.7")
     (source
       (origin
         (method url-fetch)
@@ -14508,13 +16842,17 @@ boundaries according to Unicode Standard Annex #29 rules.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "082f9hv1r3gcd1xl33whjhrm18p0w9i77zhhhkiccb5r47adn1vh"))))
+          "0yflmxkxmm89ckrb3sz58whn491aycrj8cxra0hzzlb72x9rvana"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
+        ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0)
+        ("rust-rustc-std-workspace-std" ,rust-rustc-std-workspace-std-1.0))))
     (home-page "https://github.com/unicode-rs/unicode-width")
     (synopsis "Determine displayed width according to Unicode rules")
     (description "This crate allows you to determine displayed width of
 @code{char} and @code{str} types according to Unicode Standard Annex #11 rules.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14583,7 +16921,6 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
     (synopsis "Remove a column of leading whitespace from a string")
     (description "This crate allows you to remove a column of leading
 whitespace from a string.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14600,11 +16937,13 @@ whitespace from a string.")
          (base32
           "0mps2il4xy2mjqc3appas27hhn2xmvixc3bzzhfrjj74gy3i0a1q"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-void" ,rust-void-1.0))))
     (home-page "https://github.com/reem/rust-unreachable")
     (synopsis "Unreachable code optimization hint in rust")
     (description
      "This package provides an unreachable code optimization hint in rust.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14648,7 +16987,6 @@ whitespace from a string.")
     (description
      "Safe, fast, zero-panic, zero-crashing, zero-allocation parsing of
 untrusted inputs in Rust.")
-    (properties '((hidden? . #t)))
     (license license:isc)))
 
 (define-public rust-url-2.1
@@ -14839,7 +17177,7 @@ Unix users and groups.")
 (define-public rust-vcpkg-0.2
   (package
     (name "rust-vcpkg")
-    (version "0.2.7")
+    (version "0.2.8")
     (source
       (origin
         (method url-fetch)
@@ -14847,14 +17185,18 @@ Unix users and groups.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "15dzk1b96q946v9aisbd1bbhi33n93wvgziwh1shmscn1xflbp9k"))))
+          "0s1ijdrsg6917imja2hb07l0z4vbx7ydm8m2i1n9g62fg7r3ki1z"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Tests want mysql, harfbuzz, graphite2.
+       #:cargo-development-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
     (home-page "https://github.com/mcgoo/vcpkg-rs")
     (synopsis "Find native dependencies in a vcpkg tree at build time")
     (description
      "This package provides a library to find native dependencies in a
 @code{vcpkg} tree at build time in order to be used in Cargo build scripts.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14871,11 +17213,13 @@ Unix users and groups.")
          (base32
           "06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5"))))
     (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1.0))))
     (home-page "https://github.com/contain-rs/vec-map")
     (synopsis "Simple map based on a vector for small integer keys")
     (description
      "This package provides a simple map based on a vector for small integer keys.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14900,7 +17244,6 @@ version requirements.  The version is queried by calling the Rust compiler with
 @code{--version}.  The path to the compiler is determined first via the
 @code{RUSTC} environment variable.  If it is not set, then @code{rustc} is used.
 If that fails, no determination is made, and calls return None.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -14968,9 +17311,80 @@ updated when the crate version changes.")
     (synopsis "Void type for use in statically impossible cases")
     (description
      "The uninhabited void type for use in statically impossible cases.")
-    (properties '((hidden? . #t)))
     (license license:expat)))
 
+(define-public rust-vswhom-0.1
+  (package
+    (name "rust-vswhom")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "vswhom" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12v0fjjzxdc3y5c0lcwycfhphz7zf2s06hl5krwhawah0xzrp5xy"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-vswhom-sys" ,rust-vswhom-sys-0.1))))
+    (home-page "https://github.com/nabijaczleweli/vswhom.rs")
+    (synopsis "FFI to Jon Blow's VS discovery script")
+    (description
+     "This package provides a pure FFI to Jon Blow's VS discovery script.")
+    (license license:expat)))
+
+(define-public rust-vswhom-sys-0.1
+  (package
+    (name "rust-vswhom-sys")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "vswhom-sys" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0clm4dx4amwlhg5lkh52fmvvwq6c7s7b9xqljw39mryhsc158bzw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-cc" ,rust-cc-1.0))))
+    (home-page "https://github.com/nabijaczleweli/vswhom-sys.rs")
+    (synopsis "Pure FFI to Jon Blow's VS discovery script")
+    (description
+     "This package provides a pure FFI to Jon Blow's VS discovery script.")
+    (license license:expat)))
+
+(define-public rust-vte-0.3
+  (package
+    (name "rust-vte")
+    (version "0.3.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "vte" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1kz8svnqnxclllsgh0ck20rplw3qzp46b5v30yscnzrgw8vgahjg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; tests not included in release
+       #:cargo-inputs
+       (("rust-utf8parse" ,rust-utf8parse-0.1))))
+    (home-page "https://github.com/jwilm/vte")
+    (synopsis "Parser for implementing terminal emulators")
+    (description
+     "This package provides a parser for implementing terminal emulators.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-wait-timeout-0.2
   (package
     (name "rust-wait-timeout")
@@ -15039,7 +17453,6 @@ specified across Unix and Windows platforms.")
     (synopsis "Experimental WASI API bindings for Rust")
     (description "This package contains experimental WASI API bindings
 in Rust.")
-    (properties '((hidden? . #t)))
     (license license:asl2.0)))
 
 (define-public rust-wasm-bindgen-0.2
@@ -15295,6 +17708,27 @@ attribute that is not in the shared backend crate.")
 Locate installed executable in cross platforms.")
     (license license:expat)))
 
+(define-public rust-which-1.0
+  (package
+    (inherit rust-which-2.0)
+    (name "rust-which")
+    (version "1.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "which" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1cjwa57kzfgzs681a27m5pjmq580pv3hkcg23smf270bgqz60jp8"))))
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2))
+       #:cargo-development-inputs
+       (("rust-tempdir" ,rust-tempdir-0.3))))))
+
 (define-public rust-widestring-0.4
   (package
     (name "rust-widestring")
@@ -15400,7 +17834,6 @@ UTF-32 types are provided, including support for malformed encoding.")
     (description "This crate provides import libraries for the
 i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
 @code{winapi} instead.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -15446,7 +17879,6 @@ winapi.")
     (description "This package provides import libraries for the
 x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
 @code{winapi} instead.")
-    (properties '((hidden? . #t)))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -15476,6 +17908,35 @@ color in a Windows console.")
     (license (list license:unlicense
                    license:expat))))
 
+(define-public rust-winreg-0.6
+  (package
+    (name "rust-winreg")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "winreg" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1jdcqr6zmvwyrp87h48miasfdvv16gjsb60rc8dy2kqwb3mnv65j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-chrono" ,rust-chrono-0.4)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.3)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/gentoo90/winreg-rs")
+    (synopsis "Rust bindings to MS Windows Registry API")
+    (description
+     "This package provides Rust bindings to MS Windows Registry API.")
+    (license license:expat)))
+
 (define-public rust-winutil-0.1
   (package
     (name "rust-winutil")
@@ -15719,7 +18180,7 @@ to XDG Base Directory specification")
        (("rust-linked-hash-map" ,rust-linked-hash-map-0.5))
        #:cargo-development-inputs
        (("rust-quickcheck" ,rust-quickcheck-0.8))))
-    (home-page "http://chyh1990.github.io/yaml-rust/")
+    (home-page "https://chyh1990.github.io/yaml-rust/")
     (synopsis "The missing YAML 1.2 parser for rust")
     (description
      "The missing YAML 1.2 parser for rust.")
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 4ce1cc4fc4..5ca3ec5b51 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -70,6 +70,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
 
@@ -600,7 +601,7 @@ data on your platform, so the seed itself will be as random as possible.
 (define-public crypto++
   (package
     (name "crypto++")
-    (version "8.0.0")
+    (version "8.2.0")
     (source (origin
               (method url-fetch/zipbomb)
               (uri (string-append "https://cryptopp.com/cryptopp"
@@ -608,7 +609,7 @@ data on your platform, so the seed itself will be as random as possible.
                                   ".zip"))
               (sha256
                (base32
-                "0b5qrsm4jhy4nzxgrm13nixhvbswr242plx1jw6r4sw492rqkzdv"))))
+                "0n40hlz5jkvlcp9vxrj0fsrcfp7dm0zmmv6h52dx3f8i5qjf5w03"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -626,19 +627,25 @@ data on your platform, so the seed itself will be as random as possible.
                ((" -march=native") ""))
              #t))
          (delete 'configure)
-         (add-after 'build 'build-shared
-           (lambda _
-             ;; By default, only the static library is built.
-             (invoke "make" "shared")))
+         (replace 'build
+           ;; By default, only the static library is built.
+           (lambda* (#:key (make-flags '()) #:allow-other-keys)
+             (apply invoke "make" "shared"
+                    "-j" (number->string (parallel-job-count))
+                    make-flags)))
          (add-after 'install 'install-shared-library-links
            ;; By default, only .so and .so.x.y.z are installed.
            ;; Create all the ‘intermediates’ expected by dependent packages.
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (lib (string-append out "/lib")))
+                    (lib (string-append out "/lib"))
+                    (prefix "libcryptopp.so.")
+                    (target (string-append prefix ,version)))
                (with-directory-excursion lib
-                 (symlink "libcryptopp.so.8.0.0" "libcryptopp.so.8.0")
-                 (symlink "libcryptopp.so.8.0.0" "libcryptopp.so.8")
+                 (symlink target
+                          (string-append prefix ,(version-major+minor version)))
+                 (symlink target
+                          (string-append prefix ,(version-major version)))
                  #t))))
          (add-after 'install 'install-pkg-config
            (lambda* (#:key outputs #:allow-other-keys)
@@ -656,7 +663,8 @@ data on your platform, so the seed itself will be as random as possible.
                      "Description: Class library of cryptographic schemes"
                      "Version: " ,version "\n"
                      "Libs: -L${libdir} -lcryptopp\n"
-                     "Cflags: -I${includedir}\n"))))))))))
+                     "Cflags: -I${includedir}\n"))
+                   #t))))))))
     (native-inputs
      `(("unzip" ,unzip)))
     (home-page "https://cryptopp.com/")
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4a4710c27c..61c01071e1 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
+;;; Copyright © 2017, 2020 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
@@ -39,6 +39,7 @@
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1065,9 +1066,10 @@ Most public APIs are compatible with @command{mysqlclient} and MySQLdb.")
          "0gmpvhn02pkq280ffmn4da1g4mdr1xxz7l80b7y4n7km1mrzwrml"))))
     (build-system gnu-build-system)
     (arguments
-     `( #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
-                                               (assoc-ref %outputs "out")
-                                               "/lib"))))
+     `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+                                              (assoc-ref %outputs "out")
+                                              "/lib"))
+       #:make-flags (list "CFLAGS=-fPIC")))
     (home-page "http://fallabs.com/qdbm")
     (synopsis "Key-value database")
     (description "QDBM is a library of routines for managing a
@@ -2110,6 +2112,35 @@ multiple cores.  The size of each database is limited only by the size of the
 virtual address space — not physical RAM.")
     (license license:openldap2.8)))
 
+(define-public lmdbxx
+  (package
+    (name "lmdbxx")
+    (version "0.9.14.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/drycpp/lmdbxx.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jmb9wg2iqag6ps3z71bh72ymbcjrb6clwlkgrqf1sy80qwvlsn6"))))
+    (arguments
+     `(#:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (build-system gnu-build-system)
+    (inputs `(("lmdb" ,lmdb)))
+    (home-page "http://lmdbxx.sourceforge.net")
+    (synopsis "C++11 wrapper for the LMDB embedded B+ tree database library")
+    (description "@code{lmdbxx} is a comprehensive @code{C++} wrapper for the
+@code{LMDB} embedded database library, offering both an error-checked
+procedural interface and an object-oriented resource interface with RAII
+semantics.")
+    (license license:unlicense)))
+
 (define-public libpqxx
   (package
     (name "libpqxx")
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index fb370fd716..5362d3505f 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -54,7 +54,7 @@ and edited by calendar and contact clients on mobile phones or computers.
 Radicale intentionally does not fully comply with the CalDAV and CardDAV RFCs.
 Instead, it supports the CalDAV and CardDAV implementations of popular
 clients.")
-    (home-page "http://radicale.org/")
+    (home-page "https://radicale.org/")
     (license gpl3+)))
 
 (define-public vdirsyncer
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index f94f49c51b..bd80fb297f 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -117,7 +117,7 @@ contains the archive keys used for that.")
 (define-public debootstrap
   (package
     (name "debootstrap")
-    (version "1.0.114")
+    (version "1.0.118")
     (source
       (origin
         (method git-fetch)
@@ -127,7 +127,7 @@ contains the archive keys used for that.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "147308flz9y8g6f972izi3szmsywf5f8xm64z2smy1cayd340i63"))))
+          "07x1x67dli6qwrlaribi07wgjp7fs1gzwkqgq1xy6lq1xz1xfdl2"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index cd0a5db93c..98b710ab6d 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
@@ -31,6 +31,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system copy)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
@@ -109,25 +110,10 @@ acronyms distributed as an info document.")
               (sha256
                (base32
                 "1n3bp91sik66z3ca7mjqbr9nck3hg5ck0c8g84xc0qnfpx5vznh2"))))
-    (build-system trivial-build-system)
+    (build-system copy-build-system)
     (arguments
-     '(#:builder (begin
-                   (use-modules (guix build utils))
-                   (let* ((src     (assoc-ref %build-inputs "source"))
-                          (tar     (assoc-ref %build-inputs "tar"))
-                          (xz      (assoc-ref %build-inputs "xz"))
-                          (out     (assoc-ref %outputs "out"))
-                          (datadir (string-append out "/share/gcide")))
-                     (set-path-environment-variable "PATH" '("bin")
-                                                    (list tar xz))
-                     (mkdir-p datadir)
-                     (invoke "tar" "-C" datadir
-                             "--strip-components=1"
-                             "-xvf" src)))
-       #:modules ((guix build utils))))
-    (native-inputs
-     `(("tar" ,tar)
-       ("xz" ,xz)))
+     '(#:install-plan
+       '(("." "share/gcide/" #:exclude ("COPYING")))))
     (synopsis "GNU Collaborative International Dictionary of English")
     (description
      "GCIDE is a free dictionary based on a combination of sources.  It can
@@ -140,14 +126,14 @@ http://gcide.gnu.org.ua/")
   ;; Not quite a dictionary, not quite a spell checker either…
   (package
     (name "diction")
-    (version "1.11")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/diction/diction-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1xi4l1x1vvzmzmbhpx0ghmfnwwrhabjwizrpyylmy3fzinzz3him"))))
+    (version "1.14")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.moria.de/~michael/diction/diction-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1z6p5x3l1a00h4v4s33qa82fznzc1jdqdnlc4dnmd9nblnrjy0fs"))))
     (build-system gnu-build-system)
     (synopsis "Identifies wordy and commonly misused phrases")
     (description
@@ -312,7 +298,7 @@ translation engines from your terminal.")
 (define-public lttoolbox
   (package
     (name "lttoolbox")
-    (version "3.5.0")
+    (version "3.5.1")
     (source
      (origin
        (method url-fetch)
@@ -320,14 +306,23 @@ translation engines from your terminal.")
              "https://github.com/apertium/lttoolbox/releases/download/v"
              version "/lttoolbox-" version ".tar.gz"))
        (sha256
-        (base32
-         "08y6pf1hl7prwygy1g8h6ndqww18pmb9f3r5988q0pcrp8w6xz6b"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "14yyrkzyqlsrii3v3ggg4dyvwlrcqcqc0aprphz5781a44jsrcwz"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'bootstrap
+           ;; The included ./autogen.sh unconditionally runs ./configure before
+           ;; its shebangs have been patched.
+           (lambda _
+             (invoke "autoreconf" "-vfi"))))))
     (inputs
      `(("libxml2" ,libxml2)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
     (home-page "http://wiki.apertium.org/wiki/Lttoolbox")
     (synopsis "Lexical processing toolbox")
     (description "Lttoolbox is a toolbox for lexical processing, morphological
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index 3b3540b5b0..0e452d6df8 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Vagrant Cascadian <vagrant@reproducible-builds.org>
@@ -68,7 +68,7 @@
   #:use-module (ice-9 match))
 
 (define-public diffoscope
-  (let ((version "136"))
+  (let ((version "137"))
     (package
       (name "diffoscope")
       (version version)
@@ -80,7 +80,7 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1wp4fnmwcsgv17dmvk9xr3h63gp4nmmpysr248qvxs8s5qy5xlyk"))))
+                  "11llnh2h2mx3xygj4482ld1rnjnhszk4828pmcbi75kanxfrqzq6"))))
       (build-system python-build-system)
       (arguments
        `(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
index 4a35094eba..c5207aace4 100644
--- a/gnu/packages/distributed.scm
+++ b/gnu/packages/distributed.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Brant Gardner <brantcgardner@brantware.com>
-;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,7 +43,7 @@
 (define-public boinc-client
   (package
     (name "boinc-client")
-    (version "7.16.3")
+    (version "7.16.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -54,7 +54,7 @@
               (file-name (git-file-name "boinc" version))
               (sha256
                (base32
-                "1l181s7wnx0xd7m62qjixdjw4ri87q47xi0x662m2jsh9lzb8khf"))))
+                "08xx2kzb7c46k1zb91w74kyig3b5kilxdw5ilfs67r8p55mxk0g1"))))
     (build-system gnu-build-system)
     (arguments '(#:configure-flags '("--disable-server")))
     (inputs `(("openssl" ,openssl)
@@ -71,7 +71,7 @@
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
-    (synopsis "BOINC lets you help cutting-edge science research using your computer")
+    (synopsis "Help cutting-edge science research using your computer")
     (description "BOINC is a platform for high-throughput computing on a large
 scale (thousands or millions of computers).  It can be used for volunteer
 computing (using consumer devices) or grid computing (using organizational
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 3a42a98bc4..192761b42e 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -114,32 +114,32 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.14.10")
+    (version "9.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://ftp.isc.org/isc/bind9/" version
-                    "/bind-" version ".tar.gz"))
+                    "/bind-" version ".tar.xz"))
               (sha256
                (base32
-                "0nkkc2phkkzwgl922xg41gx5pc5f4safabqslaw3880hwdf8vfaa"))))
+                "0a1f1wrlbnmq79q6s15fny36ip81malg6wlr8acp7amimsyxjjxg"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
      ;; It would be nice to add GeoIP and gssapi once there are packages.
      `(("libcap" ,libcap)
+       ("libuv" ,libuv)
        ("libxml2" ,libxml2)
        ("openssl" ,openssl)
        ("p11-kit" ,p11-kit)
        ("python" ,python)
        ("python-ply" ,python-ply)))
-    (native-inputs `(("perl" ,perl)
-                     ("net-tools" ,net-tools)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
     (arguments
      `(#:configure-flags
-       (list (string-append "--with-openssl="
-                            (assoc-ref %build-inputs "openssl"))
-             (string-append "--with-pkcs11="
+       (list (string-append "--with-pkcs11="
                             (assoc-ref %build-inputs "p11-kit")))
        #:phases
        (modify-phases %standard-phases
@@ -278,22 +278,18 @@ the two.")
 (define-public libasr
   (package
     (name "libasr")
-    (version "1.0.3")
+    (version "1.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
                            "libasr-" version ".tar.gz"))
        (sha256
-        (base32 "13fn4sr4vlcx1xijpl26nmnxawyls4lr5q3mi11jdm76f80qxn4w"))))
+        (base32 "1d6s8njqhvayx2gp47409sp1fn8m608ws26hr1srfp6i23nnpyqr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (replace 'bootstrap
-           ;; ‘GNU build system bootstrapping not needed’, the default lies.
-           (lambda _
-             (invoke "sh" "./bootstrap")))
          (add-after 'install 'install-documentation
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -390,14 +386,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.9.5")
+    (version "1.9.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0myv8l886gmlh9nh4j3q5549idxnl51hf9cw20yxfqbwd47l13ca"))))
+        (base32 "1w5aylh2gfvfvqkgrq46aw427x9c0a3hwm0f985s55wim5pgr60x"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
@@ -741,20 +737,20 @@ LuaJIT, both a resolver library and a daemon.")
 (define-public ddclient
   (package
     (name "ddclient")
-    (version "3.9.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/ddclient/ddclient/ddclient-"
-                                  version "/ddclient-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0fwyhab8yga2yi1kdfkbqxa83wxhwpagmj1w1mwkg2iffh1fjjlw"))))
+    (version "3.9.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ddclient/ddclient.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hf377g4j9r9sac75xp17nk2h58mazswz4vkg4g2gl2yyhvzq91w"))))
     (build-system trivial-build-system) ; no Makefile.PL
     (native-inputs
      `(("bash" ,bash)
-       ("gzip" ,gzip)
-       ("perl" ,perl)
-       ("tar" ,tar)))
+       ("perl" ,perl)))
     (inputs
      `(("inetutils" ,inetutils)         ; logger
        ("net-tools" ,net-tools)
@@ -770,48 +766,46 @@ LuaJIT, both a resolver library and a daemon.")
          (use-modules (guix build utils)
                       (ice-9 match)
                       (srfi srfi-26))
-         ;; bootstrap
          (setenv "PATH" (string-append
                          (assoc-ref %build-inputs "bash") "/bin" ":"
-                         (assoc-ref %build-inputs "tar") "/bin" ":"
-                         (assoc-ref %build-inputs "gzip") "/bin" ":"
                          (assoc-ref %build-inputs "perl") "/bin"))
-         ;; extract source
-         (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
-         ;; package
-         (with-directory-excursion (string-append ,name "-" ,version)
-           (let* ((out (assoc-ref %outputs "out"))
-                  (bin (string-append out "/bin")))
-             (let ((file "ddclient"))
-               (substitute* file
-                 (("/usr/bin/perl") (which "perl"))
-                 ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
-                 (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
-                 (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
-                 ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
-                 (("\\$cachedir\\$program\\.cache")
-                  "/var/cache/ddclient/ddclient.cache"))
-               (install-file file bin)
-               (wrap-program (string-append bin "/" file)
-                 `("PATH" ":" =
-                   ("$PATH"
-                    ,@(map (lambda (input)
-                             (match input
-                               ((name . store)
-                                (string-append store "/bin"))))
-                           %build-inputs)))
-                 `("PERL5LIB" ":" =
-                   ,(delete
-                     ""
-                     (map (match-lambda
-                            (((? (cut string-prefix? "perl-" <>) name) . dir)
-                             (string-append dir "/lib/perl5/site_perl"))
-                            (_ ""))
-                          %build-inputs)))))
-             (for-each (cut install-file <> (string-append out
-                                                           "/share/ddclient"))
-                       (find-files "." "sample.*$")))))))
-    (home-page "https://sourceforge.net/projects/ddclient/")
+
+         ;; Copy the (read-only) source into the (writable) build directory.
+         (copy-recursively (assoc-ref %build-inputs "source") ".")
+
+         ;; Install.
+         (let* ((out (assoc-ref %outputs "out"))
+                (bin (string-append out "/bin")))
+           (let ((file "ddclient"))
+             (substitute* file
+               (("/usr/bin/perl") (which "perl"))
+               ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
+               (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
+               (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
+               ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
+               (("\\$cachedir\\$program\\.cache")
+                "/var/cache/ddclient/ddclient.cache"))
+             (install-file file bin)
+             (wrap-program (string-append bin "/" file)
+               `("PATH" ":" =
+                 ("$PATH"
+                  ,@(map (lambda (input)
+                           (match input
+                                  ((name . store)
+                                   (string-append store "/bin"))))
+                         %build-inputs)))
+               `("PERL5LIB" ":" =
+                 ,(delete
+                   ""
+                   (map (match-lambda
+                         (((? (cut string-prefix? "perl-" <>) name) . dir)
+                          (string-append dir "/lib/perl5/site_perl"))
+                         (_ ""))
+                        %build-inputs)))))
+           (for-each (cut install-file <> (string-append out
+                                                         "/share/ddclient"))
+                     (find-files "." "sample.*$"))))))
+    (home-page "https://ddclient.net/")
     (synopsis "Address updating utility for dynamic DNS services")
     (description "This package provides a client to update dynamic IP
 addresses with several dynamic DNS service providers, such as
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 1f832a25e5..b23e067888 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -183,7 +183,9 @@ Python without keeping their credentials in a Docker configuration file.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "0npbzixf3c0jvzm159vygvkydrr8h36c9sq50yv0mdinrys2bvg0"))))
+       (base32 "0npbzixf3c0jvzm159vygvkydrr8h36c9sq50yv0mdinrys2bvg0"))
+      (patches
+        (search-patches "containerd-test-with-go1.13.patch"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/containerd/containerd"
@@ -236,7 +238,7 @@ Python without keeping their credentials in a Docker configuration file.")
     (description "This package provides the container daemon for Docker.
 It includes image transfer and storage, container execution and supervision,
 network attachments.")
-    (home-page "http://containerd.io/")
+    (home-page "https://containerd.io/")
     (license license:asl2.0)))
 
 ;;; Private package that shouldn't be used directly; its purposes is to be
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 7f8aa42e95..5ac0fb1533 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -227,7 +227,7 @@
                (delete-file-recursively font-dest)
                (symlink font-src font-dest))
              #t)))))
-    (home-page "http://calibre-ebook.com/")
+    (home-page "https://calibre-ebook.com/")
     (synopsis "E-book library management software")
     (description "Calibre is an e-book library manager.  It can view, convert
 and catalog e-books in most of the major e-book formats.  It can also talk
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index 3ae1ec2192..20fc9a3706 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
 ;;;
@@ -132,7 +132,7 @@ of categories with some of the activities available in that category.
 (define-public gcompris-qt
   (package
     (name "gcompris-qt")
-    (version "0.97")
+    (version "0.98")
     (source
      (origin
        (method url-fetch)
@@ -140,7 +140,7 @@ of categories with some of the activities available in that category.
              "https://gcompris.net/download/qt/src/gcompris-qt-"
              version ".tar.xz"))
        (sha256
-        (base32 "0hl3a1jjnrpnbqkpx3rl3fl86yfv503lh48djb888hplvr4nf747"))))
+        (base32 "1jmjykn0lpk0v6hs2flmch8v4da5bgxl891nav7szxw9l7aqnf4y"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/efi.scm b/gnu/packages/efi.scm
index b6e93dd618..13c33adbd3 100644
--- a/gnu/packages/efi.scm
+++ b/gnu/packages/efi.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -64,7 +64,7 @@ environment presented by Intel's EFI.")
 (define-public sbsigntools
   (package
     (name "sbsigntools")
-    (version "0.9.2")
+    (version "0.9.3")
     (source
      (origin
        (method git-fetch)
@@ -75,8 +75,7 @@ environment presented by Intel's EFI.")
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "116649ixr6gvw9fqiljfflxsv4293hgm73bmba5ilxrzn4kpbzvb"))))
+        (base32 "0gc3xmp73xl7z4nkwz4qy960rdflmx7k4ksgyblcnia9smvsir6y"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index 7420bc4963..9aa693ff3a 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -33,7 +33,7 @@
 (define-public elixir
   (package
     (name "elixir")
-    (version "1.9.4")
+    (version "1.10.0")
     (source
      (origin
        (method git-fetch)
@@ -42,7 +42,7 @@
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1l4318g35y4h0vi2w07ayc3jizw1xc3s7hdb47w6j3iw33y06g6b"))
+        (base32 "1fz22c2jqqm2jvzxar11bh1djg3kqdn5rbxdddlz0cv6mfz7hvgv"))
        (patches (search-patches "elixir-path-length.patch"))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9087a8d98c..be0e6a84c2 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -58,6 +58,7 @@
 ;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
+;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -134,6 +135,7 @@
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pdf)
+  #:use-module (gnu packages rust-apps)
   #:use-module (gnu packages scheme)
   #:use-module (gnu packages speech)
   #:use-module (gnu packages xiph)
@@ -2778,6 +2780,43 @@ column by drawing a thin line down the length of the editing window.")
      "This Emacs package allows managing multiple grep buffers.")
     (license license:gpl3+)))
 
+(define-public emacs-rg
+  (package
+    (name "emacs-rg")
+    (version "1.8.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dajva/rg.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0k7x5z7mh9flwih35cqy8chs54rack3nswdcpw5wcpgv6xim227y"))))
+    (build-system emacs-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'hardcode-rg-path
+           ;; Hardcode the path to ripgrep.
+           (lambda _
+             (let ((file "rg.el"))
+               (chmod file #o644)
+               (emacs-substitute-sexps file
+                 ("(defcustom rg-executable" (which "rg")))))))))
+    (propagated-inputs
+     `(("emacs-s" ,emacs-s)
+       ("emacs-wgrep" ,emacs-wgrep)))
+    (inputs
+     `(("ripgrep" ,ripgrep)))
+    (home-page "https://rgel.readthedocs.io/en/latest/")
+    (synopsis "Search tool based on @code{ripgrep}")
+    (description
+     "@code{rg} is an Emacs search package based on the @code{ripgrep} command
+line tool.  It allows one to interactively search based on the editing context
+then refine or modify the search results.")
+    (license license:gpl3+)))
+
 (define-public emacs-inf-ruby
   (package
     (name "emacs-inf-ruby")
@@ -5258,6 +5297,28 @@ perspective only its buffers are available by default.")
     ;; the Expat license.
     (license license:gpl3+)))
 
+(define-public emacs-persp-mode
+  (package
+    (name "emacs-persp-mode")
+    (version "2.9.8")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Bad-ptr/persp-mode.el.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Bad-ptr/persp-mode.el")
+    (synopsis "Switch between named \"perspectives\" shared among frames")
+    (description
+     "This package extends @code{perspective.el} to enable perspectives that
+can be saved to and restored from a file.")
+    (license license:gpl2+)))
+
 (define-public emacs-test-simple
   (package
     (name "emacs-test-simple")
@@ -6308,7 +6369,7 @@ provides the following features:
                (base32
                 "1zm1j4w0f3h01bmmpsv4j4mh6i13nnl8fcqlj2hsa1ncy1lgi8q7"))))
     (build-system emacs-build-system)
-    (home-page "http://jblevins.org/projects/markdown-mode/")
+    (home-page "https://jblevins.org/projects/markdown-mode/")
     (synopsis "Emacs Major mode for Markdown files")
     (description
      "Markdown-mode is a major mode for editing Markdown-formatted text files
@@ -8078,13 +8139,13 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update it as
     ;; well.
-    (version "9.3.3")
+    (version "9.3.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/org-" version ".tar"))
        (sha256
-        (base32 "0yafckcx5ka2rpmv24x7ns6f3s1h216x2lbgaxsf1dmklbjcfvwv"))))
+        (base32 "0jwpgfzjvf1hd3mx582pw86hysdryaqzp69hk6azi9kmq4bzk87d"))))
     (build-system emacs-build-system)
     (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -8098,14 +8159,14 @@ programming and reproducible research.")
   (package
     (inherit emacs-org)
     (name "emacs-org-contrib")
-    (version "20200206")
+    (version "20200213")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://orgmode.org/elpa/"
                            "org-plus-contrib-" version ".tar"))
        (sha256
-        (base32 "1fdxh8zgjnb500wkcl0bc0fdzbsln6p044b4s4nz85wkfw0jkfs5"))))
+        (base32 "0g6rrrwplrifz4ip0jg638m4kvpvdg03hwnyghd813w0lm935mh5"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -9762,8 +9823,7 @@ and supports the use of a mouse.")
     (build-system gnu-build-system)
     (native-inputs `(("emacs" ,emacs-minimal)))
     (arguments
-     (let ((elisp-dir (string-append "/share/emacs/site-lisp/guix.d"
-                                     "/gnuplot-" version)))
+     (let ((elisp-dir "/share/emacs/site-lisp"))
        `(#:modules ((guix build gnu-build-system)
                     (guix build utils)
                     (guix build emacs-utils))
@@ -10956,8 +11016,8 @@ through them using @key{C-c C-SPC}.")
     (license license:gpl3+)))
 
 (define-public emacs-slack
-  (let ((commit "10fbb81f567b44647ad125a48ecd72df106fb624")
-        (revision "6"))
+  (let ((commit "b7b9eada0bf62d40dfe764b00f55913a2d3d742e")
+        (revision "7"))
     (package
       (name "emacs-slack")
       (version (git-version "0.0.2" revision commit))
@@ -10969,7 +11029,7 @@ through them using @key{C-c C-SPC}.")
                 (file-name (git-file-name name commit))
                 (sha256
                  (base32
-                  "01ln9rbalgpxw6rbr4czhy6bd8wrrpyf0qgn2chcq3zmmrn4sy1z"))))
+                  "0cqr7jnfxzb0z2wy79pdwpv9cvmawjif1kin3zbp8q7zhwrq09v0"))))
       (build-system emacs-build-system)
       (arguments
        `(#:phases
@@ -14299,8 +14359,8 @@ perform regression test for packages that provide font-lock rules.")
       (license license:gpl3+))))
 
 (define-public emacs-racket-mode
-  (let ((commit "2a9a102a097d04fbcd2a443fec84078036c2e277")
-        (revision "4"))
+  (let ((commit "5f396fa91fc22310f5c519aa658436a1a5251846")
+        (revision "5"))
     (package
       (name "emacs-racket-mode")
       (version (git-version "0.0.2" revision commit))
@@ -14313,15 +14373,15 @@ perform regression test for packages that provide font-lock rules.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1n71dxxh62jixq20b5haapv651dxc0zyrxpl1d0yqsg8ncp726bl"))))
+           "1214y08i0c51d1vzw9jzyf79vyfqizdy6m0980qs13qbdwsj32v0"))))
       (build-system emacs-build-system)
       (arguments
        `(#:include '("\\.el$" "\\.rkt$")))
       (propagated-inputs
        `(("emacs-faceup" ,emacs-faceup)
          ("emacs-s" ,emacs-s)))
-      (home-page "https://github.com/greghendershott/racket-mode")
-      (synopsis "Major mode for Racket language")
+      (home-page "https://www.racket-mode.com/")
+      (synopsis "Major mode for the Racket language")
       (description "@code{racket-mode} provides:
 
 @itemize
@@ -14685,14 +14745,14 @@ modes of SLIME.")
 (define-public emacs-sml-mode
   (package
     (name "emacs-sml-mode")
-    (version "6.9")
+    (version "6.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/sml-mode-"
                            version ".el"))
        (sha256
-        (base32 "1bdg9ywpvj85hxqah9w1raxlcrhkyx67nw22jwd1bd5j0fhmgqij"))))
+        (base32 "01yf0s474r9xhj6nbs14ljn9ccxb5yy758i17c8nmgmqvm8fx7sb"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/sml-mode.html")
     (synopsis "Major mode for editing (Standard) ML")
@@ -16055,7 +16115,7 @@ wiki.")
         (revision "1"))
     (package
       (name "emacs-recent-addresses")
-      (home-page "http://nschum.de/src/emacs/recent-addresses/")
+      (home-page "https://nschum.de/src/emacs/recent-addresses/")
       (version (git-version "0.1" revision commit))
       (source (origin
                 (method git-fetch)
@@ -19471,7 +19531,7 @@ It is a fork of https://github.com/cofi/evil-numbers, which is unmaintained.")
                (base32
                 "1cgxv4aibkvv6lnssynn0438a615fz3zq8hg9sb0lhfgsr99pxln"))))
     (build-system emacs-build-system)
-    (home-page "http://nschum.de/src/emacs/rotate-text/")
+    (home-page "https://nschum.de/src/emacs/rotate-text/")
     (synopsis "Cycle through words, symbols and patterns in Emacs")
     (description "@code{rotate-text} allows you rotate to commonly
 interchanged text with a single keystroke.  For example, you can toggle
@@ -21455,3 +21515,24 @@ Flyspell's on-the-fly spell checking and extends these checks to also detect
 language.  Auto-dictionary then sets @code{ispell-dictionary} to use the
 detected language.")
     (license license:gpl2+)))
+
+(define-public emacs-persist
+  (package
+    (name "emacs-persist")
+    (version "0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "persist-" version ".tar"))
+       (sha256
+        (base32 "0gpxy41qawzss2526j9a7lys60vqma1lvamn4bfabwza7gfhac0q"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/persist.html")
+    (synopsis "Persist variables between Emacs sessions")
+    (description
+     "This package provides variables which persist across sessions.
+Values are stored in a directory in @code{user-emacs-directory}, using
+one file per value.  This makes it easy to delete or remove unused
+variables.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 08c8533812..136add4e82 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -175,7 +175,7 @@
      `(("xbinutils" ,(cross-binutils "arm-none-eabi"))
        ("xgcc" ,gcc-arm-none-eabi-4.9)
        ("texinfo" ,texinfo)))
-    (home-page "http://www.sourceware.org/newlib/")
+    (home-page "https://www.sourceware.org/newlib/")
     (synopsis "C library for use on embedded systems")
     (description "Newlib is a C library intended for use on embedded
 systems.  It is a conglomeration of several library parts that are easily
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 284dc22039..5e1ab6cb3f 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -102,7 +102,9 @@
              version "/desmume-" version ".tar.gz"))
        (sha256
         (base32
-         "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))))
+         "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"))
+       (patches (search-patches "desmume-gcc6-fixes.patch"
+                                "desmume-gcc7-fixes.patch"))))
     (build-system gnu-build-system)
     (arguments
      ;; Enable support for WiFi and microphone.
@@ -274,19 +276,21 @@ older games.")
     (license license:gpl2+)))
 
 (define-public emulation-station
-  (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
+  ;; No release for a long time, new commits fix build issues
+  (let ((commit "9cc42adff67946175d2b7e25c6ae69cc374e98a0")
+        (revision "1"))
     (package
       (name "emulation-station")
-      (version "2.0.1")
+      (version (git-version "2.0.1" revision commit))
       (source (origin
                 (method git-fetch) ; no tarball available
                 (uri (git-reference
                       (url "https://github.com/Aloshi/EmulationStation.git")
                       (commit commit))) ; no version tag
-                (file-name (string-append name "-" version "-checkout"))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
+                  "1cva0ns650v17lfn8in095zci6lc43d23f1x3mlzc41qfqa6mbd1"))))
       (build-system cmake-build-system)
       (arguments
        '(#:tests? #f)) ; no tests
@@ -307,19 +311,27 @@ and a game metadata scraper.")
       (home-page "http://www.emulationstation.org")
       (license license:expat))))
 
+;; Note: higan v107 has been released, but as explained by the dialog that
+;; appears after starting the new version, it's an experimental release. The
+;; author recommends v106 for general use.
+;;
+;; When updating to v107 (or probably beyond), sdl will have to be replaced
+;; with sdl2, and libxrandr will need to be added to inputs. The patch
+;; `higan-remove-march-native-flag.patch' will not be necessary, since the flag
+;; is now being added only for `platform=local', which is not the default.
 (define-public higan
   (package
     (name "higan")
     (version "106")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://gitlab.com/higan/higan/repository/archive.tar.gz?ref=v"
-             version))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/byuu/higan/")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0y42pra0dxzlbkyzcp3r8a39pji2bj3p9fl40425f60af2igr4rw"))
+        (base32 "1mxivf8124vz4hl0b0xa1yqv0z9m3i12v9psmbpqkprrbq0wbgn1"))
        (patches (search-patches "higan-remove-march-native-flag.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -344,15 +356,18 @@ and a game metadata scraper.")
            (delete 'configure)
            (add-before 'build 'chdir-to-higan
              (lambda _
-               (chdir "higan")))
+               (chdir "higan")
+               #t))
            (add-before 'install 'create-/share/applications
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((out (assoc-ref outputs "out")))
                  ;; It seems the author forgot to do this in the Makefile.
-                 (mkdir-p (string-append out "/share/applications")))))
+                 (mkdir-p (string-append out "/share/applications"))
+                 #t)))
            (add-after 'install 'chdir-to-icarus
              (lambda _
-               (chdir "../icarus")))
+               (chdir "../icarus")
+               #t))
            (add-after 'chdir-to-icarus 'build-icarus build-phase)
            (add-after 'build-icarus 'install-icarus install-phase)
            (add-after 'install-icarus 'wrap-higan-executable
@@ -383,7 +398,8 @@ and a game metadata scraper.")
                  (chmod higan #o555)
                  ;; Second, make sure higan will find icarus in PATH.
                  (wrap-program higan
-                   `("PATH" ":" prefix (,bin))))))))
+                   `("PATH" ":" prefix (,bin)))
+                 #t)))))
        #:make-flags
        (list "compiler=g++"
              (string-append "prefix=" (assoc-ref %outputs "out")))
@@ -405,7 +421,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
 (define-public mgba
   (package
     (name "mgba")
-    (version "0.8.0")
+    (version "0.8.1")
     (source
      (origin
        (method git-fetch)
@@ -414,7 +430,7 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0m3rgcdv32ms98j7rrmk2hphvn462bwsd6xfz2ssy05398pj4ljh"))
+        (base32 "1if82mfaak3696w5d5yshynpzywrxgvg3ifdfi2rwlpvq1gpd429"))
        (modules '((guix build utils)))
        (snippet
         ;; Make sure we don't use the bundled software.
@@ -431,7 +447,8 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
        #:configure-flags
        (list "-DUSE_LZMA=OFF"           ;do not use bundled LZMA
              "-DUSE_LIBZIP=OFF")))      ;use "zlib" instead
-    (native-inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("qttools" ,qttools)))
     (inputs `(("ffmpeg" ,ffmpeg)
               ("imagemagick" ,imagemagick)
               ("libedit" ,libedit)
@@ -443,7 +460,6 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
               ("ncurses" ,ncurses)
               ("qtbase" ,qtbase)
               ("qtmultimedia" ,qtmultimedia)
-              ("qttools" ,qttools)
               ("sdl2" ,sdl2)
               ("sqlite" ,sqlite)
               ("zlib" ,zlib)))
@@ -454,9 +470,9 @@ Super Game Boy, BS-X Satellaview, and Sufami Turbo.")
 faster and more accurate than many existing Game Boy Advance emulators, as
 well as adding features that other emulators lack.  It also supports Game Boy
 and Game Boy Color games.")
-    ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+ and "inih.c" is
-    ;; BSD-3.
-    (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3))))
+    ;; Code is mainly MPL 2.0. "blip_buf.c" is LGPL 2.1+, "inih.c" is
+    ;; BSD-3, and "discord-rpc" is Expat.
+    (license (list license:mpl2.0 license:lgpl2.1+ license:bsd-3 license:expat))))
 
 (define-public sameboy
   (package
@@ -1449,6 +1465,69 @@ functions.  The source code to MAME serves as this documentation.")
     ;; keymaps, languages and samples are under CC0.
     (license (list license:gpl2+ license:expat license:cc0))))
 
+(define-public gnome-arcade
+  (package
+    (name "gnome-arcade")
+    (version "0.218.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/strippato/gnome-arcade")
+             (commit (string-append "v." version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1qc01a62p65qb6mwjfmxqsd6n3rglsfwrjhsp25nr7q54107n55l"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; No tests.
+       #:configure-flags (list
+                          (string-append "-DMAME_BIN=\""
+                                         (assoc-ref %build-inputs "mame")
+                                         "/bin/mame\"")
+                          (string-append "-DAPP_RES=\""
+                                         (assoc-ref %outputs "out")
+                                         "/share/gnome-arcade/\""))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (pk 'cwd (getcwd))
+               (substitute* "../source/src/config.c"
+                 (("/usr/share") (string-append out "/share"))))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (rom (string-append out "/share/gnome-arcade/data/rom"))
+                    (tile (string-append out "/share/gnome-arcade/data/tile")))
+               (mkdir-p bin)
+               (install-file "../gnome-arcade" bin)
+               (copy-recursively "../source/res"
+                                 (string-append out "/share/gnome-arcade/res"))
+               (mkdir-p rom)
+               (install-file "../source/data/rom/ROM.TXT" rom)
+               (mkdir-p tile)
+               (install-file "../source/data/tile/TILE.TXT" tile))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("mame" ,mame)
+       ("gtk" ,gtk+)
+       ("libevdev" ,libevdev)
+       ("libvlc" ,vlc)
+       ("libarchive" ,libarchive)))
+    (home-page "https://github.com/strippato/gnome-arcade")
+    (synopsis "Minimal MAME frontend")
+    (description
+     "A minimal GTK+ frontend for MAME, the multi-purpose arcade and console
+emulator.")
+    (license license:gpl3+)))
+
 (define-public pcsxr
   ;; No release since 2017.
   (let ((commit "6484236cb0281e8040ff6c8078c87899a3407534"))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 4db8109249..33c12215e3 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -44,6 +44,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
@@ -1310,12 +1311,20 @@ bindings for Python, Java, OCaml and more.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://radare.org/")
-    (synopsis "Portable reversing framework")
+    (synopsis "Reverse engineering framework")
     (description
-      "Radare project started as a forensics tool, a scriptable commandline
-hexadecimal editor able to open disk files, but later support for analyzing
-binaries, disassembling code, debugging programs, attaching to remote gdb
-servers, ...")
+     "Radare2 is a complete framework for reverse-engineering, debugging, and
+analyzing binaries.  It is composed of a set of small utilities that can be
+used together or independently from the command line.
+
+Radare2 is built around a scriptable disassembler and hexadecimal editor that
+support a variety of executable formats for different processors and operating
+systems, through multiple back ends for local and remote files and disk
+images.
+
+It can also compare (@dfn{diff}) binaries with graphs and extract information
+like relocation symbols.  It is able to deal with malformed binaries, making
+it suitable for security research and analysis.")
     (license license:lgpl3)))
 
 (define-public asco
@@ -2248,7 +2257,7 @@ full programmatic control over your models.")
        (sha256
         (base32
          "170hk1kgrvsddrwykp24wyj0cha78zzmzbf50gn98x7ngqqs395s"))))
-    (build-system cmake-build-system)
+    (build-system qt-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
        ("graphviz" ,graphviz)
@@ -2274,7 +2283,7 @@ full programmatic control over your models.")
        ("python-pyside-2-tools" ,python-pyside-2-tools)
        ("python-shiboken-2" ,python-shiboken-2)
        ("python-wrapper" ,python-wrapper)
-       ("qtbase" ,qtbase)
+       ("qtbase" ,qtbase-patched)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
        ("qtxmlpatterns" ,qtxmlpatterns)
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 990298ce3f..8e12f684e0 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -573,7 +573,11 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
          ;; Only try tests that don't need access to network or system
          (replace 'check
            (lambda _
-             (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
+             ;; Core tests sometimes fail, at least on i686-linux.
+             ;; Let's disable them for now and just try hash tests
+             ;; and unit tests.
+             ;; (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
+             (invoke "make" "ARGS=-R 'hash' --verbose" "test")))
          (add-after 'check 'unit-tests
            (lambda _
              (let ((excluded-unit-tests
@@ -1122,7 +1126,7 @@ Grisbi can manage multiple accounts, currencies and users.  It manages
 third party, expenditure and receipt categories, budgetary lines,
 financial years, budget estimates, bankcard management and other
 information.")
-    (home-page "http://grisbi.org")
+    (home-page "https://grisbi.org")
     (license license:gpl2+)))
 
 (define-public trezord
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index d5828deca2..826de90ccc 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -52,7 +52,7 @@
               (sha256
                (base32
                 "16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23"))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (patches (search-patches "ath9k-htc-firmware-objcopy.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -106,7 +106,7 @@ Linux-libre.")
          (uri (git-reference
                (url "http://git.bues.ch/git/b43-tools.git")
                (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32
            "1wgmj4d65izbhprwb5bcwimc2ryv19b9066lqzy4sa5m6wncm9cn"))))
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index eb92ae40f5..f993912838 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,7 +48,7 @@
 (define-public flashrom
   (package
     (name "flashrom")
-    (version "1.1")
+    (version "1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -56,7 +56,7 @@
                     version ".tar.bz2"))
               (sha256
                (base32
-                "06afq680n9p34hi3vrkn12vd1pfyq2062db9qqbi4hi21k3skbdf"))))
+                "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))))
     (build-system gnu-build-system)
     (inputs `(("dmidecode" ,dmidecode)
               ("pciutils" ,pciutils)
@@ -447,7 +447,7 @@ ME as far as possible (it only edits ME firmware image files).")
 (define-public uefitool
   (package
     (name "uefitool")
-    (version "0.26.0")
+    (version "0.27.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -455,7 +455,7 @@ ME as far as possible (it only edits ME firmware image files).")
                      (commit version)))
               (sha256
                (base32
-                "1ka7i12swm9r5bmyz5vjr82abd2f3lj8p35f4208byalfbx51yq7"))
+                "1i1p823qld927p4f1wcphqcnivb9mq7fi5xmzibxc3g9zzgnyc2h"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm
index 40d5e7e513..f09b383ef1 100644
--- a/gnu/packages/fltk.scm
+++ b/gnu/packages/fltk.scm
@@ -109,7 +109,7 @@ UI builder called FLUID that can be used to create applications in minutes.")
               (sha256
                (base32
                 "0j38mhnfqy6swcrnc5zxcwlqi8b1pgklyghxk6qs1lf4japv2zc0"))
-              (file-name (string-append name "-" version "-checkout"))))
+              (file-name (git-file-name name version))))
     (build-system waf-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 7297c277f1..b248b27ce2 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2019 Alva <alva@skogen.is>
 ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2020 Damien Cassou <damien@cassou.me>
+;;; Copyright © 2020 Amin Bandali <mab@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1221,7 +1222,7 @@ monospace, slab-serif fonts.")
                (base32
                 "17q5brcqyyc8gbjdgpv38p89s60cwxjlwy2ljnrvas5cj0s62np0"))))
     (build-system font-build-system)
-    (home-page "http://google.github.io/material-design-icons")
+    (home-page "https://google.github.io/material-design-icons")
     (synopsis "Icon font of Google Material Design icons")
     (description
      "Material design system icons are simple, modern, friendly, and sometimes
@@ -1585,3 +1586,42 @@ This package provides the TrueType fonts.")
 Mono’s typeface forms are simple and free from unnecessary details.  Rendered
 in small sizes, the text looks crisper.")
     (license license:asl2.0)))
+
+(define-public font-vazir
+  (package
+    (name "font-vazir")
+    (version "22.1.0")
+    (source
+     (origin
+       (method url-fetch/zipbomb)
+       (uri
+        (string-append "https://github.com/rastikerdar/vazir-font/"
+                       "releases/download/v" version
+                       "/vazir-font-v" version ".zip"))
+       (sha256
+        (base32
+         "0w3gwb5q33x5llw7cfs8qhaxr4ssg6rsx4b9day3993zn24xq031"))))
+    (build-system font-build-system)
+    (home-page "https://rastikerdar.github.io/vazir-font/")
+    (synopsis "Vazir Persian typeface")
+    (description
+     "Vazir is a beautiful and elegant Persian typeface originally based on
+DejaVu, and comes in six variants: Thin, Light, Normal, Medium, Bold, and
+Black.  This package provides four versions of Vazir:
+
+@itemize
+@item @code{Vazir}: The main version; includes Latin glyphs from Roboto.
+@item @code{Vazir-FD}: Like @code{Vazir}, but (always) uses Farsi digit glyphs
+instead of Latin ones.
+@item @code{Vazir-WOL}: Like @code{Vazir}, but without Roboto's Latin glyphs.
+@item @code{Vazir-FD-WOL}: Combination of @code{Vazir-FD} and @code{Vazir-WOL}:
+always uses Farsi digits, and does not include Latin glyphs from Roboto.
+@end itemize\n")
+    (license
+     ;; See https://github.com/rastikerdar/vazir-font/blob/master/LICENSE for
+     ;; details.
+     (list license:public-domain        ; the Vazir modifications to DejaVu
+                                        ; and the DejaVu modifications to...
+           (license:x11-style           ; ...the Bitstream Vera typeface
+            "file://LICENSE" "Bitstream Vera License")
+           license:asl2.0))))           ; Latin glyphs from Roboto
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 46c917b0d5..dca67ad3ca 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -51,15 +51,15 @@
        (revision "1"))
   (package
     (name "abc")
-    (version (string-append "0.0-" revision "-" (string-take commit 9)))
+    (version (git-version "0.0" revision commit))
     (source (origin
               (method url-fetch)
               (uri
                (string-append "https://bitbucket.org/alanmi/abc/get/" commit ".zip"))
               (file-name (string-append name "-" version "-checkout.zip"))
               (sha256
-                (base32
-                   "1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
+               (base32
+                "1syygi1x40rdryih3galr4q8yg1w5bvdzl75hd27v1xq0l5bz3d0"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
@@ -75,7 +75,7 @@
              (let* ((out (assoc-ref outputs "out"))
                     (out-bin (string-append out "/bin")))
                (install-file "abc" out-bin)))))))
-    (home-page "http://people.eecs.berkeley.edu/~alanmi/abc/")
+    (home-page "https://people.eecs.berkeley.edu/~alanmi/abc/")
     (synopsis "Sequential logic synthesis and formal verification")
     (description "ABC is a program for sequential logic synthesis and
 formal verification.")
@@ -216,13 +216,13 @@ For synthesis, the compiler generates netlists in the desired format.")
         (revision "2"))
    (package
     (name "icestorm")
-    (version (string-append "0.0-" revision "-" (string-take commit 9)))
+    (version (git-version "0.0" revision commit))
     (source (origin
               (method git-fetch)
               (uri (git-reference
                      (url "https://github.com/cliffordwolf/icestorm.git")
                      (commit commit)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                 (base32
                    "0bqm0rpywm64yvbq75klpyzb1g9sdsp1kvdlyqg4hvm8jw9w8lya"))))
@@ -267,7 +267,7 @@ Includes the actual FTDI connector.")
               (uri (git-reference
                      (url "https://github.com/YosysHQ/arachne-pnr.git")
                      (commit commit)))
-              (file-name (string-append name "-" version "-checkout"))
+              (file-name (git-file-name name version))
               (sha256
                 (base32
                    "1dqvjvgvsridybishv4pnigw9gypxh7r7nrqp9z9qq92v7c5rxzl"))))
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 0c0fcff02c..9d10f51257 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -11,12 +11,13 @@
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -505,7 +506,7 @@ with localed.  This package is extracted from the broader systemd package.")
 (define-public packagekit
   (package
     (name "packagekit")
-    (version "1.1.12")
+    (version "1.1.13")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -514,7 +515,7 @@ with localed.  This package is extracted from the broader systemd package.")
                    "PackageKit-" version ".tar.xz"))
              (sha256
               (base32
-               "00css16dv3asaxrklvyxy9dyjzhw82wmfrqxqpca9w2xryz58i8z"))))
+               "1dr1laic65ld95abp2yxbwvijnngh0dwyb1x49x4wjm5rhq43dl8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -934,6 +935,11 @@ message bus.")
          "--enable-elogind")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-/bin/cat
+           (lambda _
+             (substitute* "src/user.c"
+               (("/bin/cat") (which "cat")))
+             #t))
          (add-before
           'configure 'pre-configure
           (lambda* (#:key inputs #:allow-other-keys)
@@ -1205,28 +1211,36 @@ wish to perform colour calibration.")
 (define-public libfprint
   (package
     (name "libfprint")
-    (version "0.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://people.freedesktop.org/~hadess/"
-                                  name "-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1giwh2z63mn45galsjb59rhyrvgwcy01hvvp4g01iaa2snvzr0r5"))))
-    (build-system gnu-build-system)
+    (version "1.90.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.freedesktop.org/libfprint/libfprint")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0fdaak7qjr9b4482g7fhhqpyfdqpxq5kpmyzkp7f5i7qq2ynb78a"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:configure-flags (list (string-append "--with-udev-rules-dir="
-                                              (assoc-ref %outputs "out")
-                                              "/lib/udev/rules.d"))))
+     '(#:configure-flags
+       (list (string-append "-Dudev_rules_dir=" (assoc-ref %outputs "out")
+                            "/lib/udev/rules.d"))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("eudev" ,eudev)
+       ("glib:bin" ,glib "bin")         ; for {glib-,}mkenums
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk-doc" ,gtk-doc)             ; for 88 KiB of API documentation
+       ("pkg-config" ,pkg-config)))
     (inputs
-     `(("libusb" ,libusb)
-       ("nss" ,nss)
-       ("glib" ,glib)
-       ("eudev" ,eudev)
+     `(("glib" ,glib)
+       ("gusb" ,gusb)
+       ("nss" ,nss)                     ; for the URU4x00 driver
+
+       ;; Replacing this with cairo works but just results in a reference
+       ;; (only) to pixman in the end.
        ("pixman" ,pixman)))
-    (home-page "https://www.freedesktop.org/wiki/Software/fprint/libfprint/")
+    (home-page "https://fprint.freedesktop.org/")
     (synopsis "Library to access fingerprint readers")
     (description
      "libfprint is a library designed to make it easy for application
@@ -1237,37 +1251,90 @@ software.")
 (define-public fprintd
   (package
     (name "fprintd")
-    (version "0.7.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://people.freedesktop.org/~hadess/fprintd-"
-                    version ".tar.xz"))
-              (sha256
-               (base32
-                "05915i0bv7q62fqrs5diqwr8dz3pwqa1c1ivcgggkjyw0xk4ldp5"))))
-    (build-system gnu-build-system)
+    (version "1.90.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.freedesktop.org/libfprint/fprintd")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0mbzk263x7f58i9cxhs44mrngs7zw5wkm62j5r6xlcidhmfn03cg"))))
+    (build-system meson-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'build 'set-sysconfdir
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      ;; Work around a bug whereby the 'SYSCONFDIR' macro
-                      ;; expands literally to '${prefix}/etc'.
-                      (let ((out (assoc-ref outputs "out")))
-                        (substitute* "src/main.c"
-                          (("SYSCONFDIR, \"fprintd.conf\"")
-                           (string-append "\"" out "/etc\", "
-                                          "\"fprintd.conf\"")))
-                        #t))))))
+     `(#:configure-flags
+       (list "-Dsystemd_system_unit_dir=/tmp"
+             (string-append "-Ddbus_service_dir=" (assoc-ref %outputs "out")
+                            "/share/dbus-1/system-services")
+             (string-append "-Dpam_modules_dir=" (assoc-ref %outputs "out")
+                            "/lib/security"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-output-directories
+           ;; Install files to our output, not that of the ‘owner’ package.
+           ;; These are not exposed as Meson options and must be patched.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "meson.build"
+                 (("(dbus_interfaces_dir = ).*" _ set)
+                  (string-append set "'" out "/share/dbus-1/interfaces'\n"))
+                 (("(polkit_policy_directory = ).*" _ set)
+                  (string-append set "'" out "/share/polkit-1/actions/'\n"))
+                 (("(dbus_data_dir = ).*" _ set)
+                  (string-append set "get_option('prefix')"
+                                 " / get_option('datadir')\n")))
+               #t)))
+         (add-before 'configure 'patch-mistake
+           (lambda _
+             (substitute* "meson.build"
+               (("(storage_path = )(get_option\\('prefix'\\))(.*)"
+                 _ set mistake value)
+                (string-append set "''" value "\n")))
+             #t))
+         (add-before 'configure 'patch-systemd-dependencies
+           (lambda _
+             (substitute* "meson.build"
+               (("'(libsystemd|systemd)'") "'libelogind'"))
+             #t))
+         (add-before 'configure 'ignore-test-dependencies
+           (lambda _
+             (substitute* "meson.build"
+               (("pam_wrapper_dep .*") "")
+               ((".*'(cairo|dbus|dbusmock|gi|pypamtest)': .*,.*") ""))
+             #t))
+         (add-before 'install 'no-polkit-magic
+           ;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
+           (lambda _
+             (setenv "PKEXEC_UID" "something")
+             #t)))
+       #:tests? #f))                    ; XXX depend on unpackaged packages
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("intltool" ,intltool)))
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")         ; for glib-genmarshal
+       ("libxslt" ,libxslt)             ; for xsltproc
+       ("perl" ,perl)                   ; for pod2man
+       ("pkg-config" ,pkg-config)))
+       ;; For tests.
+       ;;("pam_wrapper" ,pam_wrapper)
+       ;;("python-pycairo" ,python-pycairo)
+       ;;("python-dbus" ,python-dbus)
+       ;;("python-dbusmock" ,python-dbusmock)
+       ;;("python-pygobject" ,python-pygobject)
+       ;;("python-pypamtest" ,python-pypamtest)
     (inputs
-     `(("libfprint" ,libfprint)
-       ("dbus-glib" ,dbus-glib)
+     `(("dbus-glib" ,dbus-glib)
+       ("elogind" ,elogind)
+       ("libfprint" ,libfprint)
+       ("linux-pam" ,linux-pam)
        ("polkit" ,polkit)
-       ("linux-pam" ,linux-pam)))                 ;for pam_fprintd
-    (home-page "https://www.freedesktop.org/wiki/Software/fprint/fprintd/")
+
+       ;; XXX These are in libfprint's Requires.private.  Meson refuses to grant
+       ;; the ‘libfprint-2’ dependency if they are not provided here.
+       ("gusb" ,gusb)
+       ("nss" ,nss)
+       ("pixman" ,pixman)))
+    (home-page "https://fprint.freedesktop.org/")
     (synopsis "D-Bus daemon that exposes fingerprint reader functionality")
     (description
      "fprintd is a D-Bus daemon that offers functionality of libfprint, a
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 6fa4fed74f..24527abae1 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -585,6 +585,34 @@ sounds from presets such as \"explosion\" or \"powerup\".")
     (home-page "http://www.drpetter.se/project_sfxr.html")
     (license license:expat)))
 
+(define-public surgescript
+  (package
+    (name "surgescript")
+    (version "0.5.4.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alemart/surgescript.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13q81439zg1bn7gskligskjgcfq0rdapp6f3llmrlk48vnyq49s0"))))
+     (build-system cmake-build-system)
+     (arguments
+      '(#:configure-flags
+        (let ((share (string-append (assoc-ref %outputs "out") "/share")))
+          (list (string-append "-DICON_PATH=" share "/pixmaps")
+                (string-append "-DMETAINFO_PATH=" share "/metainfo")))
+        #:tests? #f))
+     (home-page "https://docs.opensurge2d.org")
+     (synopsis "Scripting language for games")
+     (description "@code{SurgeScript} is a dynamically typed object-oriented
+scripting language designed for games.  Each object is a state machine that
+can be customized by attaching other objects.  The language supports automatic
+garbage collection and can be extended with plugins.")
+    (license license:asl2.0)))
+
 (define-public physfs
   (package
     (name "physfs")
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 587f25906d..d46253cda1 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -798,7 +798,7 @@ automata.  The following features are available:
 (define-public julius
   (package
     (name "julius")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method git-fetch)
@@ -807,7 +807,7 @@ automata.  The following features are available:
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0kgyzfjii4dhpy2h05977alwdmxyxb4jxznnrhlgb21m0ybncmvp"))))
+        (base32 "1ws5lmwdhla73676fj0w26v859n47s0wyxa0mgd0dmkx0x91qriy"))))
     (build-system cmake-build-system)
     (inputs
      `(("sdl2" ,sdl2)
@@ -856,6 +856,74 @@ and much more stand between you and the exit.  Record your moves and let your
 shadow mimic them to reach blocks you couldn't reach alone.")
     (license license:gpl3+)))
 
+(define-public opensurge
+  (package
+    (name "opensurge")
+    (version "0.5.1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/alemart/opensurge.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ih7hlqjnp9rv0m4lqf7c0s1ai532way5i4pk45jq1gqm8325dbv"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;there are no tests
+       #:configure-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (share (string-append out "/share")))
+         (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
+               (string-append "-DGAME_DATADIR=" share "/" ,name)
+               (string-append "-DDESKTOP_ENTRY_PATH=" share "/applications")
+               (string-append "-DDESKTOP_ICON_PATH=" share "/pixmaps")
+               (string-append "-DDESKTOP_METAINFO_PATH=" share "/metainfo")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-xdg-open-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Look for xdg-open in the store.
+             (substitute* "src/core/web.c"
+               (("/usr(/bin/xdg-open)" _ bin)
+                (string-append (assoc-ref inputs "xdg-utils") bin)))
+             #t))
+         (add-after 'unpack 'unbundle-fonts
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Replace bundled Roboto fonts with links to the store.
+             (with-directory-excursion "fonts"
+               (let ((roboto-dir (string-append
+                                  (assoc-ref inputs "font-google-roboto")
+                                  "/share/fonts/truetype/")))
+                 (for-each
+                  (lambda (font)
+                    (delete-file font)
+                    (symlink (string-append roboto-dir font) font))
+                  '("Roboto-Black.ttf" "Roboto-Bold.ttf" "Roboto-Medium.ttf")))
+               #t))))))
+    (inputs
+     `(("allegro" ,allegro)
+       ("font-google-roboto" ,font-google-roboto)
+       ("surgescript" ,surgescript)
+       ("xdg-utils" ,xdg-utils)))
+    (home-page "https://opensurge2d.org")
+    (synopsis "2D retro side-scrolling game")
+    (description "@code{Open Surge} is a 2D retro side-scrolling platformer
+inspired by the Sonic games.  The player runs at high speeds through each
+level while collecting items and avoiding obstacles.  The game includes a
+built-in level editor.")
+    (license
+     ;; Code is under GPL 3+, assets are under various licenses.
+     ;; See src/misc/credits.c for details.
+     (list license:gpl3+
+           license:cc0
+           license:cc-by3.0
+           license:cc-by-sa3.0
+           license:expat
+           license:public-domain
+           license:silofl1.1))))
+
 (define-public knights
   (package
     (name "knights")
@@ -1050,7 +1118,7 @@ watch your CPU playing while enjoying a cup of tea!")
 (define-public nethack
   (package
     (name "nethack")
-    (version "3.6.4")
+    (version "3.6.5")
     (source
       (origin
         (method url-fetch)
@@ -1058,7 +1126,7 @@ watch your CPU playing while enjoying a cup of tea!")
          (string-append "https://www.nethack.org/download/" version "/nethack-"
                         (string-join (string-split version #\.) "") "-src.tgz"))
         (sha256
-          (base32 "0ndxgnsprwgjnk0qb24iljkpijnfncgvfb3h3zb129h3cs2anc85"))))
+          (base32 "0xifs8pqfffnmkbpmrcd1xf14yakcj06nl2bbhy4dyacg8myysmv"))))
     (inputs
       `(("ncurses" ,ncurses)
         ("bison" ,bison)
@@ -1320,7 +1388,7 @@ utilizing the art assets from the @code{SuperTux} project.")
 (define-public roguebox-adventures
   (package
     (name "roguebox-adventures")
-    (version "2.2.1")
+    (version "3.0.1")
     (source
      (origin
        (method url-fetch)
@@ -1330,7 +1398,7 @@ utilizing the art assets from the @code{SuperTux} project.")
        (file-name (string-append name "-" version ".zip"))
        (sha256
         (base32
-         "0kmzdgnik8fsf3bg55546l77p3mfxn2awkzfzzdn20n82rd2babw"))))
+         "05zd03s5w9kcpklfgcggbaa6rwf59nm0q9vcj6gh9v2lh402k067"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; no check target
@@ -1356,6 +1424,9 @@ utilizing the art assets from the @code{SuperTux} project.")
                   (string-append "'" data "'"))
                  (("^basic_path.*$")
                   (string-append "basic_path ='" data "'\n")))
+               (substitute* "LIB/dialog.py"
+                 (("d_path = os\\.path\\.dirname\\(.*\\)\\)")
+                  (string-append "d_path = '" data "'")))
                (substitute* "LIB/gra_files.py"
                  (("basic_path = b_path\\.replace\\('/LIB',''\\)")
                   (string-append "basic_path ='" data "'\n")))
@@ -2582,7 +2653,7 @@ falling, themeable graphics and sounds, and replays.")
 (define-public wesnoth
   (package
     (name "wesnoth")
-    (version "1.14.9")
+    (version "1.14.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@@ -2591,7 +2662,7 @@ falling, themeable graphics and sounds, and replays.")
                                   "wesnoth-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mhdrlflxxyknf54lwdbvs7fazlc1scf7z6vxxa3j746fks533ga"))))
+                "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ;no check target
@@ -4020,7 +4091,7 @@ colors, pictures, and sounds.")
     (inputs
      `(("bash" ,bash)
        ("love" ,love)))
-    (home-page "http://tangramgames.dk/games/mrrescue")
+    (home-page "https://tangramgames.dk/games/mrrescue")
     (synopsis "Arcade-style fire fighting game")
     (description
      "Mr. Rescue is an arcade styled 2d action game centered around evacuating
@@ -4190,7 +4261,7 @@ for Un*x systems with X11.")
 (define-public freeciv
   (package
    (name "freeciv")
-   (version "2.6.1")
+   (version "2.6.2")
    (source
     (origin
      (method url-fetch)
@@ -4202,7 +4273,7 @@ for Un*x systems with X11.")
                   (version-major+minor version) "/" version
                   "/freeciv-" version ".tar.bz2")))
      (sha256
-      (base32 "1qmrhrwm0ryvsh1zsxcxj128lhyvaxap7k39sam3hh8rl0fq9rnc"))))
+      (base32 "13vc2xg1cf19rhbnr7k38b56b2hdapqymq5vma1l69kn7hyyz0b1"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
@@ -4723,10 +4794,10 @@ with the mouse isn’t always trivial.")
     (synopsis "Abstract puzzle game")
     (description "Chroma is an abstract puzzle game. A variety of colourful
 shapes are arranged in a series of increasingly complex patterns, forming
- fiendish traps that must be disarmed and mysterious puzzles that must be
- manipulated in order to give up their subtle secrets. Initially so
- straightforward that anyone can pick it up and begin to play, yet gradually
- becoming difficult enough to tax even the brightest of minds.")
+fiendish traps that must be disarmed and mysterious puzzles that must be
+manipulated in order to give up their subtle secrets.  Initially so
+straightforward that anyone can pick it up and begin to play, yet gradually
+becoming difficult enough to tax even the brightest of minds.")
     (license license:gpl2+)))
 
 (define-public fillets-ng
@@ -8146,23 +8217,15 @@ win.")
 (define-public freeorion
   (package
     (name "freeorion")
-    (version "0.4.8")
+    (version "0.4.9")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/freeorion/freeorion.git")
-             ;; Most recent stable release uses boost_signals (v1) which was
-             ;; later replaced with boost-signals2 and no longer exists.  This
-             ;; commit builds and runs.
-             ;;
-             ;; TODO: Update this when the next stable release when it is
-             ;; available.
-             (commit "470d0711537804df3c2ca25532f674ab4bec58af")))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "https://github.com/freeorion/freeorion/releases/"
+                           "download/v" version "/FreeOrion_v" version
+                           "_2020-02-02.db53471_Source.tar.gz"))
        (sha256
-        (base32
-         "1wsw632l1cj17px6i88nqjzs0dngp5rsr67n6qkkjlfjfxi69j0f"))
+        (base32 "1qfnqkysagh8dw26plk229qh17mv4prjxs6qhfyczrmrrakb72an"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 61b8e55e52..b0fdd06d08 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -393,7 +393,7 @@ functionality of proj in their own software.")
              #t)))))
     (inputs
      `(("glib" ,glib)))
-    (home-page "http://proj4.org/")
+    (home-page "https://proj.org/")
     (synopsis "Cartographic Projections Library")
     (description
      "Proj.4 is a library for converting coordinates between cartographic
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 119440580a..629902c85f 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -268,7 +268,7 @@ also known as DXTn or DXTC) for Mesa.")
         ("libxvmc" ,libxvmc)
         ,@(match (%current-system)
             ((or "x86_64-linux" "i686-linux")
-             `(("llvm" ,llvm)))
+             `(("llvm" ,llvm-8)))
             (_
              `()))
         ("makedepend" ,makedepend)
@@ -435,7 +435,7 @@ from software emulation to complete hardware acceleration for modern GPUs.")
      `(("libclc" ,libclc)
        ,@(package-inputs mesa)))
     (native-inputs
-     `(("clang" ,clang)
+     `(("clang" ,clang-8)
        ,@(package-native-inputs mesa)))))
 
 (define-public mesa-opencl-icd
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 7f375fefc5..cd334abb53 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -2,6 +2,8 @@
 ;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +23,7 @@
 (define-module (gnu packages gnome-xyz)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system copy)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module ((guix licenses) #:prefix license:)
@@ -304,6 +307,43 @@ It uses ES6 syntax and claims to be more actively maintained than others.")
     (home-page "https://extensions.gnome.org/extension/2182/noannoyance/")
     (license license:gpl2)))
 
+(define-public gnome-shell-extension-paperwm
+  (package
+    (name "gnome-shell-extension-paperwm")
+    (version "34.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/paperwm/PaperWM.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qry75f696pgmd9yzqvwhq5h6cipin2fvk7h881g29cjcpxim37a"))
+              (snippet
+               '(begin (delete-file "schemas/gschemas.compiled")))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan
+       '(("." "share/gnome-shell/extensions/paperwm@hedning:matrix.org"
+          #:include-regexp ("\\.js(on)?$" "\\.css$" "\\.ui$" "\\.png$"
+                            "\\.xml$" "\\.compiled$")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'compile-schemas
+           (lambda _
+             (with-directory-excursion "schemas"
+               (invoke "make"))
+             #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin"))) ; for glib-compile-schemas
+    (home-page "https://github.com/paperwm/PaperWM")
+    (synopsis "Tiled scrollable window management for GNOME Shell")
+    (description "PaperWM is an experimental GNOME Shell extension providing
+scrollable tiling of windows and per monitor workspaces.  It's inspired by paper
+notebooks and tiling window managers.")
+    (license license:gpl3)))
+
 (define-public numix-theme
   (package
     (name "numix-theme")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 014b68f54f..af45ceb505 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2181,7 +2181,15 @@ from forcing GEXP-PROMISE."
                 ;; The following crate(s) are needed in addition to the ones replaced:
                 (begin
                   (invoke
-                   "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor"))
+                   "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-proc-macro2-0.4) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-quote-0.6) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-unicode-xid-0.1) "-C" "vendor")
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-maybe-uninit-2.0) "-C" "vendor"))
                 (for-each
                   (lambda (crate)
                     (delete-file-recursively (string-append "vendor/" (car crate)))
@@ -2246,7 +2254,7 @@ from forcing GEXP-PROMISE."
 ;; locale_config 0.3
                     ("log" . #+(package-source rust-log-0.4))
                     ("mac" . #+(package-source rust-mac-0.1))
-;; malloc_buf 0.0
+                    ("malloc_buf" . #+(package-source rust-malloc-buf-0.0))
 ;; markup5ever 0.9
                     ("matches" . #+(package-source rust-matches-0.1))
 ;; matrixmultiply 0.2
@@ -2257,12 +2265,12 @@ from forcing GEXP-PROMISE."
                     ("nodrop" . #+(package-source rust-nodrop-0.1))
                     ("num-complex" . #+(package-source rust-num-complex-0.2))
                     ("num-integer" . #+(package-source rust-num-integer-0.1))
-;; num-rational 0.2
+                    ("num-rational" . #+(package-source rust-num-rational-0.2))
                     ("num-traits" . #+(package-source rust-num-traits-0.2))
                     ("num_cpus" . #+(package-source rust-num-cpus-1.10))
-;; objc 0.2
-;; objc-foundation 0.1
-;; objc_id 0.1
+                    ("objc" . #+(package-source rust-objc-0.2))
+                    ("objc-foundation" . #+(package-source rust-objc-foundation-0.1))
+                    ("objc_id" . #+(package-source rust-objc-id-0.1))
 ;; pango 0.7
 ;; pango-sys 0.9
 ;; pangocairo 0.8
@@ -2308,7 +2316,7 @@ from forcing GEXP-PROMISE."
                     ("siphasher" . #+(package-source rust-siphasher-0.2))
                     ("smallvec" . #+(package-source rust-smallvec-0.6))
                     ("string_cache" . #+(package-source rust-string-cache-0.7))
-                    ;("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
+                    ("string_cache_codegen" . #+(package-source rust-string-cache-codegen-0.4))
                     ("string_cache_shared" . #+(package-source rust-string-cache-shared-0.3))
                     ("syn" . #+(package-source rust-syn-1.0))
                     ("tendril" . #+(package-source rust-tendril-0.4))
@@ -2327,8 +2335,7 @@ from forcing GEXP-PROMISE."
                     ("winapi-i686-pc-windows-gnu" . #+(package-source rust-winapi-i686-pc-windows-gnu-0.4))
                     ("winapi-util" . #+(package-source rust-winapi-util-0.1))
                     ("winapi-x86_64-pc-windows-gnu" . #+(package-source rust-winapi-x86-64-pc-windows-gnu-0.4))
-;; xml-rs 0.8
-                    )))
+                    ("xml-rs" . #+(package-source rust-xml-rs-0.8)))))
               (format #t "Replacing vendored crates in the tarball and repacking ...~%")
               (force-output)
               (invoke "tar" "cfa" #$output
@@ -5330,7 +5337,7 @@ USB transfers with your high-level application or system daemon.")
 (define-public simple-scan
   (package
     (name "simple-scan")
-    (version "3.34.2")
+    (version "3.34.4")
     (source
      (origin
        (method url-fetch)
@@ -5338,7 +5345,7 @@ USB transfers with your high-level application or system daemon.")
                            (version-major+minor version) "/"
                            "simple-scan-" version ".tar.xz"))
        (sha256
-        (base32 "1fk3g4f9slckqfwm576jrjq1d1qihw0dlgzdf00ns7qbhzb0kxsp"))))
+        (base32 "0xvy672zyl6jsdlnxma8nc2aqsx9k92jhp6wfxs0msj9ppp1nd3z"))))
     (build-system meson-build-system)
     ;; TODO: Fix icons in home screen, About dialogue, and scan menu.
     (arguments
@@ -7906,7 +7913,29 @@ world.")
        ("yelp" ,yelp)
      ;; Others
        ("hicolor-icon-theme" ,hicolor-icon-theme)
-       ("gnome-online-accounts" ,gnome-online-accounts)))
+       ("gnome-online-accounts" ,gnome-online-accounts)
+
+       ;; Packages not part of GNOME proper but that are needed for a good
+       ;; experience.  See <https://bugs.gnu.org/39646>.
+       ;; XXX: Find out exactly which ones are needed and why.
+       ("font-cantarell"            ,font-cantarell)
+       ("font-dejavu"               ,font-dejavu)
+       ("at-spi2-core"              ,at-spi2-core)
+       ("dbus"                      ,dbus)
+       ("dconf"                     ,dconf)
+       ("desktop-file-utils"        ,desktop-file-utils)
+       ("gnome-default-applications" ,gnome-default-applications)
+       ("gnome-themes-standard"     ,gnome-themes-standard)
+       ("gst-plugins-base"          ,gst-plugins-base)
+       ("gst-plugins-good"          ,gst-plugins-good)
+       ("gucharmap"                 ,gucharmap)
+       ("pinentry-gnome3"           ,pinentry-gnome3)
+       ("pulseaudio"                ,pulseaudio)
+       ("shared-mime-info"          ,shared-mime-info)
+       ("system-config-printer"     ,system-config-printer)
+       ("xdg-user-dirs"             ,xdg-user-dirs)
+       ("yelp"                      ,yelp)
+       ("zenity"                    ,zenity)))
     (synopsis "The GNU desktop environment")
     (home-page "https://www.gnome.org/")
     (description
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index d626d2cc65..f9b71a2f3a 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 ng0 <ng0@n0.is>
-;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;;
@@ -150,14 +150,14 @@ tool to extract metadata from a file and print the results.")
 (define-public libmicrohttpd
   (package
    (name "libmicrohttpd")
-   (version "0.9.69")
+   (version "0.9.70")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "0zp34zgcahym5kp2r83gfb5wnr8yf643a26k6zk96x3qica6p6zv"))))
+              "01vkjy89b1ylmh22dy5yza2r414nfwcfixxh3v29nvzrjv9s7l4h"))))
    (build-system gnu-build-system)
    (inputs
     `(("curl" ,curl)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index b31280e39b..c5c3d5263f 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
@@ -466,7 +466,7 @@ gpgpme starting with version 1.7.")
               (sha256
                (base32
                 "0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c"))
-              (file-name (string-append name "-" version "-checkout"))))
+              (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1090,15 +1090,17 @@ over.")
 (define-public jetring
   (package
     (name "jetring")
-    (version "0.27")
+    (version "0.29")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "mirror://debian/pool/main/j/" name "/"
-                            name "_" version ".tar.xz"))
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://salsa.debian.org/debian/jetring")
+               (commit (string-append "debian/" version))))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "0jy0x5zj7v87xgyldlsx1knzp0mv10wzamblrw1b61i2m1ii4pxz"))))
+          "1acbx2vnbkms1c0wgcnh05d4g359sg5z0aiw541vx2qq9sgdhlv6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index dd7c67d553..e04755aa52 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -179,7 +179,7 @@ interface.  It is fast, feature rich, easy to configure, and easy to use.")
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("pkg-config" ,pkg-config)))
-    (home-page "http://www.dockapps.net/wmbattery")
+    (home-page "https://www.dockapps.net/wmbattery")
     (synopsis "Display laptop battery info")
     (description
      "Wmbattery displays the status of your laptop's battery in a small icon.
@@ -233,7 +233,7 @@ other compatible window managers.")
        ("libxpm" ,libxpm)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.dockapps.net/wmcpuload")
+    (home-page "https://www.dockapps.net/wmcpuload")
     (synopsis "Monitor CPU usage")
     (description
      "Wmcpuload displays the current CPU usage, expressed as a percentile and a
@@ -265,7 +265,7 @@ on.")
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("pkg-config" ,pkg-config)))
-    (home-page "http://www.dockapps.net/wmclock")
+    (home-page "https://www.dockapps.net/wmclock")
     (synopsis "Display the date and time")
     (description
      "wmclock is an applet for Window Maker which displays the date and time in
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 7b51a4fd90..63eb36fd7d 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -56,15 +56,15 @@
 (define-public igraph
   (package
     (name "igraph")
-    (version "0.7.1")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://igraph.org/nightly/get/c/igraph-"
-                           version ".tar.gz"))
+       (uri (string-append "https://github.com/igraph/igraph/releases/"
+                           "download/" version "/igraph-" version ".tar.gz"))
        (sha256
         (base32
-         "1pxh8sdlirgvbvsw8v65h6prn7hlm45bfsl1yfcgd6rn4w706y6r"))))
+         "0jcnfvahrlj08y46vnax5y5bb294v4b9n00qsy7pbx0cc0sp6qvj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -90,20 +90,35 @@ more.")
 (define-public python-igraph
   (package (inherit igraph)
     (name "python-igraph")
-    (version "0.7.1.post6")
+    (version "0.8.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-igraph" version))
        (sha256
         (base32
-         "0xp61zz710qlzhmzbfr65d5flvsi8zf2xy78s6rsszh719wl5sm5"))))
+         "13mbrlmnbgbzw6y8ws7wj0a3ly3in8j4l1ngi6yxvgvxxi4bprj7"))))
     (build-system python-build-system)
-    (arguments '())
+    (arguments
+     '(#:configure-flags
+       (list "--use-pkg-config")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'build
+           (lambda _
+             (invoke "python" "./setup.py" "build" "--use-pkg-config")))
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "pytest" "-v"))))))
     (inputs
      `(("igraph" ,igraph)))
+    (propagated-inputs
+     `(("python-texttable" ,python-texttable)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("python-pytest" ,python-pytest)))
     (home-page "http://pypi.python.org/pypi/python-igraph")
     (synopsis "Python bindings for the igraph network analysis library")))
 
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index c49ba69475..985ebefa53 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -88,14 +88,14 @@
 (define-public blender
   (package
     (name "blender")
-    (version "2.81a")
+    (version "2.82")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.blender.org/source/"
                                   "blender-" version ".tar.xz"))
               (sha256
                (base32
-                "1zl0ar95qkxsrbqw9miz2hrjijlqjl06vg3clfk9rm7krr2l3b2j"))))
+                "0rgw8nilvn6k6r7p28y2l1rwpami1cc8xz473jaahn7wa4ndyah0"))))
     (build-system cmake-build-system)
     (arguments
       (let ((python-version (version-major+minor (package-version python))))
@@ -127,11 +127,11 @@
          (modify-phases %standard-phases
            ;; XXX This file doesn't exist in the Git sources but will probably
            ;; exist in the eventual 2.80 source tarball.
-;           (add-after 'unpack 'fix-broken-import
-;             (lambda _
-;               (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
-;                 (("import encode_bin") "from . import encode_bin"))
-;               #t))
+           (add-after 'unpack 'fix-broken-import
+             (lambda _
+               (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
+                 (("import encode_bin") "from . import encode_bin"))
+               #t))
            (add-after 'set-paths 'add-ilmbase-include-path
              (lambda* (#:key inputs #:allow-other-keys)
                ;; OpenEXR propagates ilmbase, but its include files do not appear
@@ -176,95 +176,6 @@ compositing and motion tracking, even video editing and game creation.  The
 application can be customized via its API for Python scripting.")
     (license license:gpl2+)))
 
-(define-public blender-2.79
-  (package
-    (name "blender")
-    (version "2.79b")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://download.blender.org/source/"
-                                  "blender-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"))
-              (patches (search-patches "blender-2.79-newer-ffmpeg.patch"
-                                       "blender-2.79-python-3.7-fix.patch"))))
-    (build-system cmake-build-system)
-    (arguments
-      (let ((python-version (version-major+minor (package-version python))))
-       `(;; Test files are very large and not included in the release tarball.
-         #:tests? #f
-         #:configure-flags
-         (list "-DWITH_CODEC_FFMPEG=ON"
-               "-DWITH_CODEC_SNDFILE=ON"
-               "-DWITH_CYCLES=ON"
-               "-DWITH_DOC_MANPAGE=ON"
-               "-DWITH_FFTW3=ON"
-               "-DWITH_GAMEENGINE=ON"
-               "-DWITH_IMAGE_OPENJPEG=ON"
-               "-DWITH_INPUT_NDOF=ON"
-               "-DWITH_INSTALL_PORTABLE=OFF"
-               "-DWITH_JACK=ON"
-               "-DWITH_MOD_OCEANSIM=ON"
-               "-DWITH_PLAYER=ON"
-               "-DWITH_PYTHON_INSTALL=OFF"
-               "-DWITH_PYTHON_INSTALL=OFF"
-               "-DWITH_SYSTEM_OPENJPEG=ON"
-               (string-append "-DPYTHON_LIBRARY=python" ,python-version "m")
-               (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
-                              "/lib")
-               (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
-                              "/include/python" ,python-version "m")
-               (string-append "-DPYTHON_VERSION=" ,python-version))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'fix-broken-import
-             (lambda _
-               (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
-                 (("import encode_bin") "from . import encode_bin"))
-               #t))
-           (add-after 'set-paths 'add-ilmbase-include-path
-             (lambda* (#:key inputs #:allow-other-keys)
-               ;; OpenEXR propagates ilmbase, but its include files do not appear
-               ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
-               ;; the CPATH to satisfy the dependency on "half.h".
-               (setenv "CPATH"
-                       (string-append (assoc-ref inputs "ilmbase")
-                                      "/include/OpenEXR"
-                                      ":" (or (getenv "CPATH") "")))
-               #t))))))
-    (inputs
-     `(("boost" ,boost)
-       ("jemalloc" ,jemalloc)
-       ("libx11" ,libx11)
-       ("openimageio" ,openimageio-1.7)
-       ("openexr" ,openexr)
-       ("ilmbase" ,ilmbase)
-       ("openjpeg" ,openjpeg-1)
-       ("libjpeg" ,libjpeg)
-       ("libpng" ,libpng)
-       ("libtiff" ,libtiff)
-       ("ffmpeg" ,ffmpeg)
-       ("fftw" ,fftw)
-       ("jack" ,jack-1)
-       ("libsndfile" ,libsndfile)
-       ("freetype" ,freetype)
-       ("glew" ,glew)
-       ("openal" ,openal)
-       ("python" ,python)
-       ("zlib" ,zlib)))
-    (home-page "https://blender.org/")
-    (synopsis "3D graphics creation suite")
-    (description
-     "Blender is a 3D graphics creation suite.  It supports the entirety of
-the 3D pipeline—modeling, rigging, animation, simulation, rendering,
-compositing and motion tracking, even video editing and game creation.  The
-application can be customized via its API for Python scripting.
-
-NOTE: This older version of Blender is the last release that does not require
-OpenGL 3.  It is retained for use with older computers.")
-    (license license:gpl2+)))
-
 (define-public assimp
   (package
     (name "assimp")
@@ -530,7 +441,7 @@ visual effects work for film.")
 (define-public openscenegraph
   (package
     (name "openscenegraph")
-    (version "3.6.4")
+    (version "3.6.5")
     (source
      (origin
        (method git-fetch)
@@ -538,14 +449,13 @@ visual effects work for film.")
              (url "https://github.com/openscenegraph/OpenSceneGraph")
              (commit (string-append "OpenSceneGraph-" version))))
        (sha256
-        (base32
-         "0x8hdbzw0b71j91fzp9cwmy9a7ava8v8wwyj8nxijq942vdx1785"))
+        (base32 "00i14h82qg3xzcyd8p02wrarnmby3aiwmz0z43l50byc9f8i05n1"))
        (file-name (git-file-name name version))))
     (properties
      `((upstream-name . "OpenSceneGraph")))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; no test target available
+     `(#:tests? #f                      ; no test target available
        ;; Without this flag, 'rd' will be added to the name of the
        ;; library binaries and break linking with other programs.
        #:build-type "Release"
@@ -558,15 +468,15 @@ visual effects work for film.")
        ("unzip" ,unzip)))
     (inputs
      `(("giflib" ,giflib)
-       ("libjpeg" ,libjpeg)             ; Required for the JPEG texture plugin.
+       ("libjpeg" ,libjpeg)             ; required by the JPEG texture plugin
        ("jasper" ,jasper)
        ("librsvg" ,librsvg)
        ("libxrandr" ,libxrandr)
        ("ffmpeg" ,ffmpeg)
        ("mesa" ,mesa)))
-    (synopsis "High performance real-time graphics toolkit")
+    (synopsis "High-performance real-time graphics toolkit")
     (description
-     "The OpenSceneGraph is a high performance 3D graphics toolkit
+     "The OpenSceneGraph is a high-performance 3D graphics toolkit
 used by application developers in fields such as visual simulation, games,
 virtual reality, scientific visualization and modeling.")
     (home-page "http://www.openscenegraph.org")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index f934eabe27..16852650ea 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -986,7 +986,7 @@ images onto Cairo surfaces.")
      `(("guile-lib" ,guile-lib)
        ("guile-cairo" ,guile-cairo)
        ("guile-rsvg" ,guile-rsvg)))
-    (home-page "http://wingolog.org/software/guile-present/")
+    (home-page "https://wingolog.org/software/guile-present/")
     (synopsis "Create SVG or PDF presentations in Guile")
     (description
      "Guile-Present defines a declarative vocabulary for presentations,
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index e015503372..37a5198e4e 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2960,18 +2960,17 @@ tests being run, resulting clearer and more specific output.")
 (define-public guile-semver
   (package
     (name "guile-semver")
-    (version "0.1.0")
+    (version "0.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://files.ngyro.com/guile-semver/"
                                   "guile-semver-" version ".tar.gz"))
               (sha256
                (base32
-                "06b66rj7nyhr6i3dpkwvfw1xb10w2pngrsw2hxfxkznwsbh9byfz"))))
+                "109p4n39ln44cxvwdccf9kgb96qx54makvd2ir521ssz6wchjyag"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("srfi-64-driver" ,srfi-64-driver)))
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("guile" ,guile-2.2)))
     (home-page "https://ngyro.com/software/guile-semver.html")
@@ -3038,3 +3037,75 @@ SHA-512).")
     (name "guile3.0-hashing")
     (native-inputs
      `(("guile" ,guile-next)))))
+
+(define-public guile-webutils
+  (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299")
+        (revision "0"))
+    (package
+      (name "guile-webutils")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://notabug.org/cwebber/guile-webutils.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)
+         ("texinfo" ,texinfo)))
+      (inputs
+       `(("guile" ,guile-2.2)))
+      (propagated-inputs
+       `(("guile-irregex" ,guile-irregex)
+         ("guile-gcrypt" ,guile-gcrypt)))
+      (home-page "https://notabug.org/cwebber/guile-webutils")
+      (synopsis "Web application authoring utilities for Guile")
+      (description
+       "This package provides tooling to write web applications in Guile, such
+as signed sessions, multipart message support, etc.")
+      (license license:gpl3+))))
+
+(define-public guile-lens
+  (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f")
+        (revision "0"))
+    (package
+      (name "guile-lens")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/a-sassmannshausen/guile-lens.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0w8jzqyla56yrgj7acsgd4nspyir6zgp3vgxid4xmwhg9wmf1ida"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'run-hall
+             (lambda _
+               (setenv "HOME" "/tmp")   ; for ~/.hall
+               (invoke "hall" "dist" "-x"))))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("guile" ,guile-2.2)
+         ("guile-hall" ,guile-hall)
+         ("pkg-config" ,pkg-config)
+         ("texinfo" ,texinfo)))
+      (home-page "https://gitlab.com/a-sassmannshausen/guile-lens.git")
+      (synopsis "Composable lenses for data structures in Guile")
+      (description
+       "Guile-Lens is a library implementing lenses in Guile.  The library is
+currently a re-implementation of the lentes library for Clojure.  Lenses
+provide composable procedures, which can be used to focus, apply functions
+over, or update a value in arbitrary data structures.")
+      (license license:gpl3+))))
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 289158ea1b..a5466f8672 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -654,7 +654,9 @@ type system, elevating types to first-class status.")
                 "0c5i3d16hp7gp9rd78vk9zc45js8bphf92m4lbb5gyi4l1yl7kkm"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("guile" ,guile-2.2)
+       ("guile-bytestructures" ,guile-bytestructures)))
     (inputs
      `(("guile" ,guile-2.2)
        ("libgit2" ,libgit2)))
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 767f0c7f99..70348ee3cb 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -113,8 +113,7 @@ installation of Haskell libraries and programs.")
          (uri (git-reference
                (url "https://github.com/jameysharp/corrode.git")
                (commit "b6699fb2fa552a07c6091276285a44133e5c9789")))
-         (file-name
-          (string-append name "-" version "-checkout"))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "02v0yyj6sk4gpg2222wzsdqjxn8w66scbnf6b20x0kbmc69qcz4r"))))
       (build-system haskell-build-system)
@@ -270,14 +269,14 @@ unique algebra of patches called @url{http://darcs.net/Theory,Patchtheory}.
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "7.20200202.7")
+    (version "7.20200219")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
-        (base32 "1dj1ss7kp82wa0ybilhl88q6w49rj70qh61k2q8qfyx4ghliiigh"))))
+        (base32 "0pzwjh98jpirgssbd7pqfk7mzraibrk277dn34s2mrah8zy75b58"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
@@ -442,7 +441,7 @@ used to keep a folder in sync between computers.")
        ("ghc-aeson" ,ghc-aeson)
        ("ghc-lib-parser" ,ghc-lib-parser)
        ("hscolour" ,hscolour)))
-    (home-page "http://community.haskell.org/~ndm/hlint/")
+    (home-page "https://github.com/ndmitchell/hlint")
     (synopsis "Suggest improvements for Haskell source code")
     (description "HLint reads Haskell programs and suggests changes that
 hopefully make them easier to read.  HLint also makes it easy to disable
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index 6467e9bbca..4170ec82f0 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -827,7 +827,7 @@ implementation of SSL.")
      `(("ghc-hunit" ,ghc-hunit)
        ("ghc-test-framework" ,ghc-test-framework)
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
-    (home-page "http://hackage.haskell.org/package/openssl-streams")
+    (home-page "https://hackage.haskell.org/package/openssl-streams")
     (synopsis "OpenSSL network support for io-streams")
     (description "This library contains io-streams routines for secure
 networking using OpenSSL (by way of HsOpenSSL).")
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index e5ec572e1d..acdc1447a4 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -52,7 +52,7 @@
     (build-system haskell-build-system)
     (native-inputs
      `(("ghc-quickcheck" ,ghc-quickcheck)))
-    (home-page "http://community.haskell.org/~ndm/tagsoup/")
+    (home-page "https://github.com/ndmitchell/tagsoup")
     (synopsis
      "Parsing and extracting information from (possibly malformed) HTML/XML
 documents")
@@ -620,7 +620,7 @@ based WAI (Web Application Interface in Haskell).")
       ("ghc-clock" ,ghc-clock)
       ("ghc-psqueues" ,ghc-psqueues)
       ("ghc-tls" ,ghc-tls)))
-  (home-page "http://hackage.haskell.org/package/tls-session-manager")
+  (home-page "https://hackage.haskell.org/package/tls-session-manager")
   (synopsis "In-memory TLS session manager")
   (description "This Haskell library provides a TLS session manager with
 limitation, automatic pruning, energy saving and replay resistance.")
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 7825963523..e368082c03 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -790,7 +790,7 @@ pragmas in your code.")
     (arguments
      `(#:cabal-revision
        ("1" "15sn2qc8k0hxbb2nai341kkrci98hlhzcj2ci087m0zxcg5jcdbp")))
-    (home-page "http://hackage.haskell.org/package/base-compat-batteries")
+    (home-page "https://hackage.haskell.org/package/base-compat-batteries")
     (synopsis "base-compat with extra batteries")
     (description "This library provides functions available in later
 versions of @code{base} to a wider range of compilers, without requiring
@@ -3577,7 +3577,7 @@ Double.")
      `(("ghc-quickcheck" ,ghc-quickcheck)
        ("ghc-hspec" ,ghc-hspec)
        ("hspec-discover" ,hspec-discover)))
-    (home-page "http://hackage.haskell.org/package/errorcall-eq-instance")
+    (home-page "https://hackage.haskell.org/package/errorcall-eq-instance")
     (synopsis "Orphan Eq instance for ErrorCall")
     (description
      "Prior to @code{base-4.7.0.0} there was no @code{Eq} instance for @code{ErrorCall}.
@@ -3693,7 +3693,7 @@ generated SQL and optimize it for your backend.")
        ("ghc-silently" ,ghc-silently)
        ("ghc-filemanip" ,ghc-filemanip)))
     (home-page
-     "http://hackage.haskell.org/package/ghc-exactprint")
+     "https://hackage.haskell.org/package/ghc-exactprint")
     (synopsis "ExactPrint for GHC")
     (description
      "Using the API Annotations available from GHC 7.10.2, this library
@@ -4018,7 +4018,7 @@ file contents, and more.")
     (build-system haskell-build-system)
     (native-inputs
      `(("ghc-quickcheck" ,ghc-quickcheck)))
-    (home-page "http://hackage.haskell.org/package/filepath-bytestring")
+    (home-page "https://hackage.haskell.org/package/filepath-bytestring")
     (synopsis "Library for manipulating RawFilePaths in a cross-platform way")
     (description "This package provides a drop-in replacement for the standard
 @code{filepath} library, operating on @code{RawFilePath} values rather than
@@ -5056,7 +5056,7 @@ a set of wrappers to use the hash tables in the IO monad.")
        (sha256
         (base32 "1wyxd8x33x4v5vxyzkhm610pl86gbkc8y439092fr1735q9g7kfq"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/haskell-lexer")
+    (home-page "https://hackage.haskell.org/package/haskell-lexer")
     (synopsis "Fully compliant Haskell 98 lexer")
     (description
      "This package provides a fully compliant Haskell 98 lexer.")
@@ -5792,7 +5792,7 @@ for general types.")
         (base32
          "1kfx1bwfjczj93a8yqz1n8snqiq5655qgzwv1lrycry8wb1vzlwa"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/IfElse")
+    (home-page "https://hackage.haskell.org/package/IfElse")
     (synopsis "Monadic control flow with anaphoric variants")
     (description "This library provides functions for control flow inside of
 monads with anaphoric variants on @code{if} and @code{when} and a C-like
@@ -5845,7 +5845,7 @@ lines continued at an indented level below.")
     (native-inputs
      `(("ghc-hspec" ,ghc-hspec)
        ("hspec-discover" ,hspec-discover)))
-    (home-page "http://hackage.haskell.org/package/infer-license")
+    (home-page "https://hackage.haskell.org/package/infer-license")
     (synopsis "Infer software license from a given license file")
     (description "This library provides tools to infer a software
 license from a given license file.")
@@ -5876,7 +5876,7 @@ license from a given license file.")
        ("ghc-hspec" ,ghc-hspec)
        ("ghc-raw-strings-qq" ,ghc-raw-strings-qq)
        ("ghc-regex-posix" ,ghc-regex-posix)))
-    (home-page "http://hackage.haskell.org/package/inline-c")
+    (home-page "https://hackage.haskell.org/package/inline-c")
     (synopsis "Write Haskell source files including C code inline")
     (description
      "inline-c lets you seamlessly call C libraries and embed high-performance
@@ -6100,7 +6100,7 @@ functors).  For more information, see Edward Kmett's article
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
        ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
        ("ghc-zlib" ,ghc-zlib)))
-    (home-page "http://hackage.haskell.org/package/io-streams")
+    (home-page "https://hackage.haskell.org/package/io-streams")
     (synopsis "Simple and composable stream I/O")
     (description "This library contains simple and easy-to-use
 primitives for I/O using streams.")
@@ -6341,7 +6341,7 @@ and a large set of GNU extensions.")
      `(#:tests? #f
        #:cabal-revision
        ("1" "10ac9pk4jy75k03j1ns4b5136l4kw8krr2d2nw2fdmpm5jzyghc5")))
-    (home-page "http://hackage.haskell.org/package/language-glsl")
+    (home-page "https://hackage.haskell.org/package/language-glsl")
     (synopsis "GLSL abstract syntax tree, parser, and pretty-printer")
     (description "This package is a Haskell library for the
 representation, parsing, and pretty-printing of GLSL 1.50 code.")
@@ -6445,7 +6445,7 @@ indexed variants.")
     (build-system haskell-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("libffi" ,libffi)))
-    (home-page "http://hackage.haskell.org/package/libffi")
+    (home-page "https://hackage.haskell.org/package/libffi")
     (synopsis "Haskell binding to libffi")
     (description
      "A binding to libffi, allowing C functions of types only known at runtime
@@ -6899,7 +6899,7 @@ compression algorithm used in the @code{.xz} file format.")
         (base32
          "10p0gjjjwr1dda7hahwrwn5njbfhl67arq3v3nf1jr3vymlkn75j"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/magic")
+    (home-page "https://hackage.haskell.org/package/magic")
     (synopsis "Interface to C file/magic library")
     (description
      "This package provides a full-featured binding to the C libmagic library.
@@ -7786,7 +7786,7 @@ network database (<netdb.h>) API.")
     (build-system haskell-build-system)
     (native-inputs
      `(("ghc-doctest" ,ghc-doctest)))
-    (home-page "http://hackage.haskell.org/package/network-byte-order")
+    (home-page "https://hackage.haskell.org/package/network-byte-order")
     (synopsis "Network byte order utilities")
     (description "This library provides peek and poke functions for network
 byte order.")
@@ -8568,7 +8568,7 @@ the parsers provided by @code{parsec}, @code{attoparsec} and @code{base}'s
        ("ghc-hspec" ,ghc-hspec)
        ("ghc-validity" ,ghc-validity)))
     (home-page
-     "http://hackage.haskell.org/package/path")
+     "https://hackage.haskell.org/package/path")
     (synopsis "Support for well-typed paths")
     (description "This package introduces a type for paths upholding useful
 invariants.")
@@ -8851,7 +8851,7 @@ dependencies
          "16xsrzqql7i4z6a3xy07sqnbyqdmcar1jiacla58y4mvkkwb0g3l"))))
     (build-system haskell-build-system)
     (home-page
-     "http://hackage.haskell.org/package/pointedlist")
+     "https://hackage.haskell.org/package/pointedlist")
     (synopsis
      "Zipper-like comonad which works as a list, tracking a position")
     (description
@@ -8946,7 +8946,7 @@ reduce @code{UndecidableInstances}.")
         (base32
          "11l9ajci7nh1r547hx8hgxrhq8mh5gdq30pdf845wvilg9p48dz5"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/prettyclass")
+    (home-page "https://hackage.haskell.org/package/prettyclass")
     (synopsis "Pretty printing class similar to Show")
     (description "This package provides a pretty printing class similar
 to @code{Show}, based on the HughesPJ pretty printing library.  It
@@ -9313,7 +9313,7 @@ containers and a general map/reduce framework for Haskell.")
         (base32
          "0v0zxcx29b8jxs2kgy9csykqcp8kzhdvyylw2xfwmj4pfxr2kl0a"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/refact")
+    (home-page "https://hackage.haskell.org/package/refact")
     (synopsis "Specify refactorings to perform with apply-refact")
     (description
      "This library provides a datatype which can be interpreted by
@@ -9581,7 +9581,7 @@ inspired by libtre.")
      `(("ghc-regex-base" ,ghc-regex-base)
        ("ghc-regex-tdfa" ,ghc-regex-tdfa)))
     (home-page
-     "http://hackage.haskell.org/package/regex-tdfa-text")
+     "https://hackage.haskell.org/package/regex-tdfa-text")
     (synopsis "Text interface for regex-tdfa")
     (description
      "This provides an extra text interface for regex-tdfa.")
@@ -10098,7 +10098,7 @@ programming.")
        ("sdl2-image" ,sdl2-image)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://hackage.haskell.org/package/sdl2-image")
+    (home-page "https://hackage.haskell.org/package/sdl2-image")
     (synopsis "Bindings to SDL2_image")
     (description "This package provides Haskell bindings to
 @code{SDL2_image}.")
@@ -10126,7 +10126,7 @@ programming.")
        ("sdl2-mixer" ,sdl2-mixer)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://hackage.haskell.org/package/sdl2-mixer")
+    (home-page "https://hackage.haskell.org/package/sdl2-mixer")
     (synopsis "Bindings to SDL2 mixer")
     (description "This package provides Haskell bindings to
 @code{SDL2_mixer}.")
@@ -10630,7 +10630,7 @@ automatically by SmallCheck.")
         (base32
          "07ci2mh8cbjvipb576rxsj3iyhkj5c5dnsns4xkdppp2p3pv10d3"))))
     (build-system haskell-build-system)
-    (home-page "http://hackage.haskell.org/package/sop-core")
+    (home-page "https://hackage.haskell.org/package/sop-core")
     (synopsis "True Sums of Products")
     (description "This package provides an implementation of
 @math{n}-ary sums and @math{n}-ary products.  The module @code{Data.SOP}
@@ -10689,7 +10689,7 @@ mainstream languages.")
        ("ghc-base-compat-batteries" ,ghc-base-compat-batteries)
        ("ghc-tf-random" ,ghc-tf-random)
        ("ghc-vector" ,ghc-vector)))
-    (home-page "http://hackage.haskell.org/package/splitmix")
+    (home-page "https://hackage.haskell.org/package/splitmix")
     (synopsis "Fast and splittable pseudorandom number generator")
     (description "This package provides a Pure Haskell implementation of the
 SplitMix pseudorandom number generator.  SplitMix is a \"splittable\"
@@ -11084,7 +11084,7 @@ literals.")
     (build-system haskell-build-system)
     (native-inputs
      `(("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://hackage.haskell.org/package/string-qq")
+    (home-page "https://hackage.haskell.org/package/string-qq")
     (synopsis
      "QuasiQuoter for non-interpolated strings, texts and bytestrings.")
     (description
@@ -12213,7 +12213,7 @@ upon it.")
        #:cabal-revision
        ("1"
         "09pqi867wskwgc5lpn197f895mbn1174ydgllvcppcsmrz2b6yr6")))
-    (home-page "http://hackage.haskell.org/package/unagi-chan")
+    (home-page "https://hackage.haskell.org/package/unagi-chan")
     (synopsis "Fast concurrent queues with a Chan-like API, and more")
     (description
      "This library provides implementations of concurrent FIFO queues (for
@@ -13224,7 +13224,7 @@ parts.")
         (base32
          "0g814lj7vaxvib2g3r734221k80k7ap9czv9hinifn8syals3l9j"))))
     (build-system haskell-build-system)
-    (home-page "http://code.galois.com")
+    (home-page "https://github.com/GaloisInc/xml")
     (synopsis "Simple XML library for Haskell")
     (description "This package provides a simple XML library for Haskell.")
     (license license:bsd-3)))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 85d3a153e7..989deb1707 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
@@ -216,7 +216,7 @@ It is the default image viewer on LXDE desktop environment.")
 (define-public sxiv
   (package
     (name "sxiv")
-    (version "25")
+    (version "26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -225,15 +225,15 @@ It is the default image viewer on LXDE desktop environment.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "13s1lfar142hq1j7xld0ri616p4bqs57b17yr4d0b9a9w7liz4hp"))))
+                "0xaawlfdy7b277m38mgg4423kd7p1ffn0dq4hciqs6ivbb3q9c4f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
        #:make-flags
        (list (string-append "PREFIX=" %output)
              "CC=gcc"
-             ;; Xft.h #includes <ft2build.h> (without ‘freetype2/’).  The sxiv
-             ;; Makefile works around this by hard-coding /usr/include instead.
+             ;; Xft.h #includes <ft2build.h> without ‘freetype2/’.  The Makefile
+             ;; works around this by hard-coding /usr/include & $PREFIX.
              (string-append "CPPFLAGS=-I"
                             (assoc-ref %build-inputs "freetype")
                             "/include/freetype2")
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index a79d63fb5d..f9da1e9e89 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1009,6 +1009,9 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.")
       (sha256 (base32
                 "1bqs8vx5i1bzamvv563i24gx2xxdidqyxh9iaj46mbznhc84wmm5"))))
    (build-system cmake-build-system)
+   ;; Otherwise it fails on <ci.guix.gnu.org> in the check phase after 3600
+   ;; seconds of silence.
+   (properties '((max-silent-time . 7200)))
    (inputs
     `(("boost" ,boost)
       ("fftw" ,fftw)
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 49612425fb..9fa3f144de 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -212,7 +212,7 @@ written in Go.")
 (define-public go-ipfs
   (package
     (name "go-ipfs")
-    (version "0.4.22")
+    (version "0.4.23")
     (source
      (origin
        (method url-fetch/tarbomb)
@@ -220,7 +220,7 @@ written in Go.")
              "https://dist.ipfs.io/go-ipfs/v" version
              "/go-ipfs-source.tar.gz"))
        (sha256
-        (base32 "1gyz9yqb4y7p6vdjbcm66nvm6gjs4mdrjygdn79z3misv1pb5nkg"))
+        (base32 "191ir4h6c76xcnbwx9fj8j2lzzqyp10inmqd8sa393b5y0jmhi5a"))
        (file-name (string-append name "-" version "-source"))))
     (build-system go-build-system)
     (arguments
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index f39da03815..acaf25f745 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -2,10 +2,10 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
 ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -170,36 +170,40 @@ SILC and ICB protocols via plugins.")
 (define-public weechat
   (package
     (name "weechat")
-    (version "2.6")
+    (version "2.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://weechat.org/files/src/weechat-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0j2iflnfvv31q2l9r67r8aj3ipggqfm2r2dpy7pvdpxgwwq337ps"))))
+                "0haw0c35mf4r47j24issc9caq0da3fy7gjfq3454fm3ap3n2yxcx"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)
        ;; For tests.
        ("cpputest" ,cpputest)))
-    (inputs `(("ncurses" ,ncurses)
-              ("libgcrypt" ,libgcrypt "out")
-              ("zlib" ,zlib)
-              ("aspell" ,aspell)
-              ("curl" ,curl)
-              ("gnutls" ,gnutls)
+    (inputs
+     `(("aspell" ,aspell)
+       ("curl" ,curl)
+       ("gnutls" ,gnutls)
+       ("libgcrypt" ,libgcrypt "out")
+       ("ncurses" ,ncurses)
+       ("zlib" ,zlib)
 
-              ;; Scripting language plug-ins.
-              ("guile" ,guile-2.0)
-              ("lua" ,lua-5.1)
-              ("python" ,python)
-              ("perl" ,perl)
-              ("tcl" ,tcl)))
+       ;; Scripting language plug-ins.
+       ("guile" ,guile-2.2)
+       ("lua" ,lua-5.1)
+       ("perl" ,perl)
+       ("python" ,python)
+       ("tcl" ,tcl)))
     (arguments
      `(#:configure-flags
-       (list "-DENABLE_TESTS=ON")       ; ‘make test’ fails otherwise
+       (list "-DENABLE_JAVASCRIPT=OFF"
+             "-DENABLE_PHP=OFF"
+             "-DENABLE_RUBY=OFF"
+             "-DENABLE_TESTS=ON")       ; ‘make test’ fails otherwise
        ;; Tests hang indefinately on non-Intel platforms.
        #:tests? ,(if (any (cute string-prefix? <> (or (%current-target-system)
                                                       (%current-system)))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 6abd0c8360..3ec3369a6d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3578,7 +3578,7 @@ cli/shell/BourneShell.java"
     (native-inputs
      `(("java-hamcrest-core" ,java-hamcrest-core)
        ("java-junit" ,java-junit)))
-    (home-page "http://codehaus-plexus.github.io/plexus-utils/")
+    (home-page "https://codehaus-plexus.github.io/plexus-utils/")
     (synopsis "Common utilities for the Plexus framework")
     (description "This package provides various Java utility classes for the
 Plexus framework to ease working with strings, files, command lines, XML and
@@ -4929,7 +4929,7 @@ file filters and endian classes.")
          (replace 'install (install-jars "target")))))
     (native-inputs
      `(("java-junit" ,java-junit)))
-    (home-page "http://commons.apache.org/proper/commons-exec/")
+    (home-page "https://commons.apache.org/proper/commons-exec/")
     (synopsis "Common program execution related classes")
     (description "Commons-Exec simplifies executing external processes.")
     (license license:asl2.0)))
@@ -6634,7 +6634,7 @@ This is a part of the Apache Commons Project.")
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://commons.apache.org/codec/")
+    (home-page "https://commons.apache.org/codec/")
     (synopsis "Common encoders and decoders such as Base64, Hex, Phonetic and URLs")
     (description "The codec package contains simple encoder and decoders for
 various formats such as Base64 and Hexadecimal.  In addition to these widely
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 6868a37f86..467a7d0cb9 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -333,7 +333,7 @@ Worker, but it can be used in other JavaScript environments.")
                 "15gichl8wi6yxag2ps723nxrgyan15976dzsnvw9h9py8sbyyzjn"))))
     (build-system minify-build-system)
     (arguments `(#:javascript-files '("src/selectize.js")))
-    (home-page "http://selectize.github.io/selectize.js/")
+    (home-page "https://selectize.github.io/selectize.js/")
     (synopsis "Hybrid widget between a textbox and <select> box")
     (description "Selectize is the hybrid of a textbox and @code{<select>}
 box.  It's jQuery based and it has autocomplete and native-feeling keyboard
diff --git a/gnu/packages/kde-internet.scm b/gnu/packages/kde-internet.scm
index 0d5b9788b8..12aa9fe53a 100644
--- a/gnu/packages/kde-internet.scm
+++ b/gnu/packages/kde-internet.scm
@@ -51,7 +51,7 @@
 (define-public choqok
   (package
     (name "choqok")
-    (version "1.6.0")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
@@ -59,8 +59,7 @@
                            (version-major+minor version)
                            "/src/choqok-" version ".tar.xz"))
        (sha256
-        (base32 "03ri4y1wzyqlixnhczsls5gmy7jzzm67bb5gz8bav51ngc32fxca"))
-       (patches (search-patches "choqok-Fix-building-under-Qt-5.13.patch"))))
+        (base32 "0zm4nkpmvd181xlkis7ydzx54p3vn0zgpdzgh54f1hsjy6ahsq16"))))
     (build-system qt-build-system)
     (native-inputs
      `(("extra-cmake-modules" ,extra-cmake-modules)
@@ -86,9 +85,11 @@
        ("kxmlgui" ,kxmlgui)
        ;; TODO: telepathy
        ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("purpose" ,purpose)
        ("qca" ,qca)
        ("qoauth" ,qoauth)
        ("qtbase" ,qtbase)
+       ("qtnetworkauth" ,qtnetworkauth)
        ("qtwebkit" ,qtwebkit)
        ("sonnet" ,sonnet)))
     (home-page "https://kde.org/applications/internet/org.kde.choqok")
diff --git a/gnu/packages/key-mon.scm b/gnu/packages/key-mon.scm
index 1482d07f7c..884bef042f 100644
--- a/gnu/packages/key-mon.scm
+++ b/gnu/packages/key-mon.scm
@@ -47,7 +47,7 @@
      `(("python2-xlib" ,python2-xlib)
        ("python2-pygtk" ,python2-pygtk)
        ("python2-rsvg" ,python2-rsvg)))
-    (home-page "http://code.google.com/p/key-mon")
+    (home-page "https://code.google.com/p/key-mon")
     (synopsis "Show keyboard and mouse status")
     (description
      "The key-mon utility displays the current keyboard and mouse status.
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 465ed95eb2..338b2afd4e 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -51,6 +51,7 @@
                (base32
                 "0g988zqm45sj1hlhhz4il5z4dpi5dl74hzjwzl4md37a09iaqnx6"))))
     (build-system gnu-build-system)
+    (outputs '("out" "bin"))
     (arguments
      ;; This skips some of the tests which fail on armhf and aarch64.
      '(#:configure-flags '("--disable-libevent-regress")))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 539ada46e5..e7878ea014 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -31,11 +31,12 @@
 (define-module (gnu packages libreoffice)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses)
-                #:select (gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
+                #:select (gpl2 gpl2+ lgpl2.1+ lgpl3+ mpl1.1 mpl2.0
                           non-copyleft x11-style bsd-3))
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -118,8 +119,8 @@ their dependencies automatically upon calculation.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://kohei.us/files/" name "/src/lib"
-                           name "-" version ".tar.xz"))
+       (uri (string-append "http://kohei.us/files/orcus/src/lib"
+                           "orcus-" version ".tar.xz"))
        (sha256
         (base32
          "14gbnqsv5n2fm4sxa17014f440clrzls6p2w2ixk9wipg4950v9s"))))
@@ -141,6 +142,63 @@ Plain Text, Gnumeric XML, Generic XML.  It also includes low-level parsers for
 CSV, CSS and XML.")
     (license mpl2.0)))
 
+(define-public unoconv
+  (package
+    (name "unoconv")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "unoconv" version))
+       (sha256
+        (base32 "0cb0bvyxib3xrj0jdgizhp6p057lr8kqnd3n921rin37ivcvz3ih"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'stop-hash-sniffing
+           ;; Fixes <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=39647#11>.
+           ;; Submitted upsteam: <https://github.com/unoconv/unoconv/pull/531>.
+           (lambda _
+             (substitute* "unoconv"
+               (("sys.argv\\[0\\]\\.split\\('2'\\)")
+                "os.path.basename(sys.argv[0]).split('2')"))
+             #t))
+         (add-after 'unpack 'patch-find_offices
+           ;; find_offices is a convoluted cross-platform treasure hunt.
+           ;; Keep things simple and return the correct paths immediately.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((libreoffice (assoc-ref inputs "libreoffice")))
+               (substitute* "unoconv"
+                 (("def find_offices\\(\\):" match)
+                  (string-append
+                   match "\n"
+                   "    return [Office("
+                   "'" libreoffice "/lib/libreoffice', "
+                   "'" libreoffice "/lib/libreoffice/program', "
+                   "'" libreoffice "/lib/libreoffice/program', "
+                   "'" libreoffice "/lib/libreoffice/program/pyuno.so', "
+                   "'" libreoffice "/bin/soffice', "
+                   "sys.executable, "
+                   "None)]\n")))
+               #t))))))
+    (inputs
+     `(("libreoffice" ,libreoffice)))
+    (home-page "http://dag.wiee.rs/home-made/unoconv/")
+    (synopsis "Convert between any document format supported by LibreOffice")
+    (description
+     "Unoconv is a command-line utility to convert documents from any format
+that LibreOffice can import, to any format it can export.  It can be used for
+batch processing and can apply custom style templates and filters.
+
+Unoconv converts between over a hundred formats, including Open Document
+Format (@file{.odt}, @file{.ods}, @file{.odp})), Portable Document Format
+(@file{.pdf}), HTML and XHTML, RTF, DocBook (@file{.xml}), @file{.doc} and
+@file{.docx}), @file{.xls} and @file{.xlsx}).
+
+All required fonts must be installed on the converting system.")
+    (license gpl2)))
+
 (define-public librevenge
   (package
     (name "librevenge")
@@ -148,8 +206,8 @@ CSV, CSS and XML.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/libwpd/" name "/" name "-"
-                          version "/" name "-" version ".tar.xz"))
+      (uri (string-append "mirror://sourceforge/libwpd/librevenge/librevenge-"
+                          version "/librevenge-" version ".tar.xz"))
       (sha256 (base32
                "1cj76cz4mqcy2mgv9l5xlc95bypyk8zbq0ls9cswqrs2y0lhfgwk"))))
     (build-system gnu-build-system)
@@ -428,22 +486,20 @@ Apple Keynote documents.  It currently supports Keynote versions 2 to 5.")
 (define-public liblangtag
   (package
     (name "liblangtag")
-    (version "0.6.2")
+    (version "0.6.3")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "https://bitbucket.org/tagoh/liblangtag/downloads/"
-                            name "-" version ".tar.bz2"))
+                            "liblangtag-" version ".tar.bz2"))
         (sha256
-         (base32
-          "0bnm4hllr8cfrybm8rw7b8n0nlhzhnv73bkg1bxk452g6a82f96n"))))
+         (base32 "1g9kwxx60q0hpwvs66ys1cb9qg54hfvbivadwli8sfpc085a44hz"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libxml2" ,libxml2)))
-    ;; As of December 2017, tagoh.bitbucket.org redirects to a hosting advert.
     (home-page "https://bitbucket.org/tagoh/liblangtag")
     (synopsis "Library to access tags for identifying languages")
     (description "Liblangtag implements an interface to work with tags
@@ -1036,6 +1092,14 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
                          "solenv/gbuild/platform/unxgcc.mk")
                  (("/bin/sh") (which "sh")))
 
+               ;; Use store references for strictly necessary commands,
+               ;; but not for optional tools like ‘gdb’ and ‘valgrind’.
+               (for-each (lambda (command)
+                           (substitute* "desktop/scripts/soffice.sh"
+                             (((format #f"~a " command))
+                              (format #f "~a " (which command)))))
+                         (list "dirname" "grep" "uname"))
+
                ;; GPGME++ headers are installed in a gpgme++ subdirectory, but
                ;; files in "xmlsecurity/source/gpg/" and elsewhere expect to
                ;; find them on the include path without a prefix.
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9deb9c3904..4d24fcbd26 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -191,31 +191,31 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
-   "5.4.14"
+   "5.4.19"
    (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25")
-   (base32 "121px6030s89jh975sw0whwq315al6px1s7ildz3asql97bjdgc8")))
+   (base32 "1ajzwyy6vgmihxpz3sbshzfzd0w8yzj0fihv0d5rjpr4z3gm48bk")))
 
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
-   "4.19.98"
+   "4.19.103"
    (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
    (base32 "1w2wgxblpq09i33qmqgw5v3r5rm9vkkygr6m0sgv4zgczk9s29wr")))
 
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
-   "4.14.167"
+   "4.14.170"
    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
    (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
 
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
-   "4.9.211"
+   "4.9.213"
    (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
    (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
 
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
-   "4.4.211"
+   "4.4.213"
    (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
    (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
 
@@ -359,42 +359,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
                         "linux-" version ".tar.xz"))
     (sha256 hash)))
 
-(define-public linux-libre-5.4-version "5.4.19")
+(define-public linux-libre-5.4-version "5.4.22")
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "1f3pzg8vai5qz19gy9gf3rxs2z4dsw78zjkkfnha8iiy2mqvk14m")))
+        (hash (base32 "06kx9bmrrk1brici8wvvd6dxqawgcig4i59pwllcq39rgs6wn6v6")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.103")
+(define-public linux-libre-4.19-version "4.19.106")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0hxvqkjy63370sr9j4j0a1kzqwxxdn3i8i6wwc5c2gbzpmqlay5l")))
+        (hash (base32 "1nlwgs15mc3hlfhqw95pz7wisg8yshzrxzzq2a0y30mjm5vbvj33")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.170")
+(define-public linux-libre-4.14-version "4.14.171")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1hqp3spi4cqgkqkzx5g2nbp6isz0kdcsj56ilsp6siqiglj662ll")))
+        (hash (base32 "181jadiwfix23xmqfvg7hpacjd0523v7vy0frzn8g8dlwj4j9q2g")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.213")
+(define-public linux-libre-4.9-version "4.9.214")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0r7bqpvbpiiniwsm338b38mv6flfgm1r09avxqsakhkh8rvgz1dg")))
+        (hash (base32 "10z4n792g88p46csla2g9b0m7vz40ln0901ffb2cfd3hmhyhjzxl")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.213")
+(define-public linux-libre-4.4-version "4.4.214")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "1cmwn9zvz14jqjy6qkszglhs2p5h6yh82b2269cbzvibg8y3rxq0")))
+        (hash (base32 "0v575wl85fg9c3ksdj570hxjcl9p1dxwzag3fm0qcrq75kp6bamn")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -932,6 +932,52 @@ It grants direct and undocumented access to your hardware that may cause damage
 and should be used with caution, especially on untested models.")
     (license license:gpl3+)))           ; see README.md (no licence headers)
 
+(define-public rtl8812au-aircrack-ng-linux-module
+  (let ((commit "945d6ed6505c32f0993b1dba576388e92e78101b")
+        (revision "0"))
+    (package
+      (name "rtl8812au-aircrack-ng-linux-module")
+      (version (git-version "5.6.4.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/aircrack-ng/rtl8812au.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1pjws7qb5l4z9k80vgz4zdxmqhbwxjjrmkpf0hijf821byyddvi7"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             ;; Remove bundled tarballs, APKs, word lists, speadsheets,
+             ;; and other unnecessary unlicenced things.
+             (for-each delete-file-recursively (list "android"
+                                                     "docs"
+                                                     "tools"))
+             #t))))
+      (build-system linux-module-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'build
+             (lambda* (#:key inputs make-flags #:allow-other-keys)
+               (apply invoke "make"
+                      (string-append "KSRC="
+                                     (assoc-ref inputs "linux-module-builder")
+                                     "/lib/modules/build")
+                      (or make-flags '())))))
+         #:tests? #f))                  ; no test suite
+      (supported-systems '("x86_64-linux" "i686-linux"))
+      (home-page "https://github.com/aircrack-ng/rtl8812au")
+      (synopsis "Linux driver for Realtek USB wireless network adapters")
+      (description
+       "This is Realtek's rtl8812au Linux driver for USB 802.11n wireless
+network adapters, modified by the aircrack-ng project to support monitor mode
+and frame injection.  It provides a @code{88XXau} kernel module that supports
+RTL8812AU, RTL8821AU, and RTL8814AU chips.")
+      (license license:gpl2+))))
+
 (define-public vhba-module
   (package
     (name "vhba-module")
@@ -1229,6 +1275,62 @@ The Discordian calendar was made popular by the \"Illuminatus!\" trilogy
 by Robert Shea and Robert Anton Wilson.")
     (license license:public-domain)))
 
+(define-public fbset
+  (package
+    (name "fbset")
+    (version "2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://users.telenet.be/geertu/Linux/fbdev/fbset-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "080wnisi0jq7dp0jcwdp83rq8q8s3kw41vc712516xbv4jq4mzs0"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "Makefile"
+                 (("mknod ") "true ")
+                 ;; The Makefile doesn't honour PREFIX or similar.
+                 (("/usr") out))
+               (mkdir out)
+               (with-directory-excursion out
+                 (for-each mkdir-p (list "sbin"
+                                         "man/man5"
+                                         "man/man8")))
+               #t)))
+         (add-after 'install 'install-fb.modes
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (etc (string-append out "/etc")))
+               (for-each (cut install-file <> etc)
+                         (find-files "etc" "^fb\\.modes"))
+               (symlink "fb.modes.ATI"
+                        (string-append etc "/fb.modes"))
+               #t))))
+       ;; Parallel building races to create modes.tab.c.
+       #:parallel-build? #f
+       #:tests? #f))                    ; no test suite
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)))
+    (home-page "http://users.telenet.be/geertu/Linux/fbdev/")
+    (synopsis "Show and modify Linux frame buffer settings")
+    (description
+     "The kernel Linux's @dfn{frame buffers} provide a simple interface to
+different kinds of graphic displays.  The @command{fbset} utility can query and
+change various device settings such as depth, virtual resolution, and timing
+parameters.")
+    (license license:gpl2)))
+
 (define-public procps
   (package
     (name "procps")
@@ -1741,51 +1843,21 @@ Both commands are targeted at system administrators.")
 (define-public ebtables
   (package
     (name "ebtables")
-    (version "2.0.10-4")
+    (version "2.0.11")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://netfilter.org/ebtables/ebtables-v"
+                   "mirror://netfilter.org/ebtables/ebtables-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "0pa5ljlk970yfyhpf3iqwfpbc30j8mgn90fapw9cfz909x47nvyw"))))
+               "0apxgmkhsk3vxn9q3libxn3dgrdljrxyy4mli2gk49m7hi3na7xp"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:tests? #f                      ; no test suite
-       #:make-flags
-       (let* ((out (assoc-ref %outputs "out"))
-              (bin (string-append out "/sbin"))
-              (lib (string-append out "/lib"))
-              (man (string-append out "/share/man"))
-              (iptables   (assoc-ref %build-inputs "iptables"))
-              (ethertypes (string-append iptables "/etc/ethertypes")))
-         (list (string-append "LIBDIR=" lib)
-               (string-append "MANDIR=" man)
-               (string-append "BINDIR=" bin)
-               (string-append "ETHERTYPESFILE=" ethertypes)
-               ;; With the default CFLAGS, it falis with:
-               ;;   communication.c:259:58: error: variable ‘ret’ set but not
-               ;;   used [-Werror=unused-but-set-variable]
-               "CFLAGS=-Wall"))
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           ;; no configure script
-           (lambda _
-             (substitute* "Makefile"
-               ;; Remove user and group options from install commands,
-               ;; otherwise it fails with: invalid user 'root'.
-               (("-o root -g root") "")
-               ;; Remove 'ethertypes' from the install target.
-               (("install: .*")
-                "install: $(MANDIR)/man8/ebtables.8 exec scripts\n"))
-             #t)))))
     (inputs
      `(("perl" ,perl)
        ("iptables" ,iptables)))
     (synopsis "Ethernet bridge frame table administration")
-    (home-page "http://ebtables.netfilter.org/")
+    (home-page "https://ebtables.netfilter.org/")
     (description
      "ebtables is an application program used to set up and maintain the
 tables of rules (inside the Linux kernel) that inspect Ethernet frames.  It is
@@ -4038,7 +4110,7 @@ and copy/paste text in the console and in xterm.")
 (define-public btrfs-progs
   (package
     (name "btrfs-progs")
-    (version "5.4")
+    (version "5.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/linux/kernel/"
@@ -4046,12 +4118,19 @@ and copy/paste text in the console and in xterm.")
                                   "btrfs-progs-v" version ".tar.xz"))
               (sha256
                (base32
-                "1ykhasv0jc3qi3xrm5841mzkmlbkjw6rm70gl4aww90jj6ak55qg"))))
+                "0scxg9p6z0wss92gmv5a8yxdmr8x449kb5v3bfnvs26n92r7zq7k"))))
     (build-system gnu-build-system)
     (outputs '("out"
                "static"))      ; static versions of the binaries in "out"
     (arguments
      '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-makefile
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (substitute* "Makefile"
+                        (("\\$\\(DESTDIR\\)\\$\\(udevruledir\\)")
+                         (string-append (assoc-ref outputs "out")
+                                        "/lib/udev/rules.d")))
+                      #t))
                  (add-after 'build 'build-static
                    (lambda _ (invoke "make" "static")))
                  (add-after 'install 'install-bash-completion
@@ -4072,7 +4151,7 @@ and copy/paste text in the console and in xterm.")
        #:tests? #f            ; XXX: require the 'btrfs' kernel module.
        #:test-target "test"
        #:parallel-tests? #f)) ; tests fail when run in parallel
-    (inputs `(("e2fsprogs" ,e2fsprogs)
+    (inputs `(("e2fsprogs" ,e2fsprogs)  ; for btrfs-convert
               ("libblkid" ,util-linux)
               ("libblkid:static" ,util-linux "static")
               ("libuuid" ,util-linux)
@@ -4092,6 +4171,8 @@ and copy/paste text in the console and in xterm.")
                      ;; For tests.
                      ("acl" ,acl)
                      ("which" ,which)
+                     ("dmsetup" ,lvm2)
+                     ("udevadm" ,eudev)
                      ;; The tests need 'grep' with perl regexp support.
                      ("grep" ,grep)))
     (home-page "https://btrfs.wiki.kernel.org/index.php/Main_Page")
@@ -4669,7 +4750,7 @@ cpufreq sub-system is enabled or not.")
 (define-public haveged
   (package
     (name "haveged")
-    (version "1.9.6")
+    (version "1.9.8")
     (source
      (origin
        (method git-fetch)
@@ -4678,7 +4759,7 @@ cpufreq sub-system is enabled or not.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11kr19n2f87izsj341lv5amhd1wc2ckfmqr9pq5fxix8pkbs94rh"))))
+        (base32 "1znr58fb3faq4nmrvc3c5whkc1f3chivm4vhicdwr9pdsyqqsd51"))))
     (build-system gnu-build-system)
     (home-page "https://www.issihosts.com/haveged")
     (synopsis "Entropy source for the Linux random number generator")
@@ -5560,14 +5641,14 @@ available in the kernel Linux.")
 (define-public cpuid
   (package
     (name "cpuid")
-    (version "20200116")
+    (version "20200211")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.etallen.com/cpuid/cpuid-"
                                   version ".src.tar.gz"))
               (sha256
                (base32
-                "1gxi4iwy6j366l6bkj1yyxhrk1rxmwfp498gikfxn8xwhij9dn0a"))))
+                "06sjbqqp80l7nhsp6khglkzdp9qy4vhbvjxbfilznhsmrqiwlw55"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags '("CC=gcc")
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 2682c731b9..7afd409e9e 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
+;;; Copyright © 2020 Dimakis Dimakakos <me@bendersteed.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -57,6 +58,7 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -218,7 +220,7 @@ support.")
 ANSI CL by David N. Gray.  The proposal did not make it into ANSI CL, but most
 popular CL implementations implement it.  This package provides an extremely
 thin compatibility layer for gray streams.")
-      (home-page "http://www.cliki.net/trivial-gray-streams")
+      (home-page "https://www.cliki.net/trivial-gray-streams")
       (license license:x11))))
 
 (define-public cl-trivial-gray-streams
@@ -602,7 +604,7 @@ files.")
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("fiasco" ,sbcl-fiasco)))
-    (home-page "http://www.cliki.net/portable-clx")
+    (home-page "https://www.cliki.net/portable-clx")
     (synopsis "X11 client library for Common Lisp")
     (description "CLX is an X11 client library for Common Lisp.  The code was
 originally taken from a CMUCL distribution, was modified somewhat in order to
@@ -962,18 +964,15 @@ else @code{parse-number} signals an error of type @code{invalid-number}.")
 (define-public sbcl-iterate
   (package
     (name "sbcl-iterate")
-    ;; The latest official release (1.4.3) fails to build so we have to take
-    ;; the current darcs tarball from quicklisp.
-    (version "20160825")
+    (version "1.5")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
-                           "2016-08-25/iterate-"
-                           version "-darcs.tgz"))
+       (uri (string-append "https://common-lisp.net/project/iterate/releases/"
+                           "iterate-" version ".tar.gz"))
        (sha256
         (base32
-         "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
+         "1lqsbhrkfl0yif46aymvb7l3nb9wdcmj4jyw485blj32jb4famzn"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
      `(("rt" ,sbcl-rt)))
@@ -1133,7 +1132,7 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
         (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
     (build-system asdf-build-system/sbcl)
     (arguments '(#:tests? #f))
-    (home-page "http://cliki.net/trivial-features")
+    (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.")
@@ -1599,23 +1598,26 @@ Common Lisp.")
   (sbcl-package->ecl-package sbcl-cl-fad))
 
 (define-public sbcl-rt
-  (package
-    (name "sbcl-rt")
-    (version "1990.12.19")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
-                           "20101006-git" ".tgz"))
-       (sha256
-        (base32
-         "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
-    (build-system asdf-build-system/sbcl)
-    (synopsis "MIT Regression Tester")
-    (description
-     "RT provides a framework for writing regression test suites.")
-    (home-page "https://github.com/sharplispers/nibbles")
-    (license license:unlicense)))
+  (let ((commit "a6a7503a0b47953bc7579c90f02a6dba1f6e4c5a")
+        (revision "1"))
+    (package
+      (name "sbcl-rt")
+      (version (git-version "1990.12.19" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/rt.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "13si2rrxaagbr0bkvg6sqicxxpyshabx6ad6byc9n2ik5ysna69b"))))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "MIT Regression Tester")
+      (description
+       "RT provides a framework for writing regression test suites.")
+      (home-page "https://www.cliki.net/rt")
+      (license license:expat))))
 
 (define-public cl-rt
   (sbcl-package->cl-source-package sbcl-rt))
@@ -2298,27 +2300,27 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
   (sbcl-package->ecl-package sbcl-cl-string-match))
 
 (define-public sbcl-ptester
-  (package
-    (name "sbcl-ptester")
-    (version "20160929")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
-                           (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
-                           "/ptester-"
-                           version
-                           "-git.tgz"))
-       (sha256
-        (base32
-         "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
-    (build-system asdf-build-system/sbcl)
-    (home-page "http://quickdocs.org/ptester/")
-    (synopsis "Portable test harness package")
-    (description
-     "@command{ptester} is a portable testing framework based on Franz's
+  (let ((commit "fe69fde54f4bce00ce577feb918796c293fc7253")
+        (revision "1"))
+    (package
+      (name "sbcl-ptester")
+      (version (git-version "2.1.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/ptester.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1l0lfl7cdnr2qf4zh38hi4llxg22c49zkm639bdkmvlkzwj3ndwf"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "http://quickdocs.org/ptester/")
+      (synopsis "Portable test harness package")
+      (description
+       "@command{ptester} is a portable testing framework based on Franz's
 tester module.")
-    (license license:lgpl3+)))
+      (license license:llgpl))))
 
 (define-public cl-ptester
   (sbcl-package->cl-source-package sbcl-ptester))
@@ -2327,30 +2329,29 @@ tester module.")
   (sbcl-package->ecl-package sbcl-ptester))
 
 (define-public sbcl-puri
-  (package
-    (name "sbcl-puri")
-    (version "20180228")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://beta.quicklisp.org/archive/puri/"
-                           (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
-                           "/puri-"
-                           version
-                           "-git.tgz"))
-       (sha256
-        (base32
-         "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
-    (build-system asdf-build-system/sbcl)
-    ;; REVIEW: Webiste down?
-    (native-inputs
-     `(("ptester" ,sbcl-ptester)))
-    (home-page "http://files.kpe.io/puri/")
-    (synopsis "Portable URI Library")
-    (description
-     "This is portable Universal Resource Identifier library for Common Lisp
-programs.  It parses URI according to the RFC 2396 specification")
-    (license license:lgpl3+)))
+  (let ((commit "ef5afb9e5286c8e952d4344f019c1a636a717b97")
+        (revision "1"))
+    (package
+      (name "sbcl-puri")
+      (version (git-version "1.5.7" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "http://git.kpe.io/puri.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1vm25pdl92laj72p5vyd538kf3cjy2655z6bdc99h20ana2p231s"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("ptester" ,sbcl-ptester)))
+      (home-page "http://quickdocs.org/puri/")
+      (synopsis "Portable URI Library")
+      (description
+       "This is a portable Universal Resource Identifier library for Common
+Lisp programs.  It parses URI according to the RFC 2396 specification.")
+      (license license:llgpl))))
 
 (define-public cl-puri
   (sbcl-package->cl-source-package sbcl-puri))
@@ -4610,7 +4611,7 @@ performance and simplicity in mind.")
        `(("stefil" ,sbcl-hu.dwim.stefil)))
       (inputs
        `(("sbcl-cl-fad" ,sbcl-cl-fad)))
-      (home-page "http://shinmera.github.io/trivial-mimes/")
+      (home-page "https://shinmera.github.io/trivial-mimes/")
       (synopsis "Tiny Common Lisp library to detect mime types in files")
       (description
        "This is a teensy library that provides some functions to determine the
@@ -4754,7 +4755,7 @@ performance and simplicity in mind.")
          ("sbcl-lack-component" ,sbcl-lack-component)
          ("sbcl-alexandria" ,sbcl-alexandria)
          ("sbcl-babel" ,sbcl-babel)))
-      (home-page "http://8arrow.org/ningle/")
+      (home-page "https://8arrow.org/ningle/")
       (synopsis "Super micro framework for Common Lisp")
       (description
        "Ningle is a lightweight web application framework for Common Lisp.")
@@ -4953,33 +4954,37 @@ the CFFI approach used by burgled-batteries, but has the same goal.")
   (sbcl-package->ecl-package sbcl-py4cl))
 
 (define-public sbcl-parse-declarations
-  (package
-    (name "sbcl-parse-declarations")
-    (version "1.0.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append
-             "http://beta.quicklisp.org/archive/parse-declarations/"
-             "2010-10-06/parse-declarations-20101006-darcs.tgz"))
-       (sha256
-        (base32
-         "0r85b0jfacd28kr65kw9c13dx4i6id1dpmby68zjy63mqbnyawrd"))))
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:asd-file "parse-declarations-1.0.asd"
-       #:asd-system-name "parse-declarations-1.0"))
-    (home-page "https://common-lisp.net/project/parse-declarations/")
-    (synopsis "Parse, filter, and build declarations")
-    (description
-     "Parse-Declarations is a Common Lisp library to help writing
+  (let ((commit "549aebbfb9403a7fe948654126b9c814f443f4f2")
+        (revision "1"))
+    (package
+      (name "sbcl-parse-declarations")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url (string-append
+                     "https://gitlab.common-lisp.net/parse-declarations/"
+                     "parse-declarations.git"))
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "03g5qks4c59nmxa48pbslxkfh77h8hn8566jddp6m9pl15dzzpxd"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       `(#:asd-file "parse-declarations-1.0.asd"
+         #:asd-system-name "parse-declarations-1.0"))
+      (home-page "https://common-lisp.net/project/parse-declarations/")
+      (synopsis "Parse, filter, and build declarations")
+      (description
+       "Parse-Declarations is a Common Lisp library to help writing
 macros which establish bindings.  To be semantically correct, such
 macros must take user declarations into account, as these may affect
 the bindings they establish.  Yet the ANSI standard of Common Lisp does
 not provide any operators to work with declarations in a convenient,
 high-level way.  This library provides such operators.")
-    ;; MIT License
-    (license license:expat)))
+      ;; MIT License
+      (license license:expat))))
 
 (define-public cl-parse-declarations
   (sbcl-package->cl-source-package sbcl-parse-declarations))
@@ -5889,41 +5894,44 @@ optimizing techniques widely used in the functional programming world.")
   (sbcl-package->cl-source-package sbcl-optima))
 
 (define-public sbcl-fare-quasiquote
-  (package
-    (name "sbcl-fare-quasiquote")
-    (build-system asdf-build-system/sbcl)
-    (version "20171130")
-    (home-page "http://common-lisp.net/project/fare-quasiquote")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://beta.quicklisp.org/archive/fare-quasiquote/"
-                           (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
-                           "/fare-quasiquote-"
-                           version
-                           "-git.tgz"))
-       (sha256
-        (base32
-         "00brmh7ndsi0c97nibi8cy10j3l4gmkyrfrr5jr5lzkfb7ngyfqa"))))
-    (inputs
-     `(("fare-utils" ,sbcl-fare-utils)))
-    (arguments
-     ;; XXX: Circular dependencies: Tests depend on subsystems, which depend on the main systems.
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         ;; XXX: Require 1.0.0 version of fare-utils, and we package some
-         ;; commits after 1.0.0.5, but ASDF fails to read the
-         ;; "-REVISION-COMMIT" part generated by Guix.
-         (add-after 'unpack 'patch-requirement
-           (lambda _
-             (substitute* "fare-quasiquote.asd"
-               (("\\(:version \"fare-utils\" \"1.0.0\"\\)") "\"fare-utils\"")))))))
-    (synopsis "Pattern-matching friendly implementation of quasiquote for Common Lisp")
-    (description "The main purpose of this n+2nd reimplementation of
+  (let ((commit "640d39a0451094071b3e093c97667b3947f43639")
+        (revision "1"))
+    (package
+      (name "sbcl-fare-quasiquote")
+      (build-system asdf-build-system/sbcl)
+      (version (git-version "1.0.1" revision commit))
+      (home-page "https://gitlab.common-lisp.net/frideau/fare-quasiquote")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url (string-append "https://gitlab.common-lisp.net/frideau/"
+                                   "fare-quasiquote.git"))
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1g6q11l50kgija9f55lzqpcwvaq0ljiw8v1j265hnyg6nahjwjvg"))))
+      (inputs
+       `(("fare-utils" ,sbcl-fare-utils)))
+      (arguments
+       ;; XXX: Circular dependencies: Tests depend on subsystems,
+       ;; which depend on the main systems.
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           ;; XXX: Require 1.0.0 version of fare-utils, and we package some
+           ;; commits after 1.0.0.5, but ASDF fails to read the
+           ;; "-REVISION-COMMIT" part generated by Guix.
+           (add-after 'unpack 'patch-requirement
+             (lambda _
+               (substitute* "fare-quasiquote.asd"
+                 (("\\(:version \"fare-utils\" \"1.0.0\"\\)")
+                  "\"fare-utils\"")))))))
+      (synopsis "Pattern-matching friendly implementation of quasiquote")
+      (description "The main purpose of this n+2nd reimplementation of
 quasiquote is enable matching of quasiquoted patterns, using Optima or
 Trivia.")
-    (license license:expat)))
+      (license license:expat))))
 
 (define-public cl-fare-quasiquote
   (sbcl-package->cl-source-package sbcl-fare-quasiquote))
@@ -5982,6 +5990,8 @@ This package uses fare-quasiquote with named-readtable.")))
                     (lib (string-append out "/lib/" (%lisp-type))))
                (mkdir-p lib)
                (install-file "fare-quasiquote-extras.asd" lib)
+               (make-file-writable
+                (string-append lib "/fare-quasiquote-extras.asd"))
                #t)))
          (add-after 'create-asd-file 'fix-asd-file
            (lambda* (#:key outputs #:allow-other-keys)
@@ -9638,7 +9648,7 @@ Common Lisp.  It uses the libuv library as backend.")
       (description
        "This is a standalone promise implementation for Common Lisp.  It is
 the successor to the now-deprecated cl-async-future project.")
-      (home-page "http://orthecreedence.github.io/blackbird/")
+      (home-page "https://orthecreedence.github.io/blackbird/")
       (license license:expat))))
 
 (define-public cl-blackbird
@@ -9673,7 +9683,7 @@ the successor to the now-deprecated cl-async-future project.")
       (description
        "This is futures implementation for Common Lisp.  It plugs in nicely
 to cl-async.")
-      (home-page "http://orthecreedence.github.io/cl-async/future")
+      (home-page "https://orthecreedence.github.io/cl-async/future")
       (license license:expat))))
 
 (define-public cl-async-future
@@ -10590,3 +10600,121 @@ and usefulness, not speed.  Track the progress at
 
 (define-public cl-numcl
   (sbcl-package->cl-source-package sbcl-numcl))
+
+(define-public sbcl-pzmq
+  (let ((commit "7c7390eedc469d033c72dc497984d1536ee75826")
+        (revision "1"))
+    (package
+      (name "sbcl-pzmq")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/orivej/pzmq.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0gmwzf7h90wa7v4wnk49g0hv2mdalljpwhyigxcb967wzv8lqci9"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("bordeaux-threads" ,sbcl-bordeaux-threads)
+         ("fiveam" ,sbcl-fiveam)
+         ("let-plus" ,sbcl-let-plus)))
+      (inputs
+       `(("cffi" ,sbcl-cffi)
+         ("cffi-grovel" ,sbcl-cffi-grovel)
+         ("zeromq" ,zeromq)))
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (add-after 'unpack 'fix-paths
+                      (lambda* (#:key inputs #:allow-other-keys)
+                        (substitute* "c-api.lisp"
+                          (("\"libzmq")
+                           (string-append "\""
+                                          (assoc-ref inputs "zeromq")
+                                          "/lib/libzmq")))
+                        #t)))))
+      (synopsis "Common Lisp bindings for the ZeroMQ library")
+      (description "This Common Lisp library provides bindings for the ZeroMQ
+lightweight messaging kernel.")
+      (home-page "https://github.com/orivej/pzmq")
+      (license license:unlicense))))
+
+(define-public cl-pzmq
+  (sbcl-package->cl-source-package sbcl-pzmq))
+
+(define-public ecl-pzmq
+  (sbcl-package->ecl-package sbcl-pzmq))
+
+(define-public sbcl-clss
+  (let ((revision "1")
+        (commit "2a8e8615ab55870d4ca01928f3ed3bbeb4e75c8d"))
+    (package
+      (name "sbcl-clss")
+      (version (git-version "0.3.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/Shinmera/clss.git")
+           (commit commit)))
+         (sha256
+          (base32 "0la4dbcda78x29szanylccrsljqrn9d1mhh569sqkyp44ni5fv91"))
+         (file-name (git-file-name name version))))
+      (inputs
+       `(("array-utils" ,sbcl-array-utils)
+         ("plump" ,sbcl-plump)))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "DOM tree searching engine based on CSS selectors")
+      (description "CLSS is a DOM traversal engine based on CSS
+selectors.  It makes use of the Plump-DOM and is used by lQuery.")
+      (home-page "https://github.com/Shinmera/clss")
+      (license license:zlib))))
+
+(define-public cl-clss
+  (sbcl-package->cl-source-package sbcl-clss))
+
+(define-public ecl-clss
+  (sbcl-package->ecl-package sbcl-clss))
+
+(define-public sbcl-lquery
+  (let ((revision "1")
+        (commit "8048111c6b83956daa632e7a3ffbd8c9c203bd8d"))
+    (package
+      (name "sbcl-lquery")
+      (version (git-version "3.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/Shinmera/lquery.git")
+           (commit commit)))
+         (sha256
+          (base32 "0520mcpxc2d6fdm8z61arpgd2z38kan7cf06qs373n5r64rakz6w"))
+         (file-name (git-file-name name version))))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("array-utils" ,sbcl-array-utils)
+         ("form-fiddle" ,sbcl-form-fiddle)
+         ("plump" ,sbcl-plump)
+         ("clss" ,sbcl-clss)))
+      (build-system asdf-build-system/sbcl)
+      (synopsis "Library to allow jQuery-like HTML/DOM manipulation")
+      (description "@code{lQuery} is a DOM manipulation library written in
+Common Lisp, inspired by and based on the jQuery syntax and
+functions.  It uses Plump and CLSS as DOM and selector engines.  The
+main idea behind lQuery is to provide a simple interface for crawling
+and modifying HTML sites, as well as to allow for an alternative
+approach to templating.")
+      (home-page "https://github.com/Shinmera/lquery")
+      (license license:zlib))))
+
+(define-public cl-lquery
+  (sbcl-package->cl-source-package sbcl-lquery))
+
+(define-public ecl-lquery
+  (sbcl-package->ecl-package sbcl-lquery))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index a6f779e7f8..e819625a46 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; 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 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@@ -76,18 +76,24 @@ as \"x86_64-linux\"."
              ("x86_64"      => "X86")
              ("i686"        => "X86"))))
 
-(define-public llvm-8
+(define (llvm-download-uri component version)
+  (if (version>=? version "9.0.1")
+      (string-append "https://github.com/llvm/llvm-project/releases/download"
+                     "/llvmorg-" version "/" component "-" version ".src.tar.xz")
+      (string-append "https://releases.llvm.org/" version "/" component "-"
+                     version ".src.tar.xz")))
+
+(define-public llvm
   (package
     (name "llvm")
-    (version "8.0.0")
+    (version "9.0.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
-        "0k124sxkfhfi1rca6kzkdraf4axhx99x3cw2rk55056628dvwwl8"))))
+        "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2
@@ -125,9 +131,7 @@ languages.  It currently supports compilation of C and C++ programs, using
 front-ends derived from GCC 4.0.1.  A new front-end for the C family of
 languages is in development.  The compiler infrastructure includes mirror sets
 of programming tools as well as libraries with equivalent functionality.")
-    (license license:ncsa)))
-
-(define-public llvm llvm-8)
+    (license license:asl2.0)))  ;with LLVM exceptions, see LICENSE.txt
 
 (define* (clang-runtime-from-llvm llvm hash
                                   #:optional (patches '()))
@@ -137,8 +141,7 @@ of programming tools as well as libraries with equivalent functionality.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/compiler-rt-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "compiler-rt" version))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
     (build-system cmake-build-system)
@@ -156,7 +159,7 @@ of programming tools as well as libraries with equivalent functionality.")
 functions for C and C++ programs.  It also provides header files that allow C
 and C++ source code to interface with the \"sanitization\" passes of the clang
 compiler.  In LLVM this library is called \"compiler-rt\".")
-    (license license:ncsa)
+    (license (package-license llvm))
 
     ;; <https://compiler-rt.llvm.org/> doesn't list MIPS as supported.
     (supported-systems (delete "mips64el-linux" %supported-systems))))
@@ -169,8 +172,10 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/cfe-" version ".src.tar.xz"))
+       (uri (llvm-download-uri (if (version>=? version "9.0.1")
+                                   "clang"
+                                   "cfe")
+                               version))
        (sha256 (base32 hash))
        (patches (map search-patch patches))))
     ;; Using cmake allows us to treat llvm as an external library.  There
@@ -300,7 +305,9 @@ compiler.  In LLVM this library is called \"compiler-rt\".")
 Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang
 project includes the Clang front end, the Clang static analyzer, and several
 code analysis tools.")
-    (license license:ncsa)))
+    (license (if (version>=? version "9.0")
+                 license:asl2.0         ;with LLVM exceptions
+                 license:ncsa))))
 
 (define (make-clang-toolchain clang)
   (package
@@ -347,151 +354,56 @@ output), and Binutils.")
               ("libc-debug" ,glibc "debug")
               ("libc-static" ,glibc "static")))))
 
-(define-public libcxx
-  (package
-    (name "libcxx")
-    (version (package-version llvm))
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://llvm.org/releases/"
-                           version "/libcxx-" version ".src.tar.xz"))
-       (sha256
-        (base32
-         "1qlx3wlxrnc5cwc1fcfc2vhfsl7j4294hi8y5kxj8hy8wxsjd462"))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)))
-    (home-page "https://libcxx.llvm.org")
-    (synopsis "C++ standard library")
-    (description
-     "This package provides an implementation of the C++ standard library for
-use with Clang, targeting C++11, C++14 and above.")
-    (license license:expat)))
-
-(define-public libclc
-  (package
-    (name "libclc")
-    (version (package-version llvm))
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/llvm/llvm-project.git")
-             (commit (string-append "llvmorg-" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "052h16wjcnqginzp7ki4il2xmm25v9nyk0wcz7cg03gbryhl7aqa"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:configure-flags
-       (list (string-append "-DLLVM_CLANG="
-                            (assoc-ref %build-inputs "clang")
-                            "/bin/clang")
-             (string-append "-DPYTHON="
-                            (assoc-ref %build-inputs "python")
-                            "/bin/python3"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'chdir
-           (lambda _ (chdir "libclc") #t)))))
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)
-       ("python" ,python)))
-    (home-page "https://libclc.llvm.org")
-    (synopsis "Libraries for the OpenCL programming language")
-    (description
-     "This package provides an implementation of the OpenCL library
-requirements according to version 1.1 of the OpenCL specification.")
-    ;; Apache license 2.0 with LLVM exception
-    (license license:asl2.0)))
-
-(define-public libomp
-  (package
-    (name "libomp")
-    (version (package-version llvm))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://releases.llvm.org/"
-                                  version  "/openmp-" version
-                                  ".src.tar.xz"))
-              (sha256
-               (base32
-                "1mf9cpgvix34xlpv0inkgl3qmdvgvp96f7sksqizri0n5xfp1cgp"))
-              (file-name (string-append "libomp-" version ".tar.xz"))))
-    (build-system cmake-build-system)
-    ;; XXX: Note this gets built with GCC because building with Clang itself
-    ;; fails (missing <atomic>, even when libcxx is added as an input.)
-    (arguments
-     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
-                           "-DOPENMP_TEST_C_COMPILER=clang"
-                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
-       #:test-target "check-libomp"))
-    (native-inputs
-     `(("clang" ,clang)
-       ("llvm" ,llvm)
-       ("perl" ,perl)
-       ("pkg-config" ,pkg-config)))
-    (inputs
-     `(("hwloc" ,hwloc "lib")))
-    (home-page "https://openmp.llvm.org")
-    (synopsis "OpenMP run-time support library")
-    (description
-     "This package provides the run-time support library developed by the LLVM
-project for the OpenMP multi-theaded programming extension.  This package
-notably provides @file{libgomp.so}, which is has a binary interface compatible
-with that of libgomp, the GNU Offloading and Multi Processing Library.")
-    (license license:expat)))
-
 (define-public clang-runtime
   (clang-runtime-from-llvm
    llvm
-   "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl"))
+   "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2"))
 
 (define-public clang
   (clang-from-llvm llvm clang-runtime
-                   "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08"
-                   #:patches '("clang-7.0-libc-search-path.patch")))
+                   "0ls2h3iv4finqyflyhry21qhc9cm9ga7g1zq21020p065qmm2y2p"
+                   #:patches '("clang-9.0-libc-search-path.patch")))
 
 (define-public clang-toolchain
   (make-clang-toolchain clang))
 
-(define-public llvm-9
+(define-public llvm-9 llvm)
+(define-public clang-runtime-9 clang-runtime)
+(define-public clang-9 clang)
+(define-public clang-toolchain-9 clang-toolchain)
+
+(define-public llvm-8
   (package
     (inherit llvm)
-    (version "9.0.0")
+    (version "8.0.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
-                "117ymdz1by2nkfq1c2p9m4050dp848kbjbiv6nsfj8hzy9f5d86n"))))
-    (license license:asl2.0)))
+                "0k124sxkfhfi1rca6kzkdraf4axhx99x3cw2rk55056628dvwwl8"))))
+    (license license:ncsa)))
 
-(define-public clang-runtime-9
+(define-public clang-runtime-8
   (clang-runtime-from-llvm
-   llvm-9
-   "03ni43lbkp63lr3p6sc94dphqmvnz5av5mml0xmk930xvnbcvr2n"))
+   llvm-8
+   "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl"))
 
-(define-public clang-9
-  (clang-from-llvm llvm-9 clang-runtime-9
-                   "0426ma80i41qsgzm1qdz81mjskck426diygxi2k5vji2gkpixa3v"))
+(define-public clang-8
+  (clang-from-llvm llvm-8 clang-runtime-8
+                   "0svk1f70hvpwrjp6x5i9kqwrqwxnmcrw5s7f4cxyd100mdd12k08"
+                   #:patches '("clang-7.0-libc-search-path.patch")))
 
-(define-public clang-toolchain-9
-  (make-clang-toolchain clang-9))
+(define-public clang-toolchain-8
+  (make-clang-toolchain clang-8))
 
 (define-public llvm-7
   (package
-    (inherit llvm)
+    (inherit llvm-8)
     (version "7.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
                 "16s196wqzdw4pmri15hadzqgdi926zln3an2viwyq0kini6zr3d3"))))))
@@ -502,7 +414,7 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
    "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq"))
 
 (define-public clang-7
-  (clang-from-llvm llvm-7 clang-runtime
+  (clang-from-llvm llvm-7 clang-runtime-7
                    "067lwggnbg0w1dfrps790r5l6k8n5zwhlsw7zb6zvmfpwpfn4nx4"
                    #:patches '("clang-7.0-libc-search-path.patch")))
 
@@ -511,12 +423,11 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
 
 (define-public llvm-6
   (package
-    (inherit llvm)
+    (inherit llvm-7)
     (version "6.0.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://llvm.org/releases/"
-                                  version "/llvm-" version ".src.tar.xz"))
+              (uri (llvm-download-uri "llvm" version))
               (sha256
                (base32
                 "1qpls3vk85lydi5b4axl0809fv932qgsqgdgrk098567z4jc7mmn"))))))
@@ -527,39 +438,21 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
    "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl"))
 
 (define-public clang-6
-  (clang-from-llvm llvm-6 clang-runtime
+  (clang-from-llvm llvm-6 clang-runtime-6
                    "0rxn4rh7rrnsqbdgp4gzc8ishbkryhpl1kd3mpnxzpxxhla3y93w"
                    #:patches '("clang-6.0-libc-search-path.patch")))
 
 (define-public clang-toolchain-6
   (make-clang-toolchain clang-6))
 
-;; Libcxx files specifically used by PySide2.
-(define-public libcxx-6
-  (package
-    (inherit libcxx)
-    (version (package-version llvm-6))
-    (source
-     (origin
-       (inherit (package-source libcxx))
-       (uri (string-append "http://llvm.org/releases/"
-                           version "/libcxx-" version ".src.tar.xz"))
-       (sha256
-        (base32
-         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
-    (native-inputs
-     `(("clang" ,clang-6)
-       ("llvm" ,llvm-6)))))
-
 (define-public llvm-3.9.1
-  (package (inherit llvm)
+  (package (inherit llvm-6)
     (name "llvm")
     (version "3.9.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
         "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z"))))))
@@ -578,14 +471,13 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.8-libc-search-path.patch")))
 
 (define-public llvm-3.8
-  (package (inherit llvm)
+  (package (inherit llvm-3.9.1)
     (name "llvm")
     (version "3.8.1")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://llvm.org/releases/"
-                          version "/llvm-" version ".src.tar.xz"))
+      (uri (llvm-download-uri "llvm" version))
       (sha256
        (base32
         "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf"))))))
@@ -603,13 +495,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.8-libc-search-path.patch")))
 
 (define-public llvm-3.7
-  (package (inherit llvm)
+  (package (inherit llvm-3.8)
     (version "3.7.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (sha256
         (base32
          "1masakdp9g2dan1yrazg7md5am2vacbkb3nahb3dchpc1knr8xxy"))))))
@@ -627,13 +518,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.6
-  (package (inherit llvm)
+  (package (inherit llvm-3.7)
     (version "3.6.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (sha256
         (base32
          "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn"))))))
@@ -650,13 +540,12 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-3.5
-  (package (inherit llvm)
+  (package (inherit llvm-3.6)
     (version "3.5.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://llvm.org/releases/"
-                           version "/llvm-" version ".src.tar.xz"))
+       (uri (llvm-download-uri "llvm" version))
        (patches
         (search-patches "llvm-3.5-fix-clang-build-with-gcc5.patch"))
        (sha256
@@ -685,6 +574,118 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
     ;; Extempore refuses to build on architectures other than x86_64
     (supported-systems '("x86_64-linux"))))
 
+(define-public libcxx
+  (package
+    (name "libcxx")
+    (version "9.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (llvm-download-uri "libcxx" version))
+       (sha256
+        (base32
+         "0d2bj5i6mk4caq7skd5nsdmz8c2m5w5anximl5wz3x32p08zz089"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)))
+    (home-page "https://libcxx.llvm.org")
+    (synopsis "C++ standard library")
+    (description
+     "This package provides an implementation of the C++ standard library for
+use with Clang, targeting C++11, C++14 and above.")
+    (license license:expat)))
+
+;; Libcxx files specifically used by PySide2.
+(define-public libcxx-6
+  (package
+    (inherit libcxx)
+    (version (package-version llvm-6))
+    (source
+     (origin
+       (inherit (package-source libcxx))
+       (uri (llvm-download-uri "libcxx" version))
+       (sha256
+        (base32
+         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
+    (native-inputs
+     `(("clang" ,clang-6)
+       ("llvm" ,llvm-6)))))
+
+(define-public libclc
+  (package
+    (name "libclc")
+    (version "9.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/llvm/llvm-project.git")
+             (commit (string-append "llvmorg-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1d1qayvrvvc1di7s7jfxnjvxq2az4lwq1sw1b2gq2ic0nksvajz0"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DLLVM_CLANG="
+                            (assoc-ref %build-inputs "clang")
+                            "/bin/clang")
+             (string-append "-DPYTHON="
+                            (assoc-ref %build-inputs "python")
+                            "/bin/python3"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "libclc") #t)))))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("python" ,python)))
+    (home-page "https://libclc.llvm.org")
+    (synopsis "Libraries for the OpenCL programming language")
+    (description
+     "This package provides an implementation of the OpenCL library
+requirements according to version 1.1 of the OpenCL specification.")
+    ;; Apache license 2.0 with LLVM exception
+    (license license:asl2.0)))
+
+(define-public libomp
+  (package
+    (name "libomp")
+    (version "9.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-download-uri "openmp" version))
+              (sha256
+               (base32
+                "1knafnpp0f7hylx8q20lkd6g1sf0flly572dayc5d5kghh7hd52w"))
+              (file-name (string-append "libomp-" version ".tar.xz"))))
+    (build-system cmake-build-system)
+    ;; XXX: Note this gets built with GCC because building with Clang itself
+    ;; fails (missing <atomic>, even when libcxx is added as an input.)
+    (arguments
+     '(#:configure-flags '("-DLIBOMP_USE_HWLOC=ON"
+                           "-DOPENMP_TEST_C_COMPILER=clang"
+                           "-DOPENMP_TEST_CXX_COMPILER=clang++")
+       #:test-target "check-libomp"))
+    (native-inputs
+     `(("clang" ,clang)
+       ("llvm" ,llvm)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("hwloc" ,hwloc "lib")))
+    (home-page "https://openmp.llvm.org")
+    (synopsis "OpenMP run-time support library")
+    (description
+     "This package provides the run-time support library developed by the LLVM
+project for the OpenMP multi-theaded programming extension.  This package
+notably provides @file{libgomp.so}, which is has a binary interface compatible
+with that of libgomp, the GNU Offloading and Multi Processing Library.")
+    (license license:expat)))
+
 (define-public python-llvmlite
   (package
     (name "python-llvmlite")
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 36df9fad0c..8262a418cc 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -144,7 +144,7 @@ sparsely connected networks.")
                                    "svm-predict"
                                    "svm-scale")))
                      #t)))))
-    (home-page "http://www.csie.ntu.edu.tw/~cjlin/libsvm/")
+    (home-page "https://www.csie.ntu.edu.tw/~cjlin/libsvm/")
     (synopsis "Library for Support Vector Machines")
     (description
      "LIBSVM is a machine learning library for support vector
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 1a9f9e5e5c..a2e8503ccd 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1388,7 +1388,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.9.2")
+    (version "2.3.9.3")
     (source
      (origin
        (method url-fetch)
@@ -1396,7 +1396,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "1yc6hi4hqg4hcc4495sf4m5f1lnargphi6dawj43if21vncgp127"))))
+        (base32 "0lcnqib63nv32xr3nr4s3x8k77mbgrhc13swjl2xqnzw4fabd7zq"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -2306,14 +2306,14 @@ transfer protocols.")
 (define-public opensmtpd
   (package
     (name "opensmtpd")
-    (version "6.6.3p1")
+    (version "6.6.4p1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
                            "opensmtpd-" version ".tar.gz"))
        (sha256
-        (base32 "1dqysjlyl0x3qzdzc9sjrla0063vpmlyq735lzf88p7wgzmw1xwy"))))
+        (base32 "1kyph9ycq0j21dl9n1sq5fns9p4gckdi0fmnf8awrcwrdcm9dyg2"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 10071c10d5..cab84a520b 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2016, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
@@ -33,6 +33,7 @@
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
 ;;; Copyright © 2019 Robert Smith <robertsmith@posteo.net>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -523,6 +524,51 @@ in memory, so even problems with very large output sizes can sometimes
 be solved.")
     (license license:gpl2+)))
 
+(define-public vinci
+  (package
+    (name "vinci")
+    (version "1.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.math.u-bordeaux.fr/~aenge/software/"
+                           "vinci/vinci-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1aq0qc1y27iw9grhgnyji3290wwfznsrk3sg6ynqpxwjdda53h4m"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("lrslib" ,lrslib)))
+    (arguments
+     `(#:tests? #f                      ; no check phase
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; register the lrs location in the config file
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((lrs (assoc-ref inputs "lrslib"))
+                    (lrsexec (string-append lrs "/bin/lrs")))
+               (substitute* "vinci.h"
+                 (("#define LRS_EXEC      \"lrs\"")
+                  (string-append "#define LRS_EXEC \"" lrsexec "\""))))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (install-file "vinci" bin))
+             #t)))))
+    (home-page
+     "https://www.math.u-bordeaux.fr/~aenge/?category=software&page=vinci")
+    (synopsis "Volume computation for polytopes")
+    (description
+     "Vinci implements a number of volume computation algorithms for convex
+polytopes in arbitrary dimension.  The polytopes can be given by their
+V-representation (as the convex hull of a finite number of vertices), by
+their H-representation (as the bounded intersection of a finite number of
+halfspaces) or by their double description with both representations.")
+    (license license:gpl2+)))
+
 (define-public arpack-ng
   (package
     (name "arpack-ng")
@@ -4136,7 +4182,12 @@ as equations, scalars, vectors, and matrices.")
                 "0hprcdwhhyjigmhhk6514m71bnmvqci9r8gglrqilgx424r6ff7q"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
+       #:modules (((guix build python-build-system) #:select (site-packages))
+                  (guix build gnu-build-system)
+                  (guix build utils))
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-compatability
            ;; Versions after 4.8.3 have immintrin.h IFDEFed for Windows only.
@@ -4153,7 +4204,9 @@ as equations, scalars, vectors, and matrices.")
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (invoke "./configure"
-                     (string-append "--prefix=" (assoc-ref outputs "out")))))
+                     "--python"
+                     (string-append "--prefix=" (assoc-ref outputs "out"))
+                     (string-append "--pypkgdir=" (site-packages inputs outputs)))))
          (add-after 'configure 'change-directory
            (lambda _
              (chdir "build")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 120daacdc6..c1d4d93c32 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +49,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
@@ -68,8 +70,10 @@
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages logging)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages markup)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages pcre)
@@ -1634,14 +1638,14 @@ are both supported).")
 (define-public profanity
   (package
     (name "profanity")
-    (version "0.7.1")
+    (version "0.8.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://profanity-im.github.io/profanity-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0nxh81j8ky0fzv47pip1jb7rs5rrin3jx0f3h632bvpjiya45r1z"))))
+                "15yrx2ir2bilxpjfaxpjb93yjpvpvcvh5r7wbsjx6kmmy7qg2zvb"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -1787,6 +1791,130 @@ implementation.  Quaternion and libqmatrixclient together form the
 QMatrixClient project.")
     (license license:lgpl2.1+)))
 
+(define-public mtxclient
+  (package
+    (name "mtxclient")
+    (version "0.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Nheko-Reborn/mtxclient.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0pycznrvj57ff6gbwfn1xj943d2dr4vadl79hii1z16gn0nzxpmj"))))
+    (arguments
+     `(#:configure-flags
+       (list
+        ;; Disable example binaries (not installed)
+        "-DBUILD_LIB_EXAMPLES=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'disable-network-tests
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption)")
+                "# add_test"))
+             #t))
+         (add-before 'configure 'set-home
+           (lambda _
+             ;; Tries to create package registry file
+             ;; So, set HOME.
+             (setenv "HOME" "/tmp")
+             #t)))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("boost" ,boost)
+       ("json-modern-cxx" ,json-modern-cxx)
+       ("libolm" ,libolm)
+       ("libsodium" ,libsodium)
+       ("openssl" ,openssl)
+       ("spdlog" ,spdlog)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/Nheko-Reborn/mtxclient")
+    (synopsis "Client API library for the Matrix protocol")
+    (description "@code{mtxclient} is a C++ library that implements client API
+for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
+    (license license:expat)))
+
+(define-public nheko
+  (package
+    (name "nheko")
+    (version "0.6.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Nheko-Reborn/nheko.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "19dkc98l1q4070v6mli4ybqn0ip0za607w39hjf0x8rqdxq45iwm"))))
+    (arguments
+     `(#:tests? #f                      ;no test target
+       #:configure-flags
+       (list
+        "-DCMAKE_BUILD_TYPE=Release"
+        "-DCMAKE_CXX_FLAGS=-fpermissive")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-Werror
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("-Werror") ""))
+             #t))
+         (add-after 'unpack 'fix-determinism
+           (lambda _
+             ;; Make Qt deterministic.
+             (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
+             #t)))))
+    (build-system qt-build-system)
+    (inputs
+     `(("boost" ,boost)
+       ("cmark" ,cmark)
+       ("json-modern-cxx" ,json-modern-cxx)
+       ("libolm" ,libolm)
+       ("lmdb" ,lmdb)
+       ("lmdbxx" ,lmdbxx)
+       ("mtxclient" ,mtxclient)
+       ("openssl" ,openssl)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("qtmultimedia" ,qtmultimedia)
+       ("spdlog" ,spdlog)
+       ("tweeny" ,tweeny)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qtlinguist" ,qttools)))
+    (home-page "https://github.com/Nheko-Reborn/nheko")
+    (synopsis "Desktop client for Matrix using Qt and C++14")
+    (description "@code{Nheko} want to provide a native desktop app for the
+Matrix protocol that feels more like a mainstream chat app and less like an IRC
+client.
+
+There is support for:
+@itemize
+@item E2E encryption (text messages only: attachments are currently sent unencrypted).
+@item User registration.
+@item Creating, joining & leaving rooms.
+@item Sending & receiving invites.
+@item Sending & receiving files and emoji.
+@item Typing notifications.
+@item Username auto-completion.
+@item Message & mention notifications.
+@item Redacting messages.
+@item Read receipts.
+@item Basic communities support.
+@item Room switcher (@key{ctrl-K}).
+@item Light, Dark & System themes.
+@end itemize")
+    (license license:gpl3+)))
+
 (define-public quaternion
   (package
     (name "quaternion")
diff --git a/gnu/packages/mono.scm b/gnu/packages/mono.scm
index 17f90fe30a..5447dd2300 100644
--- a/gnu/packages/mono.scm
+++ b/gnu/packages/mono.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,9 +19,14 @@
 
 (define-module (gnu packages mono)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages photo)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages)
@@ -124,3 +130,46 @@ C#, a C-style programming language from Microsoft that is very similar to
 Java.")
     (home-page "https://www.mono-project.com/")
     (license license:x11)))
+
+(define-public libgdiplus
+  (package
+    (name "libgdiplus")
+    (version "6.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://download.mono-project.com/sources/libgdiplus/libgdiplus-"
+             version
+             ".tar.gz"))
+       (sha256
+        (base32
+         "0adz5813f881z65lpyf0g0w9hcn7d7qkai6sncpkwnsxfv4khp5p"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("cairo" ,cairo)
+       ("fontconfig" ,fontconfig)
+       ("libtiff" ,libtiff)
+       ("libjpeg" ,libjpeg)
+       ("libexif" ,libexif)
+       ("libungif" ,libungif)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; TODO: See with upstream why they fail.
+         ;; https://github.com/mono/mono/issues/18934
+         (add-before 'configure 'remove-buggy-tests
+           (lambda _
+             (substitute* "tests/Makefile.in"
+               (("testicocodec\\$\\(EXEEXT\\) ") " ")
+               (("testfont\\$\\(EXEEXT\\) ") " "))
+             #t)))))
+    (home-page "https://www.mono-project.com/docs/gui/libgdiplus/")
+    (synopsis "Mono library that provides a GDI+-compatible API")
+    (description "Libgdiplus is the Mono library that provides a
+GDI+-compatible API on non-Windows operating systems.  The implementation uses
+Cairo to do most of the heavy lifting.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 2550c124b5..fe670f6aae 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -60,7 +60,7 @@
 (define-public libmpdclient
   (package
     (name "libmpdclient")
-    (version "2.17")
+    (version "2.18")
     (source (origin
               (method url-fetch)
               (uri
@@ -69,7 +69,7 @@
                               "/libmpdclient-" version ".tar.xz"))
               (sha256
                (base32
-                "0n9mrrmk20p4mfsz782jziax9z3bn7vxlm53327mrdlmgqf8z6zf"))))
+                "1yl123xr25gcd3vlsfmn6p7gbrq029pgnxa8m6n6j0byaqgixc2c"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -92,7 +92,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.21.18")
+    (version "0.21.20")
     (source (origin
               (method url-fetch)
               (uri
@@ -101,7 +101,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "0hllkq426hql1s80xxvy28ypvw3dbfrrclbjc0lckmmgsmnfd0l7"))))
+                "1q8hwl3i0a4qzdwfh44r0nh5zd2mm3rraqw5qvmz6qfrjslz0bj2"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...
@@ -183,7 +183,7 @@ player daemon.")
 (define-public ncmpc
   (package
     (name "ncmpc")
-    (version "0.36")
+    (version "0.37")
     (source (origin
               (method url-fetch)
               (uri
@@ -192,7 +192,7 @@ player daemon.")
                               "/ncmpc-" version ".tar.xz"))
               (sha256
                (base32
-                "0b1yg93is9057p9d7vfv5nz85d11p6jq94fw07jn3zlfzhyqfcj6"))))
+                "0p31jpv1vj01bqf1589mnfpv9618cfsv259rlnbqybg1yqkvg3kw"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 00e0d12eab..fc4950f519 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -26,14 +26,15 @@
 
 (define-module (gnu packages mpi)
   #:use-module (guix packages)
-  #:use-module ((guix licenses)
-                #:hide (expat))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix deprecation)
   #: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 compression)
   #:use-module (gnu packages fabric-management)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages java)
@@ -128,7 +129,7 @@ exploit it accordingly and efficiently.
 hwloc may display the topology in multiple convenient formats.  It also offers
 a powerful programming interface to gather information about the hardware,
 bind processes, and much more.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public hwloc-2
   ;; Note: 2.0 isn't the default yet, see above.
@@ -273,7 +274,7 @@ from all across the High Performance Computing community in order to build the
 best MPI library available.  Open MPI offers advantages for system and
 software vendors, application developers and computer science researchers.")
     ;; See file://LICENSE
-    (license bsd-2)))
+    (license license:bsd-2)))
 
 ;; TODO: javadoc files contain timestamps.
 (define-public java-openmpi
@@ -392,4 +393,81 @@ object oriented interface which closely follows MPI-2 C++ bindings.  It
 supports point-to-point and collective communications of any picklable Python
 object as well as optimized communications of Python objects (such as NumPy
 arrays) that expose a buffer interface.")
-    (license bsd-3)))
+    (license license:bsd-3)))
+
+(define-public mpich
+  (package
+    (name "mpich")
+    (version "3.3.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.mpich.org/static/downloads/"
+                                  version "/mpich-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1farz5zfx4cd0c3a0wb9pgfypzw0xxql1j1294z1sxslga1ziyjb"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("zlib" ,zlib)
+       ("hwloc" ,hwloc-2 "lib")
+       ("slurm" ,slurm)
+       ,@(if (and (not (%current-target-system))
+                  (member (%current-system) (package-supported-systems ucx)))
+             `(("ucx" ,ucx))
+             '())))
+    (native-inputs
+     `(("perl" ,perl)
+       ("which" ,which)
+       ("gfortran" ,gfortran)))
+    (outputs '("out" "debug"))
+    (arguments
+     `(#:configure-flags
+       (list "--disable-silent-rules"             ;let's see what's happening
+             "--enable-debuginfo"
+             ;; "--with-device=ch4:ucx" ; --with-device=ch4:ofi segfaults in tests
+             (string-append "--with-hwloc-prefix="
+                            (assoc-ref %build-inputs "hwloc"))
+
+             ,@(if (assoc "ucx" (package-inputs this-package))
+                   `((string-append "--with-ucx="
+                                    (assoc-ref %build-inputs "ucx")))
+                   '()))
+
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-sources
+                    (lambda _
+                      (substitute* "./maint/gen_subcfg_m4"
+                        (("/usr/bin/env") (which "env")))
+                      (substitute* "src/glue/romio/all_romio_symbols"
+                        (("/usr/bin/env") (which "env")))
+                      (substitute* (find-files "." "buildiface")
+                        (("/usr/bin/env") (which "env")))
+                      (substitute* "maint/extracterrmsgs"
+                        (("/usr/bin/env") (which "env")))
+                      (substitute* (find-files "." "f77tof90")
+                        (("/usr/bin/env") (which "env")))
+                      (substitute* (find-files "." "\\.sh$")
+                        (("/bin/sh") (which "sh")))
+                      #t))
+                  (add-before 'configure 'fix-makefile
+                    (lambda _
+                      ;; Remove "@hwloclib@" from 'pmpi_convenience_libs'.
+                      ;; This fixes "No rule to make target '-lhwloc', needed
+                      ;; by 'lib/libmpi.la'".
+                      (substitute* "Makefile.in"
+                        (("^pmpi_convenience_libs = (.*) @hwloclib@ (.*)$" _
+                          before after)
+                         (string-append "pmpi_convenience_libs = "
+                                        before " " after)))
+                      #t)))))
+    (home-page "https://www.mpich.org/")
+    (synopsis "Implementation of the Message Passing Interface (MPI)")
+    (description
+     "MPICH is a high-performance and portable implementation of the Message
+Passing Interface (MPI) standard (MPI-1, MPI-2 and MPI-3).  MPICH provides an
+MPI implementation that efficiently supports different computation and
+communication platforms including commodity clusters, high-speed networks (10
+Gigabit Ethernet, InfiniBand, Myrinet, Quadrics), and proprietary high-end
+computing systems (Blue Gene, Cray).  It enables research in MPI through a
+modular framework for other derived implementations.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 36d035ada0..bc5071dad0 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -131,7 +131,7 @@ correct rounding.")
 for performing arithmetic on complex numbers.  It supports arbitrarily high
 precision and correctly rounds the results.")
    (license lgpl3+)
-   (home-page "http://multiprecision.org/mpc/")))
+   (home-page "http://www.multiprecision.org/mpc/")))
 
 (define-public mpfi
   (package
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 50e5d11f8d..16e69840df 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 nee <nee.git@hidamari.blue>
 ;;; Copyright © 2018 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -876,11 +876,6 @@ interface.  It is implemented as a frontend to @code{klick}.")
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; no check target
-    (native-inputs
-     `(;; Use gcc-4.9 to work around an internal compiler error that happens
-       ;; when using gcc-5.5.0.  FIXME: Try removing this when the default
-       ;; compiler is no longer gcc-5.5.0.
-       ("gcc" ,gcc-4.9)))
     (home-page "https://bitbucket.org/mpyne/game-music-emu")
     (synopsis "Video game music file playback library")
     (description
@@ -2284,7 +2279,7 @@ improves on support for JACK features, such as JACK MIDI.")
        ("libsndfile" ,libsndfile)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://linuxsampler.org/libgig/")
+    (home-page "https://linuxsampler.org/libgig/")
     (synopsis "C++ library for working with Gigasampler (.gig) files")
     (description
      "Libgig is a C++ library for loading, modifying existing and creating new
@@ -2621,7 +2616,7 @@ tune-in sender list from @url{http://opml.radiotime.com}.")
 (define-public pianobar
   (package
     (name "pianobar")
-    (version "2016.06.02")
+    (version "2019.02.14")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2630,10 +2625,10 @@ tune-in sender list from @url{http://opml.radiotime.com}.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "058fbdxp7n35hxwy3b8slfy4pb4n63cb173vfmywqa06wh1dv6f6"))))
+                "1bfabkj3m9kmhxl64w4azmi0xf7w52fmqfbw2ag28hbb5yy01k1m"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no tests
+     `(#:tests? #f                      ; no tests
        #:make-flags (list "CC=gcc" "CFLAGS=-std=c99"
                           (string-append "PREFIX=" %output))
        #:phases (modify-phases %standard-phases
@@ -2643,10 +2638,10 @@ tune-in sender list from @url{http://opml.radiotime.com}.")
        ("curl" ,curl)
        ("libgcrypt" ,libgcrypt)
        ("json-c" ,json-c)
-       ("ffmpeg" ,ffmpeg-3.4)))
+       ("ffmpeg" ,ffmpeg)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://6xq.net/projects/pianobar/")
+    (home-page "https://6xq.net/pianobar/")
     (synopsis "Console-based pandora.com player")
     (description "pianobar is a console-based music player for the
 personalized online radio pandora.com.  It has configurable keys for playing
diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index 62fe84ca07..720b8a7858 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,14 +28,14 @@
 (define-public ncdu
   (package
     (name "ncdu")
-    (version "1.14.1")
+    (version "1.14.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dev.yorhel.nl/download/ncdu-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0gp1aszzrh8b6fhv8fspvkmr0qwc55z6z4w6l7r8j09sq7lf0cdy"))))
+                "1cf6a9qw7ljaw09b0g7c5i252dl7wb2mnkrbwwwf7m0c3mf7yyll"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (synopsis "Ncurses based disk usage analyzer")
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index dbc40028ad..fa755fb7eb 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -178,7 +178,7 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
 (define-public socat
   (package
     (name "socat")
-    (version "1.7.3.3")
+    (version "1.7.3.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -186,9 +186,9 @@ residing in IPv4-only networks, even when they are behind a NAT device.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0jnhjijyq74g3wa4ph0am83z6vq7qna7ac0xqjma8s4197z3zmhd"))))
+                "1z7xgnwiqpcv1j6aghhj9nqbx7cg3gpc4n9j7vi9hm7nhv5788wp"))))
     (build-system gnu-build-system)
-    (arguments '(#:tests? #f))                    ;no 'check' phase
+    (arguments '(#:tests? #f))          ; no test suite
     (inputs `(("openssl" ,openssl)))
     (home-page "http://www.dest-unreach.org/socat/")
     (synopsis
@@ -562,14 +562,14 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.5.5")
+    (version "5.5.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://debian/pool/main/w/whois/"
                            "whois_" version ".tar.xz"))
        (sha256
-        (base32 "03akwma24gzfnsmwpjxmkzmcaxzg6fc68hmyaz0xmsl28i28l3n3"))))
+        (base32 "0kpi981zjczvdcxfcq455c529vlaxa73x8kbm530z5b01h0fk8fb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
diff --git a/gnu/packages/nfs.scm b/gnu/packages/nfs.scm
index b81623fd07..3a8467431d 100644
--- a/gnu/packages/nfs.scm
+++ b/gnu/packages/nfs.scm
@@ -118,7 +118,7 @@
        ("libtirpc" ,libtirpc)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.kernel.org/pub/linux/utils/nfs-utils/")
+    (home-page "https://www.kernel.org/pub/linux/utils/nfs-utils/")
     (synopsis "Tools for loading and managing Linux NFS mounts")
     (description "The Network File System (NFS) was developed to allow
 machines to mount a disk partition on a remote machine as if it were a local
diff --git a/gnu/packages/nim.scm b/gnu/packages/nim.scm
index 22dac0b58a..374a533c30 100644
--- a/gnu/packages/nim.scm
+++ b/gnu/packages/nim.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +28,7 @@
 (define-public nim
   (package
     (name "nim")
-    (version "0.17.2")
+    (version "1.0.6")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +36,7 @@
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "1gc2xk3ygmz9y4pm75pligssgw995a7gvnfpy445fjpw4d81pzxa"))))
+        "1cv6bxc7w21455c0pv0r2h64ljyzw266jsk1fsgiiyk2rx8mfkhk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; No tests.
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 1494e2ecfe..ee35d76852 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -182,4 +182,5 @@ perfect for data-intensive real-time applications that run across distributed
 devices.")
     (home-page "https://nodejs.org/")
     (license expat)
-    (properties '((timeout . 3600))))) ; 1 h
+    (properties '((max-silent-time . 7200)     ;2h, needed on ARM
+                  (timeout . 21600)))))        ;6h
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 32b03359d8..2bf9672bf1 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016-2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Peter Kreye <kreyepr@gmail.com>
 ;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
@@ -528,7 +528,7 @@ Git-friendly development workflow.")
 (define-public camlp5
   (package
     (name "camlp5")
-    (version "7.10")
+    (version "7.11")
     (source
      (origin
        (method git-fetch)
@@ -537,7 +537,7 @@ Git-friendly development workflow.")
              (commit (string-append "rel" (string-delete #\. version)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1a1lgsc8350afdwmsznsys7m0c0cks4nw6irqz2f92g8g4vkk9b7"))))
+        (base32 "1s1f9i0r0czxlbnsaz4kvs2ahknmqxcm5ypl75g7scjcbl0an2x4"))))
     (build-system gnu-build-system)
     (inputs
      `(("ocaml" ,ocaml)))
@@ -582,21 +582,21 @@ concrete syntax of the language (Quotations, Syntax Extensions).")
 (define-public hevea
   (package
     (name "hevea")
-    (version "2.32")
+    (version "2.33")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://hevea.inria.fr/old/"
-                                  name "-" version ".tar.gz"))
+                                  "hevea-" version ".tar.gz"))
               (sha256
                (base32
-                "1s4yqphfcr1pf5mcj5c84mvmd107k525iiym5jdwsxz0ka0ccmfy"))))
+                "0115bn6n6hhb08rmj0m508wjcsn1mggiagqly6s941pq811wxymb"))))
     (build-system gnu-build-system)
     (inputs
      `(("ocaml" ,ocaml)))
     (native-inputs
      `(("ocamlbuild" ,ocamlbuild)))
     (arguments
-     `(#:tests? #f  ; no test suite
+     `(#:tests? #f                      ; no test suite
        #:make-flags (list (string-append "PREFIX=" %output))
        #:phases (modify-phases %standard-phases
                   (delete 'configure)
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 0d87691cd7..3b6ec6b44f 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -599,7 +599,7 @@ in transmittable and storable formats, such as JSON and MessagePack.")
         ("python-sphinx" ,python-sphinx)
         ("gnupg" ,gnupg)
         ("git" ,git-minimal)))
-    (home-page "http://docs.openstack.org/developer/reno/")
+    (home-page "https://docs.openstack.org/reno/latest/")
     (synopsis "Release notes manager")
     (description "Reno is a tool for storing release notes in a git repository
 and building documentation from them.")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 422d4f1959..6c80806457 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.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 © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
@@ -788,29 +788,36 @@ written entirely in Python.")))
 (define-public gwl
   (package
     (name "gwl")
-    (version "0.1.1")
+    (version "0.2.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://www.guixwl.org/releases/gwl-"
-                                  version ".tar.gz"))
+              (uri (string-append "mirror://gnu/gwl/gwl-" version ".tar.gz"))
               (sha256
                (base32
-                "06pm967mq1wyggx7l0nfapw5s0k5qc5r9lawk2v3db868br779a7"))))
+                "0db1nvy6qzhj9kv834vrlxw7gqv3lih1n4hv5zac1zjmb61ll915"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)
+       ("graphviz" ,graphviz)))
     (inputs
-     `(("guile" ,guile-2.2)))
+     `(("guile" ,guile-3.0)))
     (propagated-inputs
-     `(("guix" ,guix)
-       ("guile-commonmark" ,guile-commonmark)))
-    (home-page "https://www.guixwl.org")
+     `(("guix" ,guile3.0-guix)
+       ("guile-commonmark" ,guile3.0-commonmark)
+       ("guile-gcrypt" ,guile3.0-gcrypt)
+       ("guile-pfds" ,guile3.0-pfds)
+       ("guile-syntax-highlight" ,guile3.0-syntax-highlight)
+       ("guile-wisp" ,guile3.0-wisp)))
+    (home-page "https://workflows.guix.info")
     (synopsis "Workflow management extension for GNU Guix")
-    (description "This project provides two subcommands to GNU Guix and
-introduces two record types that provide a workflow management extension built
-on top of GNU Guix.")
+    (description "The @dfn{Guix Workflow Language} (GWL) provides an
+extension to GNU Guix's declarative language for package management to
+automate the execution of programs in scientific workflows.  The GWL
+can use process engines to integrate with various computing
+environments.")
     ;; The Scheme modules in guix/ and gnu/ are licensed GPL3+,
     ;; the web interface modules in gwl/ are licensed AGPL3+,
     ;; and the fonts included in this package are licensed OFL1.1.
@@ -966,7 +973,7 @@ for packaging and deployment of cross-compiled Windows applications.")
 (define-public libostree
   (package
     (name "libostree")
-    (version "2019.3")
+    (version "2020.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -974,7 +981,7 @@ for packaging and deployment of cross-compiled Windows applications.")
                     (version-major+minor version) "/libostree-" version ".tar.xz"))
               (sha256
                (base32
-                "1r07yqbc9iiq0lzv1pryppd35fv695ym8r040msbfc93pmiy77y0"))))
+                "0sgx81w6skiivbr2gfhljf9nvnqfwwnwfgpqqa10fjdkjrqwvpk8"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 1e93e5d9ad..06214297f7 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -319,7 +319,7 @@ dependencies, it is suited for installing on desktop and server systems alike.
 The text based user interface allows you to run YAPET easily in a Secure Shell
 session.  Two companion utilities enable users to convert CSV files to YAPET
 and vice versa.")
-    (home-page "http://www.guengel.ch/myapps/yapet/")
+    (home-page "https://yapet.guengel.ch/")
     (license license:gpl3+)))
 
 (define-public cracklib
diff --git a/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch b/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch
deleted file mode 100644
index 4250106a19..0000000000
--- a/gnu/packages/patches/choqok-Fix-building-under-Qt-5.13.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-Add QMap include to fix building under Qt 5.13
-
-This combines several patches which all add the same missing include:
-- e13ab06f65a4e8b6259bccda1401abb9c1c9fdca
-- 546ede9ef712bb1b156a55ce30df81c3203dde61
-- 08fb06b63a78888e6703de6ac1a4fd6a0e2791eb
-- bef6784596bf0b41287ebad81f138e1c8c2a6be2
-
-Include is no longer added transitively.
----
-
---- a/plugins/betternotify/notify.h
-+++ b/plugins/betternotify/notify.h
-@@ -23,6 +23,7 @@
- #ifndef NOTIFY_H
- #define NOTIFY_H
- 
-+#include <QMap>
- #include <QQueue>
- #include <QPoint>
- #include <QPointer>
---- a/plugins/untiny/untiny.h
-+++ b/plugins/untiny/untiny.h
-@@ -27,6 +27,7 @@
- 
- #include "plugin.h"
- 
-+#include <QMap>
- #include <QQueue>
- #include <QUrl>
- #include <QPointer>
---- a/plugins/uploaders/flickr/flickr.h
-+++ b/plugins/uploaders/flickr/flickr.h
-@@ -26,6 +26,8 @@
- 
- #include "uploader.h"
- 
-+#include <QMap>
-+
- /**
- @author Andrey Esin \<gmlastik@gmail.com\>
- */
-diff --git a/plugins/uploaders/imageshack/imageshack.h b/plugins/uploaders/imageshack/imageshack.h
-index d9ddc88..63d0e3f 100644
---- a/plugins/uploaders/imageshack/imageshack.h
-+++ b/plugins/uploaders/imageshack/imageshack.h
-@@ -26,6 +26,8 @@
- 
- #include "uploader.h"
- 
-+#include <QMap>
-+
- /**
- @author Mehrdad Momeny \<mehrdad.momeny@gmail.com\>
- */
---- a/plugins/uploaders/mobypicture/mobypicture.h
-+++ b/plugins/uploaders/mobypicture/mobypicture.h
-@@ -26,6 +26,8 @@
- 
- #include "uploader.h"
- 
-+#include <QMap>
-+
- class KJob;
- 
- class Mobypicture : public Choqok::Uploader
---- a/plugins/uploaders/posterous/posterous.h
-+++ b/plugins/uploaders/posterous/posterous.h
-@@ -26,6 +26,8 @@
- 
- #include "uploader.h"
- 
-+#include <QMap>
-+
- class KJob;
- 
- class Posterous : public Choqok::Uploader
---- a/plugins/uploaders/twitgoo/twitgoo.h
-+++ b/plugins/uploaders/twitgoo/twitgoo.h
-@@ -26,6 +26,8 @@
- 
- #include "uploader.h"
- 
-+#include <QMap>
-+
- class KJob;
- 
- class Twitgoo : public Choqok::Uploader
---
diff --git a/gnu/packages/patches/clang-9.0-libc-search-path.patch b/gnu/packages/patches/clang-9.0-libc-search-path.patch
new file mode 100644
index 0000000000..be34344842
--- /dev/null
+++ b/gnu/packages/patches/clang-9.0-libc-search-path.patch
@@ -0,0 +1,83 @@
+Clang attempts to guess file names based on the OS and distro (yes!),
+but unfortunately, that doesn't work for us.
+
+This patch makes it easy to insert libc's $libdir so that Clang passes the
+correct absolute file name of crt1.o etc. to 'ld'.  It also disables all
+the distro-specific stuff and removes the hard-coded FHS directory names
+to make sure Clang also works on non-GuixSD systems.
+
+diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
+--- a/lib/Driver/ToolChains/Linux.cpp
++++ b/lib/Driver/ToolChains/Linux.cpp
+@@ -240,6 +240,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+                          .str());
+   }
+ 
++// Comment out the distro-specific tweaks so that they don't bite when
++// using Guix on a foreign distro.
++#if 0
+   Distro Distro(D.getVFS());
+ 
+   if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
+@@ -306,6 +309,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ 
+   if (IsAndroid || Distro.IsOpenSUSE())
+     ExtraOpts.push_back("--enable-new-dtags");
++#endif
+ 
+   // The selection of paths to try here is designed to match the patterns which
+   // the GCC driver itself uses, as this is part of the GCC-compatible driver.
+@@ -363,7 +367,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+     // the cross. Note that GCC does include some of these directories in some
+     // configurations but this seems somewhere between questionable and simply
+     // a bug.
+-    if (StringRef(LibPath).startswith(SysRoot)) {
++    if (0) {
+       addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths);
+       addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths);
+     }
+@@ -382,6 +386,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+   addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths);
+   addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths);
+ 
++// This requires the commented distro tweaks above.
++#if 0
+   if (IsAndroid) {
+     // Android sysroots contain a library directory for each supported OS
+     // version as well as some unversioned libraries in the usual multiarch
+@@ -410,10 +416,15 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+     addPathIfExists(D, SysRoot + "/" + OSLibDir + "/" + ABIName, Paths);
+     addPathIfExists(D, SysRoot + "/usr/" + OSLibDir + "/" + ABIName, Paths);
+   }
++#endif
+ 
+   // Try walking via the GCC triple path in case of biarch or multiarch GCC
+   // installations with strange symlinks.
+   if (GCCInstallation.isValid()) {
++
++// The following code would end up adding things like
++// "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path.
++#if 0
+     addPathIfExists(D,
+                     SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
+                         "/../../" + OSLibDir,
+@@ -426,6 +437,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+                              BiarchSibling.gccSuffix(),
+                       Paths);
+     }
++#endif
+ 
+     // See comments above on the multilib variant for details of why this is
+     // included even from outside the sysroot.
+@@ -450,8 +462,9 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+   if (StringRef(D.Dir).startswith(SysRoot))
+     addPathIfExists(D, D.Dir + "/../lib", Paths);
+ 
+-  addPathIfExists(D, SysRoot + "/lib", Paths);
+-  addPathIfExists(D, SysRoot + "/usr/lib", Paths);
++  // Add libc's lib/ directory to the search path, so that crt1.o, crti.o,
++  // and friends can be found.
++  addPathIfExists(D, "@GLIBC_LIBDIR@", Paths);
+ }
+ 
+ ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
diff --git a/gnu/packages/patches/containerd-test-with-go1.13.patch b/gnu/packages/patches/containerd-test-with-go1.13.patch
new file mode 100644
index 0000000000..964adee9e6
--- /dev/null
+++ b/gnu/packages/patches/containerd-test-with-go1.13.patch
@@ -0,0 +1,21 @@
+Compatibility fix for go 1.13, flag.Parse() shouldn't be called during
+package initialization.
+https://golang.org/doc/go1.13#testing
+--- a/client_test.go	2020-02-12 14:50:28.991245371 -0500
++++ b/client_test.go	2020-02-12 15:12:37.383523980 -0500
+@@ -49,7 +49,6 @@
+ 	flag.StringVar(&address, "address", defaultAddress, "The address to the containerd socket for use in the tests")
+ 	flag.BoolVar(&noDaemon, "no-daemon", false, "Do not start a dedicated daemon for the tests")
+ 	flag.BoolVar(&noCriu, "no-criu", false, "Do not run the checkpoint tests")
+-	flag.Parse()
+ }
+ 
+ func testContext() (context.Context, context.CancelFunc) {
+@@ -59,6 +58,7 @@
+ }
+ 
+ func TestMain(m *testing.M) {
++	flag.Parse()
+ 	if testing.Short() {
+ 		os.Exit(m.Run())
+ 	}
diff --git a/gnu/packages/patches/desmume-gcc6-fixes.patch b/gnu/packages/patches/desmume-gcc6-fixes.patch
new file mode 100644
index 0000000000..6eb9576f64
--- /dev/null
+++ b/gnu/packages/patches/desmume-gcc6-fixes.patch
@@ -0,0 +1,59 @@
+From: zeromus
+Origin: upstream, https://sourceforge.net/p/desmume/code/5514, https://sourceforge.net/p/desmume/code/5517, https://sourceforge.net/p/desmume/code/5430
+Subject: fix GCC6 issues
+Bug: https://sourceforge.net/p/desmume/bugs/1570/
+Bug-Debian: http://bugs.debian.org/811691
+
+Index: desmume/src/MMU_timing.h
+===================================================================
+--- desmume/src/MMU_timing.h	(revision 5513)
++++ desmume/src/MMU_timing.h	(revision 5517)
+@@ -155,8 +155,8 @@
+ 	enum { ASSOCIATIVITY = 1 << ASSOCIATIVESHIFT };

+ 	enum { BLOCKSIZE = 1 << BLOCKSIZESHIFT };

+ 	enum { TAGSHIFT = SIZESHIFT - ASSOCIATIVESHIFT };

+-	enum { TAGMASK = (u32)(~0 << TAGSHIFT) };

+-	enum { BLOCKMASK = ((u32)~0 >> (32 - TAGSHIFT)) & (u32)(~0 << BLOCKSIZESHIFT) };

++	enum { TAGMASK = (u32)(~0U << TAGSHIFT) };

++	enum { BLOCKMASK = ((u32)~0U >> (32 - TAGSHIFT)) & (u32)(~0U << BLOCKSIZESHIFT) };

+ 	enum { WORDSIZE = sizeof(u32) };

+ 	enum { WORDSPERBLOCK = (1 << BLOCKSIZESHIFT) / WORDSIZE };

+ 	enum { DATAPERWORD = WORDSIZE * ASSOCIATIVITY };

+Index: desmume/src/ctrlssdl.cpp
+===================================================================
+--- desmume/src/ctrlssdl.cpp	(revision 5513)
++++ desmume/src/ctrlssdl.cpp	(revision 5517)
+@@ -200,7 +200,7 @@
+           break;
+         case SDL_JOYAXISMOTION:
+           /* Dead zone of 50% */
+-          if( (abs(event.jaxis.value) >> 14) != 0 )
++          if( ((u32)abs(event.jaxis.value) >> 14) != 0 )
+             {
+               key = ((event.jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event.jaxis.axis & 127) << 1);
+               if (event.jaxis.value > 0) {
+@@ -370,7 +370,7 @@
+          Note: button constants have a 1bit offset. */
+     case SDL_JOYAXISMOTION:
+       key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1);
+-      if( (abs(event->jaxis.value) >> 14) != 0 )
++      if( ((u32)abs(event->jaxis.value) >> 14) != 0 )
+         {
+           if (event->jaxis.value > 0)
+             key_code |= 1;
+Index: desmume/src/wifi.cpp
+===================================================================
+--- desmume/src/wifi.cpp	(revision 5429)
++++ desmume/src/wifi.cpp	(revision 5430)
+@@ -320,9 +320,9 @@
+ 
+ #if (WIFI_LOGGING_LEVEL >= 1)
+ 	#if WIFI_LOG_USE_LOGC
+-		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: "__VA_ARGS__);
++		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: " __VA_ARGS__);
+ 	#else
+-		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: "__VA_ARGS__);
++		#define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: " __VA_ARGS__);
+ 	#endif
+ #else
+ #define WIFI_LOG(level, ...) {}
diff --git a/gnu/packages/patches/desmume-gcc7-fixes.patch b/gnu/packages/patches/desmume-gcc7-fixes.patch
new file mode 100644
index 0000000000..a4934ff6e6
--- /dev/null
+++ b/gnu/packages/patches/desmume-gcc7-fixes.patch
@@ -0,0 +1,18 @@
+From e1f7039f1b06add4fb75b2f8774000b8f05574af Mon Sep 17 00:00:00 2001
+From: rogerman <rogerman@users.sf.net>
+Date: Mon, 17 Aug 2015 21:15:04 +0000
+Subject: Fix bug with libfat string handling.
+
+diff --git a/src/utils/libfat/directory.cpp b/src/utils/libfat/directory.cpp
+index 765d7ae5..b6d7f01f 100644
+--- a/src/utils/libfat/directory.cpp
++++ b/src/utils/libfat/directory.cpp
+@@ -139,7 +139,7 @@ static size_t _FAT_directory_mbstoucs2 (ucs2_t* dst, const char* src, size_t len
+ 	int bytes;
+ 	size_t count = 0;
+ 
+-	while (count < len-1 && src != '\0') {
++	while (count < len-1 && *src != '\0') {
+ 		bytes = mbrtowc (&tempChar, src, MB_CUR_MAX, &ps);
+ 		if (bytes > 0) {
+ 			*dst = (ucs2_t)tempChar;
diff --git a/gnu/packages/patches/elixir-path-length.patch b/gnu/packages/patches/elixir-path-length.patch
index aa8bf38829..ab99595cff 100644
--- a/gnu/packages/patches/elixir-path-length.patch
+++ b/gnu/packages/patches/elixir-path-length.patch
@@ -5,11 +5,11 @@ after the substitution is made.
 
 --- a/Makefile
 +++ b/Makefile
-@@ -213,6 +213,7 @@
- TEST_ERLS = $(addprefix $(TEST_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_ERL)/*.erl)))))
+@@ -265,6 +265,7 @@ format: compile
+	$(call FORMAT)
  
  test_formatted: compile
-+	bin/elixir bin/mix format lib/mix/lib/mix/scm/git.ex
- 	bin/elixir bin/mix format --check-formatted
++	$(call FORMAT,lib/mix/lib/mix/scm/git.ex)
+	$(call FORMAT,--check-formatted)
  
  test_erlang: compile $(TEST_ERLS)
diff --git a/gnu/packages/patches/mumps-shared-libseq.patch b/gnu/packages/patches/mumps-shared-libseq.patch
index feafcf123b..eccf528f7a 100644
--- a/gnu/packages/patches/mumps-shared-libseq.patch
+++ b/gnu/packages/patches/mumps-shared-libseq.patch
@@ -17,7 +17,7 @@ Index: mumps/libseq/Makefile
 +	$(AR) $@ mpi.o mpic.o elapse.o
  	$(RANLIB) $@
 +libmpiseq$(PLAT).so: mpi.o mpic.o elapse.o
-+	$(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.1.2.so -o libmpiseq$(PLAT)-5.1.2.so -Wl,-z,defs
++	$(FC) -shared $^ -Wl,-soname,libmpiseq$(PLAT)-5.2.1.so -o libmpiseq$(PLAT)-5.2.1.so -Wl,-z,defs
  .f.o:
 -	$(FC) $(OPTF)              -c $*.f $(OUTF)$*.o
 +	$(FC) $(OPTF)              -fPIC -c $*.f $(OUTF)$*.o
diff --git a/gnu/packages/patches/mumps-shared-mumps.patch b/gnu/packages/patches/mumps-shared-mumps.patch
index 9e2491f300..d94ccf6ce9 100644
--- a/gnu/packages/patches/mumps-shared-mumps.patch
+++ b/gnu/packages/patches/mumps-shared-mumps.patch
@@ -30,16 +30,16 @@ Index: mumps/src/Makefile
 -$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT):    $(OBJS_MOD) $(OBJS_OTHER)
 -	$(AR)$@ $?
 +$(libdir)/libmumps_common$(PLAT).so:      $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER)
-+	$(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.1.2.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.1.2.so -Wl,-z,defs
-+	ln -s libmumps_common$(PLAT)-5.1.2.so $@
++	$(FC) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.2.1.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.2.1.so -Wl,-z,defs
++	ln -s libmumps_common$(PLAT)-5.2.1.so $@
 +
 +$(libdir)/lib$(ARITH)mumps$(PLAT).a:    $(OBJS_MOD) $(OBJS_OTHER)
 +	$(AR) $@ $?
  	$(RANLIB) $@
  
 +$(libdir)/lib$(ARITH)mumps$(PLAT).so:    $(OBJS_MOD) $(OBJS_OTHER)
-+	$(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.1.2.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.1.2.so -Wl,-z,defs
-+	ln -s lib$(ARITH)mumps$(PLAT)-5.1.2.so $@
++	$(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.2.1.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.2.1.so -Wl,-z,defs
++	ln -s lib$(ARITH)mumps$(PLAT)-5.2.1.so $@
 +
  # Dependencies between modules:
  $(ARITH)mumps_load.o:		$(ARITH)mumps_comm_buffer.o \
diff --git a/gnu/packages/patches/mumps-shared-pord.patch b/gnu/packages/patches/mumps-shared-pord.patch
index 48062d4f89..d3915b0ad9 100644
--- a/gnu/packages/patches/mumps-shared-pord.patch
+++ b/gnu/packages/patches/mumps-shared-pord.patch
@@ -24,8 +24,8 @@ Index: mumps/PORD/lib/Makefile
  	$(RANLIB) $@
  
 +libpord$(PLAT).so: $(OBJS)
-+	$(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.1.2.so -o libpord$(PLAT)-5.1.2.so -Wl,-z,defs
-+	ln -s libpord$(PLAT)-5.1.2.so $@
++	$(CC) -shared $(OBJS) -Wl,-soname,libpord$(PLAT)-5.2.1.so -o libpord$(PLAT)-5.2.1.so -Wl,-z,defs
++	ln -s libpord$(PLAT)-5.2.1.so $@
 +
  clean:
  	rm -f *.o
diff --git a/gnu/packages/patches/qtbase-QTBUG-81715.patch b/gnu/packages/patches/qtbase-QTBUG-81715.patch
new file mode 100644
index 0000000000..70b83b97d2
--- /dev/null
+++ b/gnu/packages/patches/qtbase-QTBUG-81715.patch
@@ -0,0 +1,40 @@
+From 8a3fde00bf53d99e9e4853e8ab97b0e1bcf74915 Mon Sep 17 00:00:00 2001
+From: Joerg Bornemann <joerg.bornemann@qt.io>
+Date: Wed, 29 Jan 2020 11:06:35 +0100
+Subject: [PATCH] Fix qt5_make_output_file macro for paths containing dots
+
+Commit 89bd5a7e broke CMake projects that use dots in their build
+paths, because the used regular expression matches the directory part
+of the path as well.
+
+The regex wants to achieve the same as get_filename_component(...
+NAME_WLE) which is available since CMake 3.14. Re-implement the
+NAME_WLE functionality for older CMake versions by using multiple
+get_filename_component calls.
+
+Fixes: QTBUG-81715
+Task-number: QTBUG-80295
+Change-Id: I2ef053300948f6e1b2c0c5eafac35105f193d4e6
+Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
+---
+
+diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
+index 7735e51..b3da640 100644
+--- a/src/corelib/Qt5CoreMacros.cmake
++++ b/src/corelib/Qt5CoreMacros.cmake
+@@ -59,7 +59,14 @@
+     set(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}")
+     string(REPLACE ".." "__" _outfile ${_outfile})
+     get_filename_component(outpath ${_outfile} PATH)
+-    string(REGEX REPLACE "\\.[^.]*$" "" _outfile ${_outfile})
++    if(CMAKE_VERSION VERSION_LESS "3.14")
++        get_filename_component(_outfile_ext ${_outfile} EXT)
++        get_filename_component(_outfile_ext ${_outfile_ext} NAME_WE)
++        get_filename_component(_outfile ${_outfile} NAME_WE)
++        string(APPEND _outfile ${_outfile_ext})
++    else()
++        get_filename_component(_outfile ${_outfile} NAME_WLE)
++    endif()
+     file(MAKE_DIRECTORY ${outpath})
+     set(${outfile} ${outpath}/${prefix}${_outfile}.${ext})
+ endmacro()
diff --git a/gnu/packages/patches/racket-store-checksum-override.patch b/gnu/packages/patches/racket-store-checksum-override.patch
index 236c843de1..6c4ebcf022 100644
--- a/gnu/packages/patches/racket-store-checksum-override.patch
+++ b/gnu/packages/patches/racket-store-checksum-override.patch
@@ -11,26 +11,15 @@ See <https://debbugs.gnu.org/30680> for details.
 ---
 --- a/collects/compiler/private/cm-minimal.rkt
 +++ b/collects/compiler/private/cm-minimal.rkt
-@@ -7,6 +7,7 @@
+@@ -6,6 +6,7 @@
           racket/list
           racket/path
           racket/promise
 +         racket/string
           file/sha1
-          setup/collects
           setup/cross-system
-@@ -940,6 +941,10 @@
-       #f
-       (list src-hash recorded-hash)))
- 
-+(define (store-reference? path)
-+  (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")])
-+    (string-prefix? (path->string path) store-prefix)))
-+
- (define (rkt->ss p)
-   (if (path-has-extension? p #".rkt")
-       (path-replace-extension p #".ss")
-@@ -1015,6 +1020,7 @@
+          compiler/compilation-path
+@@ -268,7 +269,8 @@
                 (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
                 (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
                                   #:trying-sha1? sha1-only?)]
@@ -39,4 +28,15 @@ See <https://debbugs.gnu.org/30680> for details.
 +                    (different-source-sha1-and-dep-recorded path deps))
                 => (lambda (difference)
                      (trace-printf "different src hash ~a for ~a..." difference path)
-                     (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
\ No newline at end of file
+                     (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
+@@ -1012,5 +1014,9 @@
+       #f
+       (list src-hash recorded-hash)))
+
++(define (store-reference? path)
++  (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")])
++    (string-prefix? (path->string path) store-prefix)))
++
+ ;; Make sure `recompile-from` is machine-independent so that
+ ;; recompilation makes sense.
+ ;; The compilation lock must is held for the source of `recompile-from`.
\ No newline at end of file
diff --git a/gnu/packages/patches/upx-fix-CVE-2017-15056.patch b/gnu/packages/patches/upx-fix-CVE-2017-15056.patch
deleted file mode 100644
index 525980e73e..0000000000
--- a/gnu/packages/patches/upx-fix-CVE-2017-15056.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 3e0c2966dffb5dadb512a476ef4be3d0cc51c2be Mon Sep 17 00:00:00 2001
-From: Pierre Neidhardt <ambrevar@gmail.com>
-Date: Sat, 16 Jun 2018 16:35:00 +0200
-Subject: [PATCH] Protect against bad crafted input
-
-Also check for wrap-around when checking oversize involving e_shoff and e_shnum.
-
-raised by https://github.com/upx/upx/pull/190
-	modified:   p_lx_elf.cpp
----
- src/p_lx_elf.cpp | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
-
-diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp
-index 822a7652..41e805ee 100644
---- a/src/p_lx_elf.cpp
-+++ b/src/p_lx_elf.cpp
-@@ -235,8 +235,17 @@ PackLinuxElf32::PackLinuxElf32help1(InputFile *f)
-         sz_phdrs = 0;
-         return;
-     }
-+    if (0==e_phnum) throwCantUnpack("0==e_phnum");
-     e_phoff = get_te32(&ehdri.e_phoff);
-+    unsigned const last_Phdr = e_phoff + e_phnum * sizeof(Elf32_Phdr);
-+    if (last_Phdr < e_phoff || (unsigned long)file_size < last_Phdr) {
-+        throwCantUnpack("bad e_phoff");
-+    }
-     e_shoff = get_te32(&ehdri.e_shoff);
-+    unsigned const last_Shdr = e_shoff + e_shnum * sizeof(Elf32_Shdr);
-+    if (last_Shdr < e_shoff || (unsigned long)file_size < last_Shdr) {
-+        throwCantUnpack("bad e_shoff");
-+    }
-     sz_phdrs = e_phnum * e_phentsize;
- 
-     if (f && Elf32_Ehdr::ET_DYN!=e_type) {
-@@ -599,8 +608,17 @@ PackLinuxElf64::PackLinuxElf64help1(InputFile *f)
-         sz_phdrs = 0;
-         return;
-     }
-+    if (0==e_phnum) throwCantUnpack("0==e_phnum");
-     e_phoff = get_te64(&ehdri.e_phoff);
-+    upx_uint64_t const last_Phdr = e_phoff + e_phnum * sizeof(Elf64_Phdr);
-+    if (last_Phdr < e_phoff || (unsigned long)file_size < last_Phdr) {
-+        throwCantUnpack("bad e_phoff");
-+    }
-     e_shoff = get_te64(&ehdri.e_shoff);
-+    upx_uint64_t const last_Shdr = e_shoff + e_shnum * sizeof(Elf64_Shdr);
-+    if (last_Shdr < e_shoff || (unsigned long)file_size < last_Shdr) {
-+        throwCantUnpack("bad e_shoff");
-+    }
-     sz_phdrs = e_phnum * e_phentsize;
- 
-     if (f && Elf64_Ehdr::ET_DYN!=e_type) {
-@@ -3763,6 +3781,9 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
- 
- void PackLinuxElf64::unpack(OutputFile *fo)
- {
-+    if (e_phoff != sizeof(Elf64_Ehdr)) {// Phdrs not contiguous with Ehdr
-+        throwCantUnpack("bad e_phoff");
-+    }
-     unsigned const c_phnum = get_te16(&ehdri.e_phnum);
-     upx_uint64_t old_data_off = 0;
-     upx_uint64_t old_data_len = 0;
-@@ -3828,6 +3849,9 @@ void PackLinuxElf64::unpack(OutputFile *fo)
-     unsigned total_out = 0;
-     unsigned c_adler = upx_adler32(NULL, 0);
-     unsigned u_adler = upx_adler32(NULL, 0);
-+    if ((MAX_ELF_HDR - sizeof(Elf64_Ehdr))/sizeof(Elf64_Phdr) < u_phnum) {
-+        throwCantUnpack("bad compressed e_phnum");
-+    }
- 
-     // Packed ET_EXE has no PT_DYNAMIC.
-     // Packed ET_DYN has original PT_DYNAMIC for info needed by rtld.
-@@ -4383,6 +4407,9 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const
- 
- void PackLinuxElf32::unpack(OutputFile *fo)
- {
-+    if (e_phoff != sizeof(Elf32_Ehdr)) {// Phdrs not contiguous with Ehdr
-+        throwCantUnpack("bad e_phoff");
-+    }
-     unsigned const c_phnum = get_te16(&ehdri.e_phnum);
-     unsigned old_data_off = 0;
-     unsigned old_data_len = 0;
-@@ -4449,6 +4476,9 @@ void PackLinuxElf32::unpack(OutputFile *fo)
-     unsigned total_out = 0;
-     unsigned c_adler = upx_adler32(NULL, 0);
-     unsigned u_adler = upx_adler32(NULL, 0);
-+    if ((MAX_ELF_HDR - sizeof(Elf32_Ehdr))/sizeof(Elf32_Phdr) < u_phnum) {
-+        throwCantUnpack("bad compressed e_phnum");
-+    }
- 
-     // Packed ET_EXE has no PT_DYNAMIC.
-     // Packed ET_DYN has original PT_DYNAMIC for info needed by rtld.
--- 
-2.17.0
-
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 5f16f2027b..c065e97da5 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -272,13 +272,14 @@ reading and editing of existing PDF files.")
 (define-public xpdf
   (package
    (name "xpdf")
-   (version "3.04")
-   (source (origin
-            (method url-fetch)
-            (uri (string-append "ftp://ftp.foolabs.com/pub/xpdf/xpdf-"
-                                version ".tar.gz"))
-            (sha256 (base32
-                     "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i"))))
+   (version "4.02")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "https://xpdfreader-dl.s3.amazonaws.com/xpdf-"
+                          version "4.02.tar.gz"))
+      (sha256
+       (base32 "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i"))))
    (build-system gnu-build-system)
    (inputs `(("freetype" ,freetype)
              ("gs-fonts" ,gs-fonts)
@@ -292,8 +293,8 @@ reading and editing of existing PDF files.")
              ("libpng" ,libpng)
              ("zlib" ,zlib)))
    (arguments
-    `(#:tests? #f ; there is no check target
-      #:parallel-build? #f ; build fails randomly on 8-way machines
+    `(#:tests? #f                     ; there is no check target
+      #:parallel-build? #f            ; build fails randomly on 8-way machines
       #:configure-flags
         (list (string-append "--with-freetype2-includes="
                              (assoc-ref %build-inputs "freetype")
@@ -315,8 +316,8 @@ reading and editing of existing PDF files.")
    (synopsis "Viewer for PDF files based on the Motif toolkit")
    (description
     "Xpdf is a viewer for Portable Document Format (PDF) files.")
-   (license license:gpl3) ; or gpl2, but not gpl2+
-   (home-page "http://www.foolabs.com/xpdf/")))
+   (license license:gpl3)             ; or gpl2, but not gpl2+
+   (home-page "https://www.xpdfreader.com/")))
 
 (define-public zathura-cb
   (package
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 0867433245..4688629172 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -211,7 +211,7 @@ MTP, and much more.")
 (define-public perl-image-exiftool
   (package
     (name "perl-image-exiftool")
-    (version "11.30")
+    (version "11.85")
     (source
      (origin
        (method url-fetch)
@@ -222,7 +222,8 @@ MTP, and much more.")
              (string-append "https://www.sno.phy.queensu.ca/~phil/exiftool/"
                             "Image-ExifTool-" version ".tar.gz")))
        (sha256
-        (base32 "0vkjb2c1a3jdlq8rx1jywx4p3f1bmgjn7rzfwx6dxgij2lx76lrs"))))
+        (base32
+         "15zqm0ly2b3paqg0ym44ib2mvh6k18a9q5rvdirwipqa127al2lb"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases
@@ -498,14 +499,14 @@ a complete panorama and stitch any series of overlapping pictures.")
 (define-public rawtherapee
   (package
     (name "rawtherapee")
-    (version "5.6")
+    (version "5.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://rawtherapee.com/shared/source/"
                                   "rawtherapee-" version ".tar.xz"))
               (sha256
                (base32
-                "0x0dcfp6f3j08gr11wq5ah4prp790xy4iadbgsm9kgc0jlalpspr"))))
+                "0lq8qi7g0a28h3rab7bk5bbbd4gvfma42bvlz1dfn8p9mah2h19n"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; no test suite
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index a82257c582..7bb88a7270 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -59,7 +59,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.1")
+    (version "7.4.3")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -67,7 +67,7 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "0qn7zwf2jzj3h7p4b1l79lf9gv236mycwkhgw15hj2fmpmkbh6sn"))
+                "0alqqs5hn4jmz1adrbysbw92n55nkw6f9vfivqj829kwhxnqa7yg"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
@@ -237,6 +237,9 @@
                          ;; complete.  It's a warning in both cases and test
                          ;; result is the same.
                          "ext/gd/tests/bug77973.phpt"
+                         ;; New test failures added with 7.4.3
+                         "ext/gd/tests/bug79067.phpt"
+                         "ext/gd/tests/bug79068.phpt"
 
                          ;; XXX: These iconv tests have the expected outcome,
                          ;; but with different error messages.
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index fc98478d4c..e6560696f5 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
+;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,7 +41,8 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages compression))
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages swig))
 
 (define-public a2ps
   (package
@@ -270,12 +272,29 @@ seen in a terminal.")
                 (string-append assignment "lua-" ,(version-major+minor
                                                    (package-version lua))
                                "\n")))
-             #t)))))
+             (substitute* "extras/swig/makefile"
+               (("lua") (string-append "lua-" ,(version-major+minor
+                                                (package-version lua)))))
+             #t))
+         (add-after 'install 'install-perl-bindings
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((perldir (string-append (assoc-ref outputs "out")
+                                            "/lib/perl5/site_perl/"
+                                            ,(package-version perl)))
+                    (autodir (string-append perldir "/auto/highlight")))
+               (with-directory-excursion "extras/swig"
+                 (invoke "make" "perl")
+                 (invoke "perl" "-I" "." "testmod.pl")
+                 (install-file "highlight.pm" perldir)
+                 (install-file "highlight.so" autodir))
+               #t))))))
     (inputs
      `(("lua" ,lua)
-       ("boost" ,boost)))
+       ("boost" ,boost)
+       ("perl" ,perl)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("swig" ,swig)))
     (home-page "http://www.andre-simon.de/doku/highlight/en/highlight.php")
     (synopsis "Convert code to documents with syntax highlighting")
     (description "Highlight converts source code to HTML, XHTML, RTF, LaTeX,
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index f35540686c..9eee75cbfb 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -291,7 +291,7 @@ making them easy to handle and incorporate into other protocols.")
          (add-before 'build 'set-build-env
            ;; pycrypto runs an autoconf configure script behind the scenes
            (lambda _ (setenv "CONFIG_SHELL" (which "bash")) #t)))))
-    (home-page "http://www.pycrypto.org/")
+    (home-page "https://www.dlitz.net/software/pycrypto/")
     (synopsis "Cryptographic modules for Python")
     (description
      "Pycrypto is a collection of both secure hash functions (such as SHA256
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index b4241362ba..8dcc6e77e6 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -189,7 +189,7 @@ routines such as routines for numerical integration and optimization.")
        ("python-six" ,python-six)))
     (native-inputs
      `(("python-cython" ,python-cython)))
-    (home-page "http://scikit-image.org/")
+    (home-page "https://scikit-image.org/")
     (synopsis "Image processing in Python")
     (description
      "Scikit-image is a collection of algorithms for image processing.")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 251b74ee75..6ba475b2d8 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
 ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
@@ -69,6 +69,7 @@
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 sirgazil <sirgazil@zoho.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1392,7 +1393,7 @@ bug tracker.")
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
-    (home-page "http://pypi.python.org/pypi/enum/")
+    (home-page "https://pypi.python.org/pypi/enum/")
     (synopsis "Robust enumerated type support in Python")
     (description
      "This provides a module for robust enumerations in Python.  It has
@@ -1558,7 +1559,7 @@ and is not compatible with JSON.")
              (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
              (chdir "build/scons")
              #t)))))
-    (home-page "http://scons.org/")
+    (home-page "https://scons.org/")
     (synopsis "Software construction tool written in Python")
     (description
      "SCons is a software construction tool.  Think of SCons as an improved,
@@ -3220,7 +3221,7 @@ feature-set for programming Python effectively.")
         (base32
          "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
     (build-system python-build-system)
-    (home-page "http://pythonhosted.org/blinker/")
+    (home-page "https://pythonhosted.org/blinker/")
     (synopsis "Fast, simple object-to-object and broadcast signaling")
     (description
      "Blinker provides a fast dispatching system that allows any number of
@@ -6219,7 +6220,7 @@ multiprecision arithmetic.")
              #t)))))
     (propagated-inputs
      `(("python-mpmath" ,python-mpmath)))
-    (home-page "http://www.sympy.org/")
+    (home-page "https://www.sympy.org/")
     (synopsis "Python library for symbolic mathematics")
     (description
      "SymPy is a Python library for symbolic mathematics.  It aims to become a
@@ -6304,7 +6305,7 @@ It is written entirely in Python.")
     (native-inputs
      `(("python-six" ,python-six))) ; required for conversion, not at run-time
     (home-page
-     "http://docs.python.org/3/library/functools.html#functools.singledispatch")
+     "https://docs.python.org/3/library/functools.html#functools.singledispatch")
     (synopsis "Backport of singledispatch feature from Python 3.4")
     (description
      "This library brings functools.singledispatch from Python 3.4 to Python
@@ -6733,14 +6734,14 @@ Python.")
 (define-public python-markdown
   (package
     (name "python-markdown")
-    (version "3.2")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Markdown" version))
        (sha256
         (base32
-         "1gwqrhrp0n9xllgmjc8n1p260968kr0dd2jncjkj4r617q61imss"))))
+         "00k91gwhxnm8jdnm2v5xjz9irj6dbi7afywz2hpakqdbxs1ydzlh"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-nose" ,python-nose)
@@ -7187,7 +7188,7 @@ Unicode-aware.  It is not intended as an end-user tool.")
         (base32
          "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
     (build-system python-build-system)
-    (home-page "http://code.google.com/p/prettytable/")
+    (home-page "https://code.google.com/archive/p/prettytable/")
     (synopsis "Display tabular data in an ASCII table format")
     (description
       "A library designed to represent tabular data in visually appealing ASCII
@@ -7539,13 +7540,13 @@ a hash value.")
 (define-public python-libarchive-c
   (package
     (name "python-libarchive-c")
-    (version "2.8")
+    (version "2.9")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "libarchive-c" version))
               (sha256
                (base32
-                "0qg0v1s9c1xdk9philhnv8k6c6nicvnvfwlc0j9srg90jmdlvm06"))))
+                "0q7g6a97110bk0j5x81555kajyxh4sybaabab6v5sgr0xi6386cr"))))
     (build-system python-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -8340,21 +8341,27 @@ the standard library.")
 (define-public python-texttable
   (package
     (name "python-texttable")
-    (version "0.9.1")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "texttable" version))
        (sha256
         (base32
-         "0yawv64c0zbawwv6zz84whb32fnb2n9jylwjcfsrcdgh7xvl340i"))))
+         "1x5l77akfc20x52jma9573qp8l8r07q103pm4l0pbizvh4vp1wzg"))))
     (build-system python-build-system)
-    (arguments '(#:tests? #f)) ; no tests
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _ (invoke "pytest" "tests.py"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (home-page "https://github.com/foutaise/texttable/")
     (synopsis "Python module for creating simple ASCII tables")
     (description "Texttable is a Python module for creating simple ASCII
 tables.")
-    (license license:lgpl2.1+)))
+    (license license:expat)))
 
 (define-public python2-texttable
   (package-with-python2 python-texttable))
@@ -9432,7 +9439,7 @@ way.")
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; no test suite
-    (home-page "http://software.clapper.org/munkres/")
+    (home-page "https://software.clapper.org/munkres/")
     (synopsis "Implementation of the Munkres algorithm")
     (description "The Munkres module provides an implementation of the Munkres
 algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
@@ -17543,3 +17550,31 @@ extensive support of PNG features.  It can also read and write Netpbm PAM
 files, with a focus on its use as an intermediate format for implementing
 custom PNG processing.")
     (license license:expat)))
+
+(define-public python-fuzzywuzzy
+  (package
+    (name "python-fuzzywuzzy")
+    (version "0.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fuzzywuzzy" version))
+       (sha256
+        (base32
+         "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-hypothesis" ,python-hypothesis)
+       ("python-pycodestyle" ,python-pycodestyle)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-levenshtein" ,python-levenshtein)))
+    (home-page "https://github.com/seatgeek/fuzzywuzzy")
+    (synopsis "Fuzzy string matching in Python")
+    (description "Approximate string matching using
+@emph{Levenshtein Distance} to calculate the differences between
+sequences.")
+    (license license:gpl2)))
+
+(define-public python2-fuzzywuzzy
+  (package-with-python2 python-fuzzywuzzy))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 466c6ba358..7aa9d0f0f9 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -598,6 +598,19 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 developers using C++ or QML, a CSS & JavaScript like language.")
     (license (list license:lgpl2.1 license:lgpl3))))
 
+;; This variant fixes a problem with the CMake macros shipped by qtbase.  See
+;; discussion at <https://lists.gnu.org/archive/html/guix-devel/2020-02/msg00308.html>.
+(define-public qtbase-patched
+  (let ((src (package-source qtbase)))
+    (hidden-package
+     (package
+       (inherit qtbase)
+       (source
+        (origin
+          (inherit src)
+          (patches
+           (append (search-patches "qtbase-QTBUG-81715.patch")
+                   (origin-patches src)))))))))
 
 ;; qt used to refer to the monolithic Qt 5.x package
 (define-deprecated qt qtbase)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 98868cdda3..56885fcde3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -8708,7 +8708,7 @@ minimal effort.")
 and stability,
 @item Rack, a minimal interface between webservers and Ruby frameworks.
 @end itemize\n")
-    (home-page "http://code.macournoyer.com/thin/")
+    (home-page "https://github.com/macournoyer/thin")
     (license license:ruby)))
 
 (define-public ruby-skinny
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index ac50f9591a..72c982f23c 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -270,7 +270,7 @@ gitignore rules.")
 (define-public rust-cbindgen
   (package
     (name "rust-cbindgen")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
       (origin
         (method url-fetch)
@@ -278,7 +278,7 @@ gitignore rules.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1kywaz62cglg8fv0p7mp1m946gwmrf62s8ffndd5zpf1mz21j472"))))
+          "0w70bnwwqyf9fr6z3rcs7m7ad791fmfmhxy828va0dkfwvamp59c"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index 2cc50f7b6a..47bf9a9c88 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -331,7 +331,7 @@ coefficients of which are modular integers.")
 (define-public brial
   (package
     (name "brial")
-    (version "1.2.6")
+    (version "1.2.7")
     (source
     (origin
       (method git-fetch)
@@ -340,7 +340,7 @@ coefficients of which are modular integers.")
              (commit version)))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "1mc1zjr3mxcx6bg0js5k9jx65japg7644b0aj1al75m4nwh2ygab"))))
+       (base32 "1s0wmbb42sq6a5kxgzsz5srphclmfa4cvxdx2h9kzp0da2zcp3cm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index c891a77a18..52c060744b 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
 ;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,7 +32,7 @@
   #:use-module (gnu packages)
   #:use-module ((guix licenses)
                 #:select (gpl2+ lgpl2.0+ lgpl2.1+ lgpl3+ asl2.0 bsd-3
-                          cc-by-sa4.0 non-copyleft))
+                          cc-by-sa4.0 non-copyleft expat))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -394,7 +395,7 @@ implementation techniques and as an expository tool.")
 (define-public racket
   (package
     (name "racket")
-    (version "7.3")
+    (version "7.6")
     (source (origin
               (method url-fetch)
               (uri (list (string-append "http://mirror.racket-lang.org/installers/"
@@ -404,29 +405,22 @@ implementation techniques and as an expository tool.")
                           version "/racket-" version "-src.tgz")))
               (sha256
                (base32
-                "0h6072njhb87rkz4arijvahxgjzn8r14s4wns0ijvxm89bg136yl"))
+                "0yagy7qrnz96gwafnj3whh2vs54788k1ci3vkm100h68gsw638b8"))
               (patches (search-patches
                         "racket-store-checksum-override.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'pre-configure
+         (add-before 'configure 'pre-configure-minimal
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Patch dynamically loaded libraries with their absolute paths.
-             (let* ((library-path   (search-path-as-string->list
-                                     (getenv "LIBRARY_PATH")))
-                    (find-so        (lambda (soname)
-                                      (search-path
-                                       library-path
-                                       (format #f "~a.so" soname))))
-                    (patch-ffi-libs (lambda (file libs)
-                                      (for-each
-                                       (lambda (lib)
-                                         (substitute* file
-                                           (((format #f "\"~a\"" lib))
-                                            (format #f "\"~a\"" (find-so lib)))))
-                                       libs))))
+             (let* ((library-path (search-path-as-string->list
+                                   (getenv "LIBRARY_PATH")))
+                    (find-so (lambda (soname)
+                               (search-path
+                                library-path
+                                (format #f "~a.so" soname)))))
                (substitute* "collects/db/private/sqlite3/ffi.rkt"
                  (("ffi-lib sqlite-so")
                   (format #f "ffi-lib \"~a\"" (find-so "libsqlite3"))))
@@ -435,7 +429,25 @@ implementation techniques and as an expository tool.")
                   (format #f "ffi-lib \"~a\"" (find-so "libssl"))))
                (substitute* "collects/openssl/libcrypto.rkt"
                  (("ffi-lib libcrypto-so")
-                  (format #f "ffi-lib \"~a\"" (find-so "libcrypto"))))
+                  (format #f "ffi-lib \"~a\"" (find-so "libcrypto")))))
+             (chdir "src")
+             #t))
+         (add-before 'pre-configure-minimal 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Patch dynamically loaded libraries with their absolute paths.
+             (let* ((library-path (search-path-as-string->list
+                                   (getenv "LIBRARY_PATH")))
+                    (find-so (lambda (soname)
+                               (search-path
+                                library-path
+                                (format #f "~a.so" soname))))
+                    (patch-ffi-libs (lambda (file libs)
+                                      (for-each
+                                       (lambda (lib)
+                                         (substitute* file
+                                           (((format #f "\"~a\"" lib))
+                                            (format #f "\"~a\"" (find-so lib)))))
+                                       libs))))
                (substitute* "share/pkgs/math-lib/math/private/bigfloat/gmp.rkt"
                  (("ffi-lib libgmp-so")
                   (format #f "ffi-lib \"~a\"" (find-so "libgmp"))))
@@ -473,15 +485,14 @@ implementation techniques and as an expository tool.")
                    ("libGL"))
                   ("share/pkgs/sgl/gl.rkt"
                    ("libGL" "libGLU")))))
-             (chdir "src")
              #t))
          (add-after 'unpack 'patch-/bin/sh
            (lambda _
              (substitute* "collects/racket/system.rkt"
                (("/bin/sh") (which "sh")))
              #t)))
-       #:tests? #f                      ; XXX: how to run them?
-       ))
+       ;; XXX: how to run them?
+       #:tests? #f))
     (inputs
      `(("libffi" ,libffi)
        ;; Hardcode dynamically loaded libraries for better functionality.
@@ -502,14 +513,53 @@ implementation techniques and as an expository tool.")
        ("sqlite" ,sqlite)
        ("unixodbc" ,unixodbc)
        ("libedit" ,libedit)))
-    (home-page "http://racket-lang.org")
+    (home-page "https://racket-lang.org")
     (synopsis "Implementation of Scheme and related languages")
     (description
      "Racket is an implementation of the Scheme programming language (R5RS and
 R6RS) and related languages, such as Typed Racket.  It features a compiler and
 a virtual machine with just-in-time native compilation, as well as a large set
 of libraries.")
-    (license lgpl2.0+)))
+    ;; https://download.racket-lang.org/license.html
+    (license (list lgpl3+ asl2.0 expat))))
+
+(define-public racket-minimal
+  (package
+    (inherit racket)
+    (name "racket-minimal")
+    (version (package-version racket))
+    (source (origin
+              (method url-fetch)
+              (uri (list (string-append "http://mirror.racket-lang.org/installers/"
+                                        version "/racket-minimal-" version "-src.tgz")
+                         (string-append
+                          "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
+                          version "/racket-minimal-" version "-src.tgz")))
+              (sha256
+               (base32
+                "0id094q9024hj2n3907l7dblp3iix1v5289xzskmh5c26xfygp9y"))
+              (patches (search-patches
+                        "racket-store-checksum-override.patch"))))
+    (synopsis "Racket without bundled packages such as Dr. Racket")
+    (arguments
+     (substitute-keyword-arguments (package-arguments racket)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; Delete fix that applies to files not included in the minimal package.
+           (delete 'pre-configure)))))
+    (inputs
+     `(("libffi" ,libffi)
+       ("openssl" ,openssl)
+       ("sqlite" ,sqlite)))
+    (description
+     "Racket is an implementation of the Scheme programming language (R5RS and
+R6RS) and related languages, such as Typed Racket.  It features a compiler and
+a virtual machine with just-in-time native compilation, as well as a large set
+of libraries.
+
+In this minimal package, the essential package racket-libs is included, as
+well as libraries that live in collections.  In particular, @command{raco} and
+the @code{pkg} library are still bundled.")))
 
 (define-public gambit-c
   (package
@@ -694,7 +744,7 @@ regular-expression notation.")
                                            (assoc-ref outputs "out"))))))))
     (native-inputs `(("unzip" ,unzip)
                      ("texinfo" ,texinfo)))
-    (home-page "http://people.csail.mit.edu/jaffer/SLIB.html")
+    (home-page "https://people.csail.mit.edu/jaffer/SLIB.html")
     (synopsis "Compatibility and utility library for Scheme")
     (description "SLIB is a portable Scheme library providing compatibility and
 utility functions for all standard Scheme implementations.")
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 21ad6f8928..5fdf2cdbd8 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
@@ -31,6 +31,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)            ;for 'which'
   #:use-module (gnu packages compression)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
@@ -101,14 +102,18 @@ based on human speech recordings.")
 (define-public espeak-ng
   (package
     (name "espeak-ng")
-    (version "1.49.2")
+    (version "1.50")
     (home-page "https://github.com/espeak-ng/espeak-ng")
+    ;; Note: eSpeak NG publishes release tarballs, but the 1.50 tarball is
+    ;; broken: <https://github.com/espeak-ng/espeak-ng/issues/683>.
+    ;; Download the raw repository to work around it; remove 'native-inputs'
+    ;; below when switching back to the release tarball.
     (source (origin
-              (method url-fetch)
-              (uri (string-append home-page "/releases/download/" version
-                                  "/espeak-ng-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
               (sha256
-               (base32 "1d10x9rbvqi2zwcz65fxh04k0x0scnk7732l37laz6xra1ldhzng"))))
+               (base32 "0jkqhf2h94vbqq7mg7mmm23bq372fa7mdk941my18c3vkldcir1b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")
@@ -116,6 +121,11 @@ based on human speech recordings.")
        #:parallel-build? #f
        ;; XXX: Some tests require an audio device.
        #:tests? #f))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("which" ,which)))
     (inputs
      `(("libcap" ,libcap)
        ("pcaudiolib" ,pcaudiolib)))
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index d203bb1455..fdb3450e01 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Manuel Graf <graf@init.at>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -89,7 +90,8 @@
        ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite.
        #:tests? #f))
     (inputs `(("zlib" ,zlib)
-              ("libgcrypt" ,libgcrypt)))
+              ("libgcrypt" ,libgcrypt)
+              ("mit-krb5" ,mit-krb5)))
     (synopsis "SSH client library")
     (description
      "libssh is a C library implementing the SSHv2 and SSHv1 protocol for client
@@ -129,14 +131,14 @@ a server that supports the SSH-2 protocol.")
 (define-public openssh
   (package
    (name "openssh")
-   (version "8.0p1")
+   (version "8.2p1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://openbsd/OpenSSH/portable/"
-                                 name "-" version ".tar.gz"))
+                                 "openssh-" version ".tar.gz"))
              (sha256
               (base32
-               "0s7xh4s0qcipnjh9ls5blxcpvhyd116z9dxn3q1yi64lwrwki55x"))))
+               "0wg6ckzvvklbzznijxkk28fb8dnwyjd0w30ra0afwv6gwr8m34j3"))))
    (build-system gnu-build-system)
    (native-inputs `(("groff" ,groff)
                     ("pkg-config" ,pkg-config)))
@@ -145,7 +147,7 @@ a server that supports the SSH-2 protocol.")
              ("pam" ,linux-pam)
              ("mit-krb5" ,mit-krb5)
              ("zlib" ,zlib)
-             ("xauth" ,xauth)))                   ;for 'ssh -X' and 'ssh -Y'
+             ("xauth" ,xauth)))         ; for 'ssh -X' and 'ssh -Y'
    (arguments
     `(#:test-target "tests"
       ;; Otherwise, the test scripts try to use a nonexistent directory and
@@ -156,12 +158,12 @@ a server that supports the SSH-2 protocol.")
                            ;; Default value of 'PATH' used by sshd.
                           "--with-default-path=/run/current-system/profile/bin"
 
-                          ;; configure needs to find krb5-config
+                          ;; configure needs to find krb5-config.
                           ,(string-append "--with-kerberos5="
                                           (assoc-ref %build-inputs "mit-krb5")
                                           "/bin")
 
-                          ;; libedit needed for sftp completion
+                          ;; libedit is needed for sftp completion.
                           "--with-libedit"
 
                           ;; Enable PAM support in sshd.
@@ -178,14 +180,18 @@ a server that supports the SSH-2 protocol.")
              #t)))
         (add-before 'check 'patch-tests
          (lambda _
-           ;; remove 't-exec' regress target which requires user 'sshd'
-           (substitute* "regress/Makefile"
-             (("^(REGRESS_TARGETS=.*) t-exec(.*)" all pre post)
+           (substitute* "regress/test-exec.sh"
+             (("/bin/sh") (which "sh")))
+
+           ;; Remove 't-exec' regress target which requires user 'sshd'.
+           (substitute* (list "Makefile"
+                              "regress/Makefile")
+             (("^(tests:.*) t-exec(.*)" all pre post)
               (string-append pre post)))
            #t))
         (replace 'install
          (lambda* (#:key outputs (make-flags '()) #:allow-other-keys)
-           ;; install without host keys and system configuration files
+           ;; Install without host keys and system configuration files.
            (apply invoke "make" "install-nosysconf" make-flags)
            (install-file "contrib/ssh-copy-id"
                          (string-append (assoc-ref outputs "out")
@@ -223,7 +229,7 @@ Additionally, various channel-specific options can be negotiated.")
 (define-public guile-ssh
   (package
     (name "guile-ssh")
-    (version "0.11.3")
+    (version "0.12.0")
     (home-page "https://github.com/artyom-poptsov/guile-ssh")
     (source (origin
               (method git-fetch)
@@ -233,31 +239,12 @@ Additionally, various channel-specific options can be negotiated.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "03bv3hwp2s8f0bqgfjaan9jx4dyab0abv27n2zn2g0izlidv0vl6"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; libssh >= 0.8.0 no longer provides libssh_threads: see
-                  ;; <https://github.com/artyom-poptsov/guile-ssh/issues/9>.
-                  (substitute* "libguile-ssh/Makefile.am"
-                    (("-lssh_threads") ""))
-
-                  ;; This test would wrongfully pick DSS keys when running on
-                  ;; libssh >= 0.8.0, which fails:
-                  ;; <https://github.com/artyom-poptsov/guile-ssh/issues/10>.
-                  (substitute* "tests/server.scm"
-                    (("= %libssh-minor-version 7")
-                     ">= %libssh-minor-version 7"))
-
-                  ;; Allow builds with Guile 3.0.
-                  (substitute* "configure.ac"
-                    (("^GUILE_PKG.*$")
-                     "GUILE_PKG([3.0 2.2 2.0])\n"))
-                  #t))))
+                "054hd9rzfhb48gc1hw3rphhp0cnnd4bs5qmidy5ygsyvy9ravlad"))
+              (modules '((guix build utils)))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
     (arguments
-     '(;; It makes no sense to build libguile-ssh.a.
+     `(;; It makes no sense to build libguile-ssh.a.
        #:configure-flags '("--disable-static")
 
        #:phases (modify-phases %standard-phases
@@ -276,6 +263,15 @@ Additionally, various channel-specific options can be negotiated.")
                           (("\"libguile-ssh\"")
                            (string-append "\"" lib "/libguile-ssh\"")))
                         #t)))
+                  ,@(if (%current-target-system)
+                        '()
+                        '((add-before 'check 'fix-guile-path
+                             (lambda* (#:key inputs #:allow-other-keys)
+                               (let ((guile (assoc-ref inputs "guile")))
+                                 (substitute* "tests/common.scm"
+                                   (("/usr/bin/guile")
+                                    (string-append guile "/bin/guile")))
+                                 #t)))))
                   (add-after 'install 'remove-bin-directory
                     (lambda* (#:key outputs #:allow-other-keys)
                       (let* ((out (assoc-ref outputs "out"))
@@ -296,7 +292,8 @@ Additionally, various channel-specific options can be negotiated.")
                      ("libtool" ,libtool)
                      ("texinfo" ,texinfo)
                      ("pkg-config" ,pkg-config)
-                     ("which" ,which)))
+                     ("which" ,which)
+                     ("guile" ,guile-2.2))) ;needed when cross-compiling.
     (inputs `(("guile" ,guile-2.2)
               ("libssh" ,libssh)
               ("libgcrypt" ,libgcrypt)))
@@ -311,6 +308,9 @@ libssh library.")
   (package
     (inherit guile-ssh)
     (name "guile2.0-ssh")
+    (native-inputs
+     `(("guile" ,guile-2.0) ;needed when cross-compiling.
+       ,@(alist-delete "guile" (package-native-inputs guile-ssh))))
     (inputs `(("guile" ,guile-2.0)
               ,@(alist-delete "guile" (package-inputs guile-ssh))))))
 
@@ -318,32 +318,9 @@ libssh library.")
   (package
     (inherit guile-ssh)
     (name "guile3.0-ssh")
-    (arguments
-     (substitute-keyword-arguments (package-arguments guile-ssh)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-before 'bootstrap 'delete-old-guile-m4
-             (lambda _
-               ;; The old 'guile.m4' that's shipped would fail to recognize
-               ;; Guile 2.9 as "3.0".
-               (delete-file "m4/guile.m4")
-               #t))
-           (add-before 'build 'adjust-for-guile3
-             (lambda _
-               ;; Adjust for things that are deprecated in 2.2 and removed in
-               ;; 3.0.
-               (substitute* "tests/common.scm"
-                 (("define-module \\(tests common\\)")
-                  "define-module (tests common)
-  #:use-module (ice-9 threads)\n"))
-               (substitute* "modules/ssh/tunnel.scm"
-                 (("define-module \\(ssh tunnel\\)")
-                  "define-module (ssh tunnel)
-  #:use-module (ice-9 threads)"))
-               (substitute* "modules/srfi/srfi-64.upstream.scm"
-                 (("_IOLBF")
-                  "'line"))
-               #t))))))
+    (native-inputs
+     `(("guile" ,guile-next) ;needed when cross-compiling.
+       ,@(alist-delete "guile" (package-native-inputs guile-ssh))))
     (inputs `(("guile" ,guile-next)
               ,@(alist-delete "guile" (package-inputs guile-ssh))))))
 
@@ -769,23 +746,24 @@ of existing remote shell facilities such as SSH.")
 (define-public endlessh
   (package
     (name "endlessh")
-    (version "1.0")
+    (version "1.1")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/skeeto/endlessh/releases/"
-                            "download/" version "/endlessh-" version ".tar.xz"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/skeeto/endlessh.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
-         (base32
-          "0hhsr65hzrcb7ylskmxyr92svzndhks8hqzn8hvg7f7j89rkvq5k"))))
+         (base32 "0ziwr8j1frsp3dajr8h5glkm1dn5cci404kazz5w1jfrp0736x68"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "CC=gcc")
-       #:tests? #f ; no test target
+       #:tests? #f                      ; no test target
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)))) ; no configure script
+         (delete 'configure))))         ; no configure script
     (home-page "https://github.com/skeeto/endlessh")
     (synopsis "SSH tarpit that slowly sends an endless banner")
     (description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 9e31f42ad1..46cd691ed3 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -548,13 +548,13 @@ estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995)
 (define-public r-lattice
   (package
     (name "r-lattice")
-    (version "0.20-38")
+    (version "0.20-40")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "lattice" version))
               (sha256
                (base32
-                "0b8abkz7syscq883mrgv63pkwaqkcpwfx8rgbqy9vgfva0z5xszx"))))
+                "1w53sfzdy9zsifv44dqf9pl46fk14lnx3fha1k1p660h51lyv56m"))))
     (build-system r-build-system)
     (home-page "http://lattice.r-forge.r-project.org/")
     (synopsis "High-level data visualization system")
@@ -590,13 +590,13 @@ and operations on them using LAPACK and SuiteSparse.")
 (define-public r-nlme
   (package
     (name "r-nlme")
-    (version "3.1-143")
+    (version "3.1-144")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nlme" version))
        (sha256
-        (base32 "13iixbs2ibldc75rl7rav5n5kx33zwm33xnfw1yvlkpcqf38bd22"))))
+        (base32 "1gqyq53fdq23wsi3f4n9vg4mn5i0v18zam5lnzlpg581xifx2779"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -739,14 +739,14 @@ curves, Cox models, and parametric accelerated failure time models.")
 (define-public r-bit
   (package
     (name "r-bit")
-    (version "1.1-15.1")
+    (version "1.1-15.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bit" version))
        (sha256
         (base32
-         "0y351ajlrn9ywbiai46mjpwmw5pqc9ik2z24rf0bnbdcvaxdr7r8"))))
+         "12xjkkkmflkz8s435by4r23b57cz7z67z84907f6qg99hn1yg0qb"))))
     (build-system r-build-system)
     (home-page "http://ff.r-forge.r-project.org")
     (synopsis "Class for vectors of 1-bit booleans")
@@ -804,13 +804,13 @@ effects of different types of color-blindness.")
 (define-public r-digest
   (package
     (name "r-digest")
-    (version "0.6.23")
+    (version "0.6.24")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "digest" version))
        (sha256
-        (base32 "18h5s8vkdcz2vhpsx6g3ig00zalrihr03skn95zw3lr2y56pafmp"))))
+        (base32 "01xsmcgqva9bza30zh7kj4lzapxgg4yiljfk99g4v6xng50mp604"))))
     (build-system r-build-system)
     ;; Vignettes require r-knitr, which requires r-digest, so we have to
     ;; disable them and the tests.
@@ -1015,14 +1015,14 @@ solution for sending email, including attachments, from within R.")
 (define-public r-stringi
   (package
     (name "r-stringi")
-    (version "1.4.5")
+    (version "1.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "stringi" version))
        (sha256
         (base32
-         "0gdmdf4i3ik8rcs7af1vlsfnilcmw3z28jx4278rpq2asigps89k"))))
+         "1mkgxzf000zdgbbbvg2vf4md4l501n5lfksffq8vdg6pbgd6fgv3"))))
     (build-system r-build-system)
     (inputs `(("icu4c" ,icu4c)))
     (native-inputs `(("pkg-config" ,pkg-config)))
@@ -1177,14 +1177,14 @@ and to generate base64 encoded string from raster matrix.")
 (define-public r-svglite
   (package
     (name "r-svglite")
-    (version "1.2.2")
+    (version "1.2.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "svglite" version))
        (sha256
         (base32
-         "1gwv51wqp6pgm2f9gavsiq65njs77fr49n8y6y9ax60k3a4vvg14"))))
+         "1zivykbi1pxdxhrkc1if1ihdn5p27j0nai2q0abca1dwry3wg2yl"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
@@ -1337,13 +1337,13 @@ supported via Andre Simon's highlight package.")
 (define-public r-mime
   (package
     (name "r-mime")
-    (version "0.8")
+    (version "0.9")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "mime" version))
               (sha256
                (base32
-                "18w98prfbivvygiyamsf9yg090kzbnvw2fn9b27823gmis4d08ny"))))
+                "107sqarmyhxlch5nrg796i5z03p9mshskisiq2fm628ajk99gkrc"))))
     (build-system r-build-system)
     (home-page "https://github.com/yihui/mime")
     (synopsis "R package to map filenames to MIME types")
@@ -1382,13 +1382,13 @@ syntax that can be converted to XHTML or other formats.")
 (define-public r-yaml
   (package
     (name "r-yaml")
-    (version "2.2.0")
+    (version "2.2.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "yaml" version))
               (sha256
                (base32
-                "0in562nd0i23cg91a8kdbqgim656fgscykwi0icsnq53xj3srg2m"))))
+                "10r7g26x73am45niigm3k466030nymnr3v3fjljafzrr5aybf58i"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/yaml/")
     (synopsis "Methods to convert R data to YAML and back")
@@ -1400,13 +1400,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.")
 (define-public r-knitr
   (package
     (name "r-knitr")
-    (version "1.27")
+    (version "1.28")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "knitr" version))
               (sha256
                (base32
-                "02nysgnx6xv0kd351s1d59yx4g0drsd9lmcgxs0rsw5f1jiycgdg"))))
+                "0ai382fmpz25qrhdgchs3vph2cdvyd73xyryg4jby5fp67d03vh5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-evaluate" ,r-evaluate)
@@ -1607,13 +1607,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.4.3")
+    (version "0.4.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "0qsqfikbsj55x5brghnkzzp7pz0japr4xnzm993f668mlls3f6i4"))))
+                "1kqmrk00lnkbclnvj1dizjbdav0g1w44yd6ja4yy3bivwan9jf23"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1651,17 +1651,18 @@ and printing capabilities than traditional data frames.")
 (define-public r-dplyr
   (package
     (name "r-dplyr")
-    (version "0.8.3")
+    (version "0.8.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "dplyr" version))
               (sha256
                (base32
-                "032c89wa04g9rih9shyvwl3il0bsrv3xk489x6867sk9bb3amd38"))))
+                "1nd0mmvqjbzbknawa520f64p9zlj9lwdlq0hh7c1mciyy7ah6641"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
        ("r-bh" ,r-bh)
+       ("r-ellipsis" ,r-ellipsis)
        ("r-glue" ,r-glue)
        ("r-magrittr" ,r-magrittr)
        ("r-pkgconfig" ,r-pkgconfig)
@@ -1781,13 +1782,13 @@ and density estimation.")
 (define-public r-chron
   (package
     (name "r-chron")
-    (version "2.3-54")
+    (version "2.3-55")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "chron" version))
               (sha256
                (base32
-                "0vc7dxqwx0jqzwszax6di3091npsxnhnbvr7sy7rlip0jqzarwqd"))))
+                "09gbs7c1ynlg0kl1m6nkbn75ysk16g13r17snnaws64qwywiywqg"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/chron")
     (synopsis "Chronological R objects which can handle dates and times")
@@ -1958,17 +1959,19 @@ chain.")
 (define-public r-ade4
   (package
     (name "r-ade4")
-    (version "1.7-13")
+    (version "1.7-15")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "ade4" version))
         (sha256
           (base32
-            "16z9jk4qj35ghsk4lwmq241dgc770y8a70dlmp9q4gz6d8ssgl7m"))))
+            "1xpxznlqm8wb4d5z2dcrl0wi3jjciq2hr5rcx2b5aaipiiyzm1ij"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-mass" ,r-mass)))
+     `(("r-mass" ,r-mass)
+       ("r-pixmap" ,r-pixmap)
+       ("r-sp" ,r-sp)))
     (home-page "http://pbil.univ-lyon1.fr/ADE-4")
     (synopsis "Multivariate data analysis and graphical display")
     (description
@@ -2094,14 +2097,14 @@ R version.")
 (define-public r-checkmate
   (package
     (name "r-checkmate")
-    (version "1.9.4")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "checkmate" version))
        (sha256
         (base32
-         "08ddpgs4mv5d5y4j054pm8drmxkn7yvhfpbghwxlizjpnxa5g8ps"))))
+         "193gkifr9spp0x0rwnjq1spdhjkfkh4mv27iklskcj604075phhd"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)))
@@ -2375,13 +2378,13 @@ pure C implementation of the Git core methods.")
 (define-public r-rstudioapi
   (package
     (name "r-rstudioapi")
-    (version "0.10")
+    (version "0.11")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rstudioapi" version))
               (sha256
                (base32
-                "15mbw607ncdf53mgga76n3va5zzdcjqz14nb0jcn9axwccqamic0"))))
+                "0srh0m4mw4k6s7spwb84l4cx4xnn04cp5cjxi0fwza7bwavpzq0k"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/rstudioapi")
     (synopsis "Safely access the RStudio API")
@@ -2393,13 +2396,13 @@ informative error messages when it's not available.")
 (define-public r-devtools
   (package
     (name "r-devtools")
-    (version "2.2.1")
+    (version "2.2.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "devtools" version))
               (sha256
                (base32
-                "0i2f549hxkn0j1x1avkhwy68c9r48v9284j7x9cak2q6dfsqz61f"))))
+                "1bhb2j8ilpdzwd0c678mcgfpdw88vncsjma79afcikxmzcsz9279"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -2565,13 +2568,13 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.800.4.0")
+    (version "0.9.850.1.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "1csh54v4d0ccwmk4bqj4rca1d5rqpafvb4459x3q6k9sys0charx"))))
+                "0q9clhmbwwph47hrhx5827m7njrcl2klihyqbkf0ihwlbqrjijwz"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
     ;; All needed for vignettes
@@ -3056,14 +3059,14 @@ data.")
 (define-public r-foreach
   (package
     (name "r-foreach")
-    (version "1.4.7")
+    (version "1.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "foreach" version))
        (sha256
         (base32
-         "0q7iyniw5iri4hl57bhil3r69s5wnaijzn0q0x4h3z42245jqqwm"))))
+         "1xwf5l2fw62w80ji3dvgcc6m9m4s6zygkhi84ypb0gv0ppjffg5c"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-codetools" ,r-codetools)
@@ -3130,13 +3133,13 @@ using the multicore functionality of the parallel package.")
 (define-public r-dt
   (package
     (name "r-dt")
-    (version "0.11")
+    (version "0.12")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "DT" version))
               (sha256
                (base32
-                "09k9s07aah1apc308sj1abvr27mky6fkpl9j6lxl2x55n4immvkg"))))
+                "0089288ma1cj9nf4jscmpbagyqlg4r90mw8bwl4zv1d4hjl0d693"))))
     (properties
      `((upstream-name . "DT")))
     (build-system r-build-system)
@@ -3420,56 +3423,16 @@ memory-mapped files.")
     ;; Users can choose either LGPLv3 or ASL2.0.
     (license (list license:lgpl3 license:asl2.0))))
 
-(define-public r-nmf
-  (package
-    (name "r-nmf")
-    (version "0.21.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "NMF" version))
-       (sha256
-        (base32
-         "1qq25n3k5sgh3srlshb3ic6q92s12c1ilqf5cd5anvq6cqfchc1v"))))
-    (properties `((upstream-name . "NMF")))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-cluster" ,r-cluster)
-       ("r-bigmemory" ,r-bigmemory) ; suggested
-       ("r-synchronicity" ,r-synchronicity) ; suggested
-       ("r-colorspace" ,r-colorspace)
-       ("r-digest" ,r-digest)
-       ("r-doparallel" ,r-doparallel)
-       ("r-foreach" ,r-foreach)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-gridbase" ,r-gridbase)
-       ("r-pkgmaker" ,r-pkgmaker)
-       ("r-rcolorbrewer" ,r-rcolorbrewer)
-       ("r-registry" ,r-registry)
-       ("r-reshape2" ,r-reshape2)
-       ("r-rngtools" ,r-rngtools)
-       ("r-stringr" ,r-stringr)))
-    (home-page "http://renozao.github.io/NMF")
-    (synopsis "Algorithms and framework for nonnegative matrix factorization")
-    (description
-     "This package provides a framework to perform Non-negative Matrix
-Factorization (NMF).  The package implements a set of already published
-algorithms and seeding methods, and provides a framework to test, develop and
-plug new or custom algorithms.  Most of the built-in algorithms have been
-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-r-methodss3
   (package
     (name "r-r-methodss3")
-    (version "1.7.1")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "R.methodsS3" version))
               (sha256
                (base32
-                "11z6v2i7jl647wxi9p5z66yvfnnqv6s7fxqmz7w2gkb6j8wl1f24"))))
+                "19c5870v7b59fs6xk58bh3rfkmhfralmgsax86zzpdmz47pga1g0"))))
     (properties `((upstream-name . "R.methodsS3")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/R.methodsS3")
@@ -3686,20 +3649,21 @@ more complete @code{viridis} package.")
 (define-public r-tidyselect
   (package
     (name "r-tidyselect")
-    (version "0.2.5")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tidyselect" version))
        (sha256
         (base32
-         "0x3cp36byhfjajikr1lwffjm85ayw3bcs7d7kb0cydgs61ifiqjw"))))
+         "1bwwsljkg1bxh7xnqxv7n0n1s9y8x407i6lsv826vy1ss1k1fxpy"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-glue" ,r-glue)
+     `(("r-ellipsis" ,r-ellipsis)
+       ("r-glue" ,r-glue)
        ("r-purrr" ,r-purrr)
-       ("r-rcpp" ,r-rcpp)
-       ("r-rlang" ,r-rlang)))
+       ("r-rlang" ,r-rlang)
+       ("r-vctrs" ,r-vctrs)))
     (home-page "https://cran.r-project.org/web/packages/tidyselect")
     (synopsis "Select from a set of strings")
     (description
@@ -3748,19 +3712,20 @@ and tidyr provides no margins or aggregation.")
 (define-public r-hexbin
   (package
     (name "r-hexbin")
-    (version "1.28.0")
+    (version "1.28.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "hexbin" version))
        (sha256
         (base32
-         "0b58jb1kz39wzrnkv077cfzns889xly7psvhxnm3xmnx6yvd986d"))))
+         "1ry6jm3lqz3mj0s5rzbs6mpkz2hxpnvbw8c1vwc4pj7b173r5l22"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
     (native-inputs
-     `(("gfortran" ,gfortran)))
+     `(("gfortran" ,gfortran)
+       ("r-knitr" ,r-knitr))) ; for vignettes
     (home-page "https://github.com/edzer/hexbin")
     (synopsis "Hexagonal binning routines")
     (description
@@ -3793,13 +3758,13 @@ features present in other programming languages.")
 (define-public r-plotly
   (package
     (name "r-plotly")
-    (version "4.9.1")
+    (version "4.9.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "plotly" version))
               (sha256
                (base32
-                "0gadam4qw81q9gpjp7sqrpd7ikmcdsc78d8vjn39g0xzs5j8r845"))))
+                "19zw3qnhfgqdxlvma8xyikir46aiqhfcwxf072z9xgq0hknpblm5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-base64enc" ,r-base64enc)
@@ -3996,13 +3961,13 @@ package instead.")
 (define-public r-hmisc
   (package
     (name "r-hmisc")
-    (version "4.3-0")
+    (version "4.3-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Hmisc" version))
        (sha256
-        (base32 "0rb1m6138lqzb46nss9ggvhghipd10vdnwsy6iq2wzynrynzkwkz"))))
+        (base32 "02ni7719acdmc8pcbx07b7x2nqsjrwq4smnx9qlzqjmx4pmp3cwc"))))
     (properties `((upstream-name . "Hmisc")))
     (build-system r-build-system)
     (native-inputs
@@ -4125,14 +4090,14 @@ existing packages provide.")
 (define-public r-sfsmisc
   (package
     (name "r-sfsmisc")
-    (version "1.1-4")
+    (version "1.1-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sfsmisc" version))
        (sha256
         (base32
-         "0zaw617zarmwir8l60riky0z6r1j3mwfnm1f32vqcbljb74akdj4"))))
+         "173qgm2bn84x544fc3x9gc2rv995sbsvji9lnn2drx8drvzyy8lf"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/sfsmisc")
     (synopsis "Utilities from \"Seminar fuer Statistik\" ETH Zurich")
@@ -4266,7 +4231,7 @@ including:
     (build-system r-build-system)
     (propagated-inputs
      `(("r-gplots" ,r-gplots)))
-    (home-page "http://rocr.bioinf.mpi-sb.mpg.de/")
+    (home-page "https://rocr.bioinf.mpi-sb.mpg.de/")
     (synopsis "Visualizing the performance of scoring classifiers")
     (description
      "ROCR is a flexible tool for creating cutoff-parameterized 2D performance
@@ -4440,13 +4405,13 @@ Wall Street Journal, among others.  This package also provides
 (define-public r-statmod
   (package
     (name "r-statmod")
-    (version "1.4.33")
+    (version "1.4.34")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "statmod" version))
               (sha256
                (base32
-                "1fbi5m4c0lingm2vvi0g6jf8f2mg1h01xwyz5rnymrq7gs0ibiks"))))
+                "0yklg64aw5y8kfq5piafnrj1v3jv563iwzzl75g3kllrw23c508s"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/statmod")
     (native-inputs
@@ -4560,17 +4525,18 @@ letters, as is often required for scientific publications.")
 (define-public r-mixtools
   (package
     (name "r-mixtools")
-    (version "1.1.0")
+    (version "1.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mixtools" version))
        (sha256
         (base32
-         "13wdm0xs5bakhpa8ypg6lvhjaqkxyabwz4glxdwn0jwdvkcdhgsl"))))
+         "08whic8hmmzi55b7azwj11l2x5r9s5qbyrv7s9jr08156vqkw0zg"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
+       ("r-kernlab" ,r-kernlab)
        ("r-segmented" ,r-segmented)
        ("r-survival" ,r-survival)))
     (home-page "https://cran.r-project.org/web/packages/mixtools")
@@ -4915,14 +4881,14 @@ multivariate analysis.")
 (define-public r-trimcluster
   (package
     (name "r-trimcluster")
-    (version "0.1-2.1")
+    (version "0.1-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "trimcluster" version))
        (sha256
         (base32
-         "0013bpyq6mkvjn38qsmwnsxfiwxgwngnqxycxvgpgmiadhm8fjmn"))))
+         "12siv8yx8dcavsz8jk96lwscbj257ar8jpaxksl2zb06987g4fcj"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/trimcluster")
     (synopsis "Cluster analysis with trimming")
@@ -4936,14 +4902,14 @@ of the points.")
 (define-public r-fpc
   (package
     (name "r-fpc")
-    (version "2.2-4")
+    (version "2.2-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fpc" version))
        (sha256
         (base32
-         "1gsnl5sbdg86b2wdrsy6wq83xj6mrziiq7rxa8cqksgljc7gp6yf"))))
+         "10504hzivbn89ip0cd5bcxd36ivbgin1lw1xhyh3xfckcm25v1a5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -5191,17 +5157,18 @@ C++ library for numerical linear algebra and RcppEigen glue.")
 (define-public r-pbkrtest
   (package
     (name "r-pbkrtest")
-    (version "0.4-7")
+    (version "0.4-8.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pbkrtest" version))
        (sha256
         (base32
-         "1si3bhi59xc51a0pgjjglccq3h4aljyhw2k1b8574s145fnh7fsw"))))
+         "0s5xhhrhv5i9680lw6af9lj2x4jc3fygmzzk0jjpxnb8g4b3p1jz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lme4" ,r-lme4)
+       ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)))
     (home-page "http://people.math.aau.dk/~sorenh/software/pbkrtest/")
@@ -5264,19 +5231,16 @@ to Applied regression, Second Edition, Sage, 2011.")
 (define-public r-rcppprogress
   (package
     (name "r-rcppprogress")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppProgress" version))
        (sha256
         (base32
-         "0yk01hfv961zyp569682k9igvhnwqyg5j0n5fm63sxigj82l2xhi"))))
+         "0j2b37gwjpgmrnr00srdzm751hzlpsjb54ph63xxmcdfnwhlnqmi"))))
     (properties `((upstream-name . "RcppProgress")))
     (build-system r-build-system)
-    (propagated-inputs
-     `(("r-devtools" ,r-devtools)
-       ("r-rcpp" ,r-rcpp)))
     (home-page "https://github.com/kforner/rcpp_progress")
     (synopsis "Interruptible progress bar for C++ in R packages")
     (description
@@ -5288,14 +5252,14 @@ even in multithreaded code, typically using OpenMP.")
 (define-public r-mnormt
   (package
     (name "r-mnormt")
-    (version "1.5-5")
+    (version "1.5-6")
     (source
      (origin
        (method url-fetch)
         (uri (cran-uri "mnormt" version))
         (sha256
           (base32
-           "1b34xxrnf35khsx82mhvmk96sgfr2flyasaah7qkb2976pwxay7z"))))
+           "0k8y08gj6z525yvc7y3dl2kzgnafbj3i7lvpamypsmqxf74zql99"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -5331,14 +5295,14 @@ first and second order derivatives.")
 (define-public r-sn
   (package
     (name "r-sn")
-    (version "1.5-4")
+    (version "1.5-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sn" version))
        (sha256
         (base32
-         "0x46gxkplxbnhaqbpiav1r4xlv4ib7n57kxmca7scqwj22y7wrs6"))))
+         "0ymyyc0di1g2b11wzljiih05z3rxck48wn74bygg3fiby973z49f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mnormt" ,r-mnormt)
@@ -5603,14 +5567,14 @@ parameters.")
 (define-public r-directlabels
   (package
     (name "r-directlabels")
-    (version "2018.05.22")
+    (version "2020.1.31")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "directlabels" version))
        (sha256
         (base32
-         "0xcpc56ssb9430b0xcdhayk3qaak2qcakyss2pz14y5w2027hblv"))))
+         "08s1gnwp4bn8xahwjaq0f1qzhwh2dvybzhq3z7xyzn8cnyzmis6c"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-quadprog" ,r-quadprog)))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 8773f1969f..885912be41 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
 ;;; Copyright © 2016, 2017, 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -85,7 +85,7 @@
 (define-public tilda
   (package
     (name "tilda")
-    (version "1.4.1")
+    (version "1.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -94,7 +94,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "154rsldqjv2m1bddisb930qicb0y35kx7bxq392n2hn68jr2pxkj"))))
+                "13djibj3s7ig13c57ywy38pxy3qfmqihii2c0g15fy2h9q8xp1gx"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index cc38ee25f1..1be7c69154 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
 ;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com>
 ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
+;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1016,3 +1017,33 @@ instance one can add new syntax elements to markdown, etc.
 
 This package provides Python bindings.")
     (license license:bsd-3)))
+
+(define-public aha
+  (package
+    (name "aha")
+    (version "0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/theZiz/aha")
+             (commit version)))
+       (sha256
+        (base32
+         "0byml4rmpiaalwx69jcixl3yvpvwmwiss1jzgsqwshilb2p4qnmz"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure))
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))
+       ;; no check target
+       #:tests? #f))
+    (home-page "https://github.com/theZiz/aha")
+    (synopsis "Converts terminal escape sequences to HTML")
+    (description "@command{aha} (Ansi Html Adapter) converts ANSI escape sequences
+of a Unix terminal to HTML code.")
+    (license (list license:lgpl2.0+ license:mpl1.1))))
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index bc3c8be87f..673f23c20b 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -553,13 +553,13 @@ netcat implementation that supports TLS.")
   (package
     (name "python-acme")
     ;; Remember to update the hash of certbot when updating python-acme.
-    (version "1.0.0")
+    (version "1.2.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "acme" version))
               (sha256
                (base32
-                "1hl62dnh8zsipa5azzpy5kwgjgb5vflinhna1fsn7rcchhpz223a"))))
+                "1ar6mjax7cyvq3zgh64yrg485l02dy6zqddxjxg99nlvsi0cfc06"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -610,7 +610,7 @@ netcat implementation that supports TLS.")
               (uri (pypi-uri "certbot" version))
               (sha256
                (base32
-                "0aih7sir5byy8ah9lrgzwcaga7hjw98qj8bb1pxzzzqrvcqjvf46"))))
+                "0g1p4nkaid6davjm5qz8lsln92dhjhlv3rrg8hcfpr7qhphbmp4m"))))
     (build-system python-build-system)
     (arguments
      `(,@(substitute-keyword-arguments (package-arguments python-acme)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index e2a06dee59..df160bcc53 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -149,14 +149,14 @@ as well as the classic centralized workflow.")
    (name "git")
    ;; XXX When updating Git, check if the special 'git-source' input to cgit
    ;; needs to be updated as well.
-   (version "2.25.0")
+   (version "2.25.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "1l58v42aazj0x9276gk8r9mwyl9pgp9w99aakz4xfhzv7wd2jq60"))))
+              "09lzwa183nblr6l8ib35g2xrjf9wm9yhk3szfvyzkwivdv69c9r2"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -169,7 +169,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "1gf8b1k6i4dlwskwq7dd2vz9bzc3m1qnknj9daq2vp39vmxpg5nk"))))
+            "15pfm7j4wq8ryp9n9d81h8v0arl15yq9i6cigw45walnq5r6721h"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc)
       ("docbook-xsl" ,docbook-xsl)
@@ -1432,6 +1432,7 @@ following features:
     (arguments
      '(#:parallel-tests? #f             ; TODO Seems to cause test failures on
                                         ; i686-linux
+       #:configure-flags '("--enable-static=no")
        #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'patch-libtool-wrapper-ls
@@ -1564,34 +1565,30 @@ RCS, PRCS, and Aegis packages.")
 (define-public cvs-fast-export
   (package
     (name "cvs-fast-export")
-    (version "1.45")
+    (version "1.51")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.catb.org/~esr/cvs-fast-export/"
                                   "cvs-fast-export-" version ".tar.gz"))
               (sha256
                (base32
-                "19pxg6p0pcgyd2fbnh3wy1kazv6vcfi5lzc2whhdi1w9kj4r9c4z"))))
+                "0nn5cf8syb5nbjvkn8w561pk25clv187h4hs9pnc700g9w56chzf"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-after 'unpack 'remove-optimizations
-           (lambda _
-             ;; Don't optimize for a specific processor architecture.
-             (substitute* "Makefile"
-               (("CFLAGS \\+= -march=native") ""))
-             #t)))
-       #:parallel-build? #f ; parallel a2x commands fail spectacularly
+         (delete 'configure))       ; no configure script
+       #:parallel-build? #f         ; parallel a2x commands fail spectacularly
        #:make-flags
        (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out")))))
-    (inputs `(("git" ,git)))
-    (native-inputs `(("asciidoc"    ,asciidoc)
-                     ;; These are needed for the tests.
-                     ("cvs"    ,cvs)
-                     ("python" ,python-2)
-                     ("rcs"    ,rcs)))
+    (inputs
+     `(("git" ,git)
+       ("python" ,python-wrapper)))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ;; These are needed for the tests.
+       ("cvs" ,cvs)
+       ("rcs" ,rcs)))
     (home-page "http://www.catb.org/esr/cvs-fast-export/")
     (synopsis "Export an RCS or CVS history as a fast-import stream")
     (description "This program analyzes a collection of RCS files in a CVS
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4bf004e990..59cff04a56 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1264,7 +1264,7 @@ streaming protocols.")
 (define-public mplayer
   (package
     (name "mplayer")
-    (version "1.3.0")
+    (version "1.4")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -1272,7 +1272,7 @@ streaming protocols.")
                    version ".tar.xz"))
              (sha256
               (base32
-               "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s"))))
+               "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2"))))
     (build-system gnu-build-system)
     ;; FIXME: Add additional inputs once available.
     (native-inputs
@@ -1281,17 +1281,18 @@ streaming protocols.")
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("cdparanoia" ,cdparanoia)
-       ("ffmpeg" ,ffmpeg-3.4)
+       ("ffmpeg" ,ffmpeg)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
-;;        ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
+       ("giflib" ,giflib)
        ("lame" ,lame)
        ("libass" ,libass)
        ("libdvdcss" ,libdvdcss)
-       ("libdvdnav" ,libdvdnav)
+       ("libdvdnav" ,libdvdnav)         ; ignored without libdvdread
+       ("libdvdread" ,libdvdread)       ; ignored without libdvdnav
        ("libjpeg" ,libjpeg)
        ("libmpeg2" ,libmpeg2)
-       ("libmpg123" ,mpg123)                      ; audio codec for MP3
+       ("libmpg123" ,mpg123)            ; audio codec for MP3
        ("libpng" ,libpng)
        ("libtheora" ,libtheora)
        ("libvdpau" ,libvdpau)
@@ -1310,7 +1311,7 @@ streaming protocols.")
        ("speex" ,speex)
        ("zlib" ,zlib)))
     (arguments
-     `(#:tests? #f ; no test target
+     `(#:tests? #f                      ; no test target
        #:phases
        (modify-phases %standard-phases
         (replace 'configure
@@ -1346,7 +1347,7 @@ streaming protocols.")
                                         (nix-system->gnu-triplet
                                          (%current-system)))))))
                       "--disable-iwmmxt")))))))
-    (home-page "https://www.mplayerhq.hu/design7/news.html")
+    (home-page "https://www.mplayerhq.hu")
     (synopsis "Audio and video player")
     (description "MPlayer is a movie player.  It plays most MPEG/VOB, AVI,
 Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT,
@@ -1690,7 +1691,7 @@ other site that youtube-dl supports.")
 (define-public you-get
   (package
     (name "you-get")
-    (version "0.4.1355")
+    (version "0.4.1403")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1699,7 +1700,7 @@ other site that youtube-dl supports.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0xq7z04hvw3b3npiahlpzhbxsjvam9n9dynplyrkn84dx6k9ajbj"))))
+                "04viy19x4g9dngml82nf9j94ys3p47bs62c2q2cn1barkybaa3as"))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos
@@ -2149,7 +2150,7 @@ format changes.")
 (define-public xvid
   (package
     (name "xvid")
-    (version "1.3.6")
+    (version "1.3.7")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2157,21 +2158,19 @@ format changes.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0zppakvcgq5a42mhqqsbliclpg2jrhbmbfgrzalyfzr47jqmhssy"))))
+                "1xyg3amgg27zf7188kss7y248s0xhh1vv8rrk0j9bcsd5nasxsmf"))))
     (build-system gnu-build-system)
     (native-inputs `(("yasm" ,yasm)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before
-          'configure 'pre-configure
+         (add-before 'configure 'pre-configure
           (lambda _
             (chdir "build/generic")
             (substitute* "configure"
               (("#! /bin/sh") (string-append "#!" (which "sh"))))
             #t)))
-       ;; No 'check' target.
-       #:tests? #f))
+       #:tests? #f)) ; no test suite
     (home-page "https://www.xvid.com/")
     (synopsis "MPEG-4 Part 2 Advanced Simple Profile video codec")
     (description "Xvid is an MPEG-4 Part 2 Advanced Simple Profile (ASP) video
@@ -2883,7 +2882,7 @@ post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
        #:phases (modify-phases %standard-phases
                   ;; no configure script
                   (delete 'configure))))
-    (home-page "http://www.openh264.org/")
+    (home-page "https://www.openh264.org/")
     (synopsis "H264 decoder library")
     (description
      "Openh264 is a library which can decode H264 video streams.")
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 1d4a7a3f94..579b21524e 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -68,7 +68,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.0236")
+    (version "8.2.0303")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -77,13 +77,19 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "0ixwr7kkxc1cj837v1bbgghkd68gbynfn7pc4rb87ah9sm6bgaz3"))))
+               "1559lg8wgydyfc8c2sb2m7p8mlkarm7539qfxkh1skrw4mxi605k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'disable-CoW
+           ;; Disable copy-on-write (CoW) in the build directory.  Tests fail on
+           ;; btrfs (and possibly other CoW file systems) for unclear reasons.
+           ;; This needs to be run early as it only affects newly-created files.
+           (lambda _
+             (invoke "chattr" "-R" "+C" ".")))
          (add-after 'configure 'patch-config-files
            (lambda _
              (substitute* "runtime/tools/mve.awk"
@@ -128,6 +134,7 @@
      `(("libtool" ,libtool)
 
        ;; For tests.
+       ("e2fsprogs" ,e2fsprogs)         ; for chattr in disable-CoW above
        ("tzdata" ,tzdata-for-tests)))
     (home-page "https://www.vim.org/")
     (synopsis "Text editor based on vi")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 3670b396a5..d3f474d17a 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -11,6 +11,8 @@
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +35,7 @@
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
@@ -90,6 +93,7 @@
   #:use-module (guix build-system go)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system trivial)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -325,14 +329,24 @@ server and embedded PowerPC, and S390 guests.")
        (list (string-append "-Dwith-usb-ids-path="
                             (assoc-ref %build-inputs "usb.ids"))
              (string-append "-Dwith-pci-ids-path="
-                            (assoc-ref %build-inputs "pci.ids")))))
+                            (assoc-ref %build-inputs "pci.ids")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-osinfo-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "osinfo/osinfo_loader.c"
+               (("path = DATA_DIR.*")
+                (string-append "path = \"" (assoc-ref inputs "osinfo-db")
+                               "/share/osinfo\";")))
+             #t)))))
     (inputs
      `(("libsoup" ,libsoup)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
-       ("gobject-introspection" ,gobject-introspection)))
+       ("osinfo-db" ,osinfo-db)))
     (native-inputs
      `(("glib" ,glib "bin")  ; glib-mkenums, etc.
+       ("gobject-introspection" ,gobject-introspection)
        ("gtk-doc" ,gtk-doc)
        ("vala" ,vala)
        ("intltool" ,intltool)
@@ -461,8 +475,8 @@ manage system or application containers.")
          (add-before 'configure 'disable-broken-tests
            (lambda _
              (let ((tests (list "commandtest"      ; hangs idly
-				"qemuxml2argvtest" ; fails
-				"qemuhotplugtest"  ; fails
+                                "qemuxml2argvtest" ; fails
+                                "qemuhotplugtest"  ; fails
                                 "virnetsockettest" ; tries to network
                                 "virshtest")))     ; fails
                (substitute* "tests/Makefile.in"
@@ -629,8 +643,8 @@ virtualization library.")
          (add-after 'unpack 'fix-qemu-img-reference
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "virtconv/formats.py"
-	       (("/usr(/bin/qemu-img)" _ suffix)
-		(string-append (assoc-ref inputs "qemu") suffix)))
+               (("/usr(/bin/qemu-img)" _ suffix)
+                (string-append (assoc-ref inputs "qemu") suffix)))
              #t))
          (add-after 'unpack 'fix-default-uri
            (lambda* (#:key inputs #:allow-other-keys)
@@ -671,7 +685,6 @@ virtualization library.")
        ("libvirt-glib" ,libvirt-glib)
        ("libosinfo" ,libosinfo)
        ("vte" ,vte)
-       ("gobject-introspection" ,gobject-introspection)
        ("python-libvirt" ,python-libvirt)
        ("python-requests" ,python-requests)
        ("python-ipaddress" ,python-ipaddress)
@@ -684,6 +697,7 @@ virtualization library.")
      `(("qemu" ,qemu)))
     (native-inputs
      `(("glib" ,glib "bin")             ; glib-compile-schemas
+       ("gobject-introspection" ,gobject-introspection)
        ("gtk+" ,gtk+ "bin")             ; gtk-update-icon-cache
        ("perl" ,perl)                   ; pod2man
        ("intltool" ,intltool)))
@@ -1382,3 +1396,73 @@ which is a hypervisor.")
     ;; TODO: Some files are licensed differently.  List those.
     (license license:gpl2)
     (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))))
+
+(define-public osinfo-db-tools
+  (package
+    (name "osinfo-db-tools")
+    (version "1.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-tools-"
+                                  version ".tar.xz"))
+
+              (sha256
+               (base32
+                "08x8mrafphyll0d35xdc143rip3ahrz6bmzhc85nwhq7yk2vxpab"))))
+    (build-system meson-build-system)
+    (inputs
+     `(("libsoup" ,libsoup)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("json-glib" ,json-glib)
+       ("libarchive" ,libarchive)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ;; Tests
+       ("python" ,python)
+       ("pytest" ,python-pytest)
+       ("requests" ,python-requests)))
+    (home-page "https://gitlab.com/libosinfo/osinfo-db-tools")
+    (synopsis "Tools for managing the osinfo database")
+    (description "This package contains a set of tools to assist
+administrators and developers in managing the database.")
+    (license license:lgpl2.0+)))
+
+(define-public osinfo-db
+  (package
+    (name "osinfo-db")
+    (version "20200203")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://releases.pagure.org/libosinfo/osinfo-db-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1zjq1dhlci00j17dij7s3l30hybzmaykpk5b6bd5xbllp745njn5"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (osinfo-dir (string-append out "/share/osinfo"))
+                (source (assoc-ref %build-inputs "source"))
+                (osinfo-db-import
+                 (string-append (assoc-ref %build-inputs "osinfo-db-tools")
+                                "/bin/osinfo-db-import")))
+           (mkdir-p osinfo-dir)
+           (invoke osinfo-db-import "--dir" osinfo-dir source)
+           #t))))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("osinfo-db-tools" ,osinfo-db-tools)))
+    (home-page "https://gitlab.com/libosinfo/osinfo-db")
+    (synopsis "Database of information about operating systems")
+    (description "Osinfo-db provides the database files for use with the
+libosinfo library.  It provides information about guest operating systems for
+use with virtualization provisioning tools")
+    (license license:lgpl2.0+)))
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index e29c1e7d03..78a2c322af 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -519,6 +519,57 @@ that can be applied to a Linux kernel source tree in order to build it with
 WireGuard support.")
     (license license:gpl2)))
 
+(define-public wireguard-tools
+  (package
+    (name "wireguard-tools")
+    (version "1.0.20200206")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://git.zx2c4.com/wireguard-tools.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0ivc08lds5w39a6f2xdfih9wlk5g724hl3kpdvxvh5yff4l84qb7"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no test suite
+       #:make-flags
+       (list "CC=gcc"
+             "WITH_BASHCOMPLETION=yes"
+             ;; Install the ‘simple and dirty’ helper script wg-quick(8).
+             "WITH_WGQUICK=yes"
+             (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             ;; Currently used only to create an empty /etc/wireguard directory.
+             (string-append "SYSCONFDIR=no-thanks"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-source-directory
+           (lambda _
+             (chdir "src")
+             #t))
+         (delete 'configure)            ; no configure script
+         (add-after 'install 'reset-cwd
+           ;; Otherwise the 'install-license-file' phase installs nothing.
+           ;; <https://bugs.gnu.org/34703>
+           (lambda _
+             (chdir "..")
+             #t)))))
+    (home-page "https://www.wireguard.com/")
+    (synopsis "Tools for configuring WireGuard tunnels")
+    (description
+     "This package provides the user-space command-line tools for using and
+configuring WireGuard tunnels.
+
+WireGuard is a simple and fast general-purpose @acronym{VPN, Virtual Private
+Network} that securely encapsulates IP packets over UDP.  It aims to be as easy
+to configure and deploy as SSH.  VPN connections are made simply by exchanging
+public keys and can roam across IP addresses.")
+    (license
+     (list license:lgpl2.1+    ; src/netlink.h & contrib/embeddable-wg-library
+           license:gpl2))))    ; everything else
+
 (define-public xl2tpd
   (package
     (name "xl2tpd")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 3a54f5a50e..c68c91170b 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -392,7 +392,7 @@ driven and does not detract you from your daily work.")
 (define next-gtk-webkit
   (package
     (name "next-gtk-webkit")
-    (version "1.4.0")
+    (version "1.5.0")
     (source
      (origin
        (method git-fetch)
@@ -403,7 +403,7 @@ driven and does not detract you from your daily work.")
              (commit version)))
        (sha256
         (base32
-         "1gkmr746rqqg94698a051gv79fblc8n9dq0zg04llba44adhpmjl"))
+         "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy"))
        (file-name (git-file-name "next" version))))
     (build-system glib-or-gtk-build-system)
     (arguments
@@ -424,11 +424,10 @@ driven and does not detract you from your daily work.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://next.atlas.engineer")
-    (synopsis "Infinitely extensible web-browser (user interface only)")
+    (synopsis "Extensible web-browser in Common Lisp")
     (description "Next is a keyboard-oriented, extensible web-browser
-inspired by Emacs and designed for power users.  The application has familiar
-key-bindings, is fully configurable and extensible in Lisp, and has powerful
-features for productive professionals.")
+designed for power users.  The application has familiar Emacs and VI
+key-bindings and is fully configurable and extensible in Common Lisp.")
     (license license:bsd-3)))
 
 (define sbcl-next-download-manager
@@ -450,7 +449,7 @@ features for productive professionals.")
     (native-inputs
      `(("trivial-features" ,sbcl-trivial-features)
        ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Infinitely extensible web-browser (download manager)")))
+    (synopsis "Extensible web-browser in Common Lisp (download manager)")))
 
 (define sbcl-next-ring
   (package
@@ -464,7 +463,7 @@ features for productive professionals.")
     (native-inputs
      `(("trivial-features" ,sbcl-trivial-features)
        ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Infinitely extensible web-browser (ring)")))
+    (synopsis "Extensible web-browser in Common Lisp (ring)")))
 
 (define sbcl-next-history-tree
   (package
@@ -478,7 +477,7 @@ features for productive professionals.")
     (native-inputs
      `(("trivial-features" ,sbcl-trivial-features)
        ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Infinitely extensible web-browser (history-tree)")))
+    (synopsis "Extensible web-browser in Common Lisp (history-tree)")))
 
 (define sbcl-next-password-manager
   (package
@@ -498,7 +497,7 @@ features for productive professionals.")
     (native-inputs
      `(("trivial-features" ,sbcl-trivial-features)
        ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Infinitely extensible web-browser (password manager)")))
+    (synopsis "Extensible web-browser in Common Lisp (password manager)")))
 
 (define sbcl-next-hooks
   (package
@@ -617,7 +616,7 @@ features for productive professionals.")
        `(("trivial-features" ,sbcl-trivial-features)
          ("trivial-types" ,sbcl-trivial-types)
          ("prove-asdf" ,sbcl-prove-asdf)))
-      (synopsis "Infinitely extensible web-browser (with Lisp development files)"))))
+      (synopsis "Extensible web-browser in Common Lisp"))))
 
 (define-public sbcl-next
   (deprecated-package "sbcl-next" next))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 96e188a600..28f32df609 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -219,14 +219,14 @@ Interface} specification.")
     ;; ’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.17.7")
+    (version "1.17.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://nginx.org/download/nginx-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1zwiqljhzf0ym6r3hrg6k2qfb2mxi7i0lpafg4xnkr875225c9xn"))))
+                "0nwn4md8sxhks2j77qq1nvk5pfz3yykfhh2b507b6l2idp7kxllp"))))
     (build-system gnu-build-system)
     (inputs `(("openssl" ,openssl)
               ("pcre" ,pcre)
@@ -1095,16 +1095,21 @@ for efficient socket-like bidirectional reliable communication channels.")
     (description "WABT (pronounced: wabbit) is a suite of tools for
 WebAssembly, including:
 
-* wat2wasm: translate from WebAssembly text format to the WebAssembly binary
-  format
-* wasm2wat: the inverse of wat2wasm, translate from the binary format back
-  to the text format (also known as a .wat)
-* wasm-objdump: print information about a wasm binary.  Similar to objdump.
-* wasm-interp: decode and run a WebAssembly binary file using a stack-based
-  interpreter
-* wat-desugar: parse .wat text form as supported by the spec interpreter
-  (s-expressions, flat syntax, or mixed) and print canonical flat format
-* wasm2c: convert a WebAssembly binary file to a C source and header
+@enumerate
+@item @command{wat2wasm} translates from WebAssembly text format to the
+WebAssembly binary format
+@item @command{wasm2wat} is the inverse; it translates from the binary format
+back to the text format (also known as a .wat)
+@item @command{wasm-objdump} prints information about a wasm binary, similarly
+to @command{objdump}.
+@item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
+stack-based interpreter
+@item @command{wat-desugar} parses .wat text form as supported by the spec
+interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
+flat format
+@item @command{wasm2c} converts a WebAssembly binary file to a C source and
+header file.
+@end enumerate
 
 These tools are intended for use in (or for development of) toolchains or
 other systems that want to manipulate WebAssembly files.")
@@ -1158,10 +1163,13 @@ high performance.")
        (sha256
         (base32 "0ak9a6hsanhys40yhv7c2gqkfghpm6jx36j1pnml8ajvgaky5q98"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; Parallel builds don't reliably succeed.
+     `(#:parallel-build? #f))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
-       ("cunit" ,cunit) ; For tests.
+       ("cunit" ,cunit)                 ; for tests
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
        ("python-sphinx" ,python-sphinx)))
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 48e6c31f6c..6d5c2b3921 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
@@ -126,7 +126,14 @@ and many other languages.")
        (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out") "/lib"))
        ;; No 'check' target.
-       #:tests? #f))))
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'ignore-narrowing-errors
+           (lambda _
+             (substitute* "configure"
+               (("-Wall") "-Wall -Wno-narrowing"))
+             #t)))))))
 
 (define-public wxwidgets-gtk2
   (package (inherit wxwidgets)
@@ -296,7 +303,7 @@ provide a 100% native look and feel for the application.")
        ("wxwidgets" ,wxwidgets-gtk2)))
     (synopsis "Python 2 Bindings for wxWidgets")
     (description "@code{wxpython} provides Python 2 bindings for wxWidgets.")
-    (home-page "http://wxpython.org/")
+    (home-page "https://wxpython.org/")
     (license (package-license wxwidgets))))
 
 (define-public wxsvg
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index b34d5d08f2..b86882e762 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -342,21 +342,32 @@ X11 (yet).")
 (define-public libfakekey
   (package
     (name "libfakekey")
-    (version "0.1")
+    (version "0.3")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://downloads.yoctoproject.org/releases"
-                            "/matchbox/libfakekey/" version "/libfakekey-"
-                            version ".tar.bz2"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://git.yoctoproject.org/git/libfakekey")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
-         (base32
-          "1501l0bflcrhqbf12n7a7cqilvr0w4xawxw0vw75p2940nkl4464"))))
+         (base32 "1jw1d4wc1ysiijirc7apnz3sryrxbl9akgb92mh06dvfkz2nblj0"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "AM_LDFLAGS=-lX11")))
+     `(#:make-flags (list "AM_LDFLAGS=-lX11")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'bootstrap
+           ;; ./autogen.sh calls ./configure before shebangs have been patched.
+           (lambda _
+             (invoke "autoreconf" "-vfi"))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+
+       ;; For bootstrapping from git.
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
     (inputs
      `(("libxtst" ,libxtst)
        ("libx11" ,libx11)))
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 7489624646..fe5f2e6a0e 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -267,7 +267,7 @@ merging features essential for loading menus modified with menu editors.")
 (define-public tumbler
   (package
     (name "tumbler")
-    (version "0.2.7")
+    (version "0.2.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -275,7 +275,7 @@ merging features essential for loading menus modified with menu editors.")
                                   "tumbler-" version ".tar.bz2"))
               (sha256
                (base32
-                "1r0l0ghcrj71ax7yil1m4p7yjrfqm3icx0s8r7ivwv3i2rgw617p"))))
+                "15iyx4xk6v3vk8272c848y8rj4sq43khlqxndnai0w5mvsivk689"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -645,7 +645,7 @@ like appearance, display, keyboard and mouse settings.")
 (define-public thunar
   (package
     (name "thunar")
-    (version "1.8.11")
+    (version "1.8.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://archive.xfce.org/src/xfce/"
@@ -653,7 +653,7 @@ like appearance, display, keyboard and mouse settings.")
                                   "thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "0f5jw61z1dbvyyf1nks5dagnbs6sxxw7spybgwvpb3hfljrlvphq"))))
+                "1y1548jrx93c9v8ks60mkd9sx5xl69fmwh1pbr9gsnqz1gp5na99"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 2954ab5323..443165fea1 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6305,7 +6305,7 @@ opacity of X11 windows.  This patched version of X.Org's @command{transset}
 adds functionality, including: selecting window by clicking (as transset),
 selecting windows by pointing select actual focused X11 window, selecting by
 window name or id, forcing toggle, increase or decrease opacity.")
-    (home-page "http://forchheimer.se/transset-df/")
+    (home-page "https://forchheimer.se/transset-df/")
     (license license:x11)))
 
 (define-public bdfresize
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 0c154d1c4e..706b3ae7ec 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2037,11 +2038,6 @@ item of @var{packages}."
                 (setenv "LINUX_MODULE_DIRECTORY"
                         "/run/booted-system/kernel/lib/modules")
 
-                ;; The first one is for udev, the second one for eudev.
-                (setenv "UDEV_CONFIG_FILE" #$udev.conf)
-                (setenv "EUDEV_RULES_DIRECTORY"
-                        #$(file-append rules "/lib/udev/rules.d"))
-
                 (let* ((kernel-release
                         (utsname:release (uname)))
                        (linux-module-directory
@@ -2058,7 +2054,18 @@ item of @var{packages}."
                     (make-static-device-nodes directory))
                   (umask old-umask))
 
-                (let ((pid (fork+exec-command (list udevd))))
+                (let ((pid (fork+exec-command (list udevd)
+                            #:environment-variables
+                            (cons*
+                             ;; The first one is for udev, the second one for
+                             ;; eudev.
+                             (string-append "UDEV_CONFIG_FILE=" #$udev.conf)
+                             (string-append "EUDEV_RULES_DIRECTORY="
+                                            #$(file-append
+                                               rules "/lib/udev/rules.d"))
+                             (string-append "LINUX_MODULE_DIRECTORY="
+                                            (getenv "LINUX_MODULE_DIRECTORY"))
+                             (default-environment-variables)))))
                   ;; Wait until udevd is up and running.  This appears to
                   ;; be needed so that the events triggered below are
                   ;; actually handled.
diff --git a/gnu/services/sddm.scm b/gnu/services/sddm.scm
index ac8c9a8403..473b4876a1 100644
--- a/gnu/services/sddm.scm
+++ b/gnu/services/sddm.scm
@@ -56,7 +56,7 @@
                           (default (file-append shepherd "/sbin/reboot")))
 
   ;; [Theme]
-  ;; valid values are elarun or maldives
+  ;; valid values are elarun, maldives or maya
   (theme                  sddm-configuration-theme
                           (default "maldives"))
   (themes-directory       sddm-configuration-themes-directory
@@ -325,6 +325,6 @@ Wayland.")))
 
 (define-deprecated (sddm-service #:optional (config (sddm-configuration)))
   sddm-service-type
-  "Run the @uref{https://github.com/sddm/sddm,SSDM display manager}
+  "Run the @uref{https://github.com/sddm/sddm,SDDM display manager}
 with the given @var{config}, a @code{<sddm-configuration>} object."
   (service sddm-service-type config))
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 08bb33039c..d483ff1a15 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;;
@@ -281,6 +281,12 @@ and return the resulting '.go' file."
           (use-modules (srfi srfi-34)
                        (system repl error-handling))
 
+          ;; Specify the default environment visible to all the services.
+          ;; Without this statement, all the environment variables of PID 1
+          ;; are inherited by child services.
+          (default-environment-variables
+            '("PATH=/run/current-system/profile/bin"))
+
           ;; Arrange to spawn a REPL if something goes wrong.  This is better
           ;; than a kernel panic.
           (call-with-error-handling
@@ -288,10 +294,6 @@ and return the resulting '.go' file."
               (apply register-services
                      (map load-compiled '#$(map scm->go files)))))
 
-          ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around
-          ;; it.
-          (setenv "PATH" "/run/current-system/profile/bin")
-
           (format #t "starting services...~%")
           (for-each (lambda (service)
                       ;; In the Shepherd 0.3 the 'start' method can raise
diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm
index cbb4a79a7b..658d5c3e88 100644
--- a/gnu/services/vpn.scm
+++ b/gnu/services/vpn.scm
@@ -59,9 +59,10 @@
       (format #t "")
       (format #t "~a ~a\n" (uglify-field-name field-name) val)))
 (define serialize-string serialize-field)
+(define-maybe string)
 (define (serialize-boolean field-name val)
   (if val
-      (serialize-field field-name val)
+      (serialize-field field-name "")
       (format #t "")))
 
 (define (ip-mask? val)
@@ -298,6 +299,11 @@ certificate is @code{cert}.")
     "Don't close and reopen TUN/TAP device or run up/down scripts across
 SIGUSR1 or --ping-restart restarts.")
 
+   (fast-io?
+     (boolean #f)
+     "(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to
+poll/epoll/select prior to the write operation.")
+
    (verbosity
     (number 3)
     "Verbosity level."))
@@ -307,6 +313,12 @@ SIGUSR1 or --ping-restart restarts.")
     "Add an additional layer of HMAC authentication on top of the TLS control
 channel to protect against DoS attacks.")
 
+   (auth-user-pass
+     (maybe-string 'disabled)
+     "Authenticate with server using username/password.  The option is a file
+containing username/password on 2 lines.  Do not use a file-like object as it
+would be added to the store and readable by any user.")
+
    (verify-key-usage?
     (key-usage #t)
     "Whether to check the server certificate has server usage extension.")
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 73a32e4b02..df5c350a37 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
+;;; Copyright © 2020 shtwzrd <shtwzrd@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -152,7 +153,12 @@
   xorg-configuration make-xorg-configuration
   xorg-configuration?
   (modules          xorg-configuration-modules    ;list of packages
-                    (default %default-xorg-modules))
+                    ; filter out modules not supported on current system
+                    (default (filter
+                              (lambda (p)
+                                (member (%current-system)
+                                        (package-supported-systems p)))
+                              %default-xorg-modules)))
   (fonts            xorg-configuration-fonts      ;list of packges
                     (default %default-xorg-fonts))
   (drivers          xorg-configuration-drivers    ;list of strings
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index d475bda2c7..335efbd468 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -651,9 +651,13 @@ by 'mdadm'.")
                                                   (guix combinators)))))
                     %base-services))))
 
+(define %luks-passphrase
+  ;; LUKS encryption passphrase used in tests.
+  "thepassphrase")
+
 (define %encrypted-root-installation-script
   ;; Shell script of a simple installation.
-  "\
+  (string-append "\
 . /etc/profile
 set -e -x
 guix --version
@@ -665,9 +669,9 @@ parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 3M 1.4G \\
   set 1 boot on \\
   set 1 bios_grub on
-echo -n thepassphrase | \\
+echo -n " %luks-passphrase " | \\
   cryptsetup luksFormat --uuid=12345678-1234-1234-1234-123456789abc -q /dev/vdb2 -
-echo -n thepassphrase | \\
+echo -n " %luks-passphrase " | \\
   cryptsetup open --type luks --key-file - /dev/vdb2 the-root-device
 mkfs.ext4 -L my-root /dev/mapper/the-root-device
 mount LABEL=my-root /mnt
@@ -677,7 +681,7 @@ cp /etc/target-config.scm /mnt/etc/config.scm
 guix system build /mnt/etc/config.scm
 guix system init /mnt/etc/config.scm /mnt --no-substitutes
 sync
-reboot\n")
+reboot\n"))
 
 (define (enter-luks-passphrase marionette)
   "Return a gexp to be inserted in the basic system test running on MARIONETTE
@@ -698,7 +702,8 @@ to enter the LUKS passphrase."
             ;; when the passphrase should be entered.
             (wait-for-screen-text #$marionette passphrase-prompt?
                                   #:ocrad #$ocrad)
-            (marionette-type "thepassphrase\n" #$marionette)
+            (marionette-type #$(string-append %luks-passphrase "\n")
+                             #$marionette)
 
             ;; Now wait until we leave the boot screen.  This is necessary so
             ;; we can then be sure we match the "Enter passphrase" prompt from
@@ -714,7 +719,8 @@ to enter the LUKS passphrase."
             (wait-for-screen-text #$marionette passphrase-prompt?
                                   #:ocrad #$ocrad
                                   #:timeout 60)
-            (marionette-type "thepassphrase\n" #$marionette)
+            (marionette-type #$(string-append %luks-passphrase "\n")
+                             #$marionette)
 
             ;; Take a screenshot for debugging purposes.
             (marionette-control (string-append "screendump " #$output
diff --git a/guix/build-system/copy.scm b/guix/build-system/copy.scm
new file mode 100644
index 0000000000..d1bf8fb654
--- /dev/null
+++ b/guix/build-system/copy.scm
@@ -0,0 +1,143 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.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 build-system copy)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:export (%copy-build-system-modules
+            default-glibc
+            lower
+            copy-build
+            copy-build-system))
+
+;; Commentary:
+;;
+;; Standard build procedure for simple packages that don't require much
+;; compilation, mostly just copying files around.  This is implemented as an
+;; extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define %copy-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build copy-build-system)
+    ,@%gnu-build-system-modules))
+
+(define (default-glibc)
+  "Return the default glibc package."
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages base))))
+    (module-ref module 'glibc)))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs system target
+                (glibc (default-glibc))
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME from the given arguments."
+  (define private-keywords
+    '(#:source #:target #:inputs #:native-inputs))
+
+  (bag
+    (name name)
+    (system system)
+    (host-inputs `(,@(if source
+                         `(("source" ,source))
+                         '())
+                   ,@inputs
+                   ;; Keep the standard inputs of 'gnu-build-system'.
+                   ,@(standard-packages)))
+    (build-inputs native-inputs)
+    (outputs outputs)
+    (build copy-build)
+    (arguments (strip-keyword-arguments private-keywords arguments))))
+
+(define* (copy-build store name inputs
+                     #:key (guile #f)
+                     (outputs '("out"))
+                     (install-plan ''(("." "./")))
+                     (search-paths '())
+                     (out-of-source? #t)
+                     (validate-runpath? #t)
+                     (patch-shebangs? #t)
+                     (strip-binaries? #t)
+                     (strip-flags ''("--strip-debug"))
+                     (strip-directories ''("lib" "lib64" "libexec"
+                                           "bin" "sbin"))
+                     (phases '(@ (guix build copy-build-system)
+                                 %standard-phases))
+                     (system (%current-system))
+                     (imported-modules %copy-build-system-modules)
+                     (modules '((guix build copy-build-system)
+                                (guix build utils))))
+  "Build SOURCE using INSTALL-PLAN, and with INPUTS."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (copy-build #:source ,(match (assoc-ref inputs "source")
+                               (((?  derivation? source))
+                                (derivation->output-path source))
+                               ((source)
+                                source)
+                               (source
+                                source))
+                   #:system ,system
+                   #:outputs %outputs
+                   #:inputs %build-inputs
+                   #:install-plan ,install-plan
+                   #:search-paths ',(map search-path-specification->sexp
+                                         search-paths)
+                   #:phases ,phases
+                   #:out-of-source? ,out-of-source?
+                   #:validate-runpath? ,validate-runpath?
+                   #:patch-shebangs? ,patch-shebangs?
+                   #:strip-binaries? ,strip-binaries?
+                   #:strip-flags ,strip-flags
+                   #:strip-directories ,strip-directories)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define copy-build-system
+  (build-system
+    (name 'copy)
+    (description "The standard copy build system")
+    (lower lower)))
+
+;;; copy.scm ends here
diff --git a/guix/build/copy-build-system.scm b/guix/build/copy-build-system.scm
new file mode 100644
index 0000000000..6d9dc8f93b
--- /dev/null
+++ b/guix/build/copy-build-system.scm
@@ -0,0 +1,165 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.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 build copy-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 ftw)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:export (%standard-phases
+            copy-build))
+
+;; Commentary:
+;;
+;; System for building packages that don't require much compilation, mostly
+;; only to copy files around.
+;;
+;; Code:
+
+(define* (install #:key install-plan outputs #:allow-other-keys)
+  "Copy files from the \"source\" build input to the \"out\" output according to INSTALL-PLAN.
+
+An install plan is a list of plans in the form:
+
+  (SOURCE TARGET [FILTERS])
+
+In the above, FILTERS are optional.
+
+- When SOURCE matches a file or directory without trailing slash, install it to
+  TARGET.
+  - If TARGET has a trailing slash, install SOURCE basename beneath TARGET.
+  - Otherwise install SOURCE as TARGET.
+
+- When SOURCE is a directory with a trailing slash, or when FILTERS are used,
+  the trailing slash of TARGET is implied.
+  - Without FILTERS, install the full SOURCE _content_ to TARGET.
+    The paths relative to SOURCE are preserved within TARGET.
+  - With FILTERS among `#:include`, `#:include-regexp`, `#:exclude`,
+    `#:exclude-regexp`:
+    - With `#:include`, install only the paths which suffix exactly matches
+      one of the elements in the list.
+    - With `#:include-regexp`, install subpaths matching the regexps in the list.
+    - The `#:exclude*` FILTERS work similarly.  Without `#:include*` flags,
+      install every subpath but the files matching the `#:exlude*` filters.
+      If both `#:include*` and `#:exclude*` are specified, the exclusion is done
+      on the inclusion list.
+
+Examples:
+
+- `(\"foo/bar\" \"share/my-app/\")`: Install bar to \"share/my-app/bar\".
+- `(\"foo/bar\" \"share/my-app/baz\")`: Install bar to \"share/my-app/baz\".
+- `(\"foo/\" \"share/my-app\")`: Install the content of foo inside \"share/my-app\",
+  e.g. install \"foo/sub/file\" to \"share/my-app/sub/file\".
+- `(\"foo/\" \"share/my-app\" #:include (\"sub/file\"))`: Install only \"foo/sub/file\" to
+\"share/my-app/sub/file\".
+- `(\"foo/sub\" \"share/my-app\" #:include (\"file\"))`: Install \"foo/sub/file\" to
+\"share/my-app/file\"."
+  (define (install-simple source target)
+    "Install SOURCE to TARGET.
+TARGET must point to a store location.
+SOURCE may be a file or a directory.
+If a directory, the directory itself is installed, not its content.
+if TARGET ends with a '/', the source is installed underneath."
+    (let ((target (if (string-suffix? "/" target)
+                      (string-append target (basename source))
+                      target)))
+      (mkdir-p (dirname target))
+      (copy-recursively source target)))
+
+  (define (install-file file target)
+    (let ((dest (string-append target
+                               (if (string-suffix? "/" target)
+                                   (string-append "/" file)
+                                   file))))
+      (format (current-output-port) "`~a' -> `~a'~%" file dest)
+      (mkdir-p (dirname dest))
+      (copy-file file dest)))
+
+  (define* (make-file-predicate suffixes matches-regexp #:optional (default-value #t))
+    "Return a predicate that returns #t if its file argument matches the
+SUFFIXES or the MATCHES-REGEXP.  If neither SUFFIXES nor MATCHES-REGEXP is
+given, then the predicate always returns DEFAULT-VALUE."
+    (if (or suffixes matches-regexp)
+        (let* ((suffixes (or suffixes '()))
+               (regexps (map make-regexp (or matches-regexp '())))
+               (predicates (append
+                            (map (lambda (str)
+                                   (cut string-suffix? str <>))
+                                 suffixes)
+                            (map (lambda (regexp)
+                                   (cut regexp-exec regexp <>))
+                                 regexps))))
+          (lambda (file)
+            (any (cut <> file) predicates)))
+        (const default-value)))
+
+  (define* (install-file-list source target #:key include exclude include-regexp exclude-regexp)
+    ;; We must use switch current directory to source so that `find-files'
+    ;; returns file paths relative to source.
+    (with-directory-excursion source
+      (let* ((exclusion-pred (negate (make-file-predicate exclude exclude-regexp #f)))
+             (inclusion-pred (make-file-predicate include include-regexp))
+             (file-list
+              (filter! exclusion-pred
+                       (find-files "." (lambda (file _stat)
+                                         (inclusion-pred file))))))
+        (map (cut install-file <> (if (string-suffix? "/" target)
+                                      target
+                                      (string-append target "/")))
+             file-list))))
+
+  (define* (install source target #:key include exclude include-regexp exclude-regexp)
+    (set! target (string-append (assoc-ref outputs "out") "/" target))
+    (let ((filters? (or include exclude include-regexp exclude-regexp)))
+      (when (and (not (file-is-directory? source))
+                 filters?)
+        (error "Cannot use filters when SOURCE is a file."))
+      (let ((multi-files-in-source?
+             (or (string-suffix? "/" source)
+                 (and (file-is-directory? source)
+                      filters?))))
+        (if multi-files-in-source?
+            (install-file-list source target
+                               #:include include
+                               #:exclude exclude
+                               #:include-regexp include-regexp
+                               #:exclude-regexp exclude-regexp)
+            (install-simple source target)))))
+
+  (for-each (lambda (plan) (apply install plan)) install-plan)
+  #t)
+
+(define %standard-phases
+  ;; Everything is as with the GNU Build System except for the `configure'
+  ;; , `build', `check' and `install' phases.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (delete 'check)
+    (replace 'install install)))
+
+(define* (copy-build #:key inputs (phases %standard-phases)
+                     #:allow-other-keys #:rest args)
+  "Build the given package, applying all of PHASES in order."
+  (apply gnu:gnu-build #:inputs inputs #:phases phases args))
+
+;;; copy-build-system.scm ends here
diff --git a/guix/colors.scm b/guix/colors.scm
index b63ac37027..3031f54799 100644
--- a/guix/colors.scm
+++ b/guix/colors.scm
@@ -131,8 +131,7 @@ that subsequent output will not have any colors in effect."
 
 (define (color-output? port)
   "Return true if we should write colored output to PORT."
-  (and (not (getenv "INSIDE_EMACS"))
-       (not (getenv "NO_COLOR"))
+  (and (not (getenv "NO_COLOR"))
        (isatty?* port)))
 
 (define (coloring-procedure color)
diff --git a/guix/import/github.scm b/guix/import/github.scm
index df5f6ff32f..7136e7a34f 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -154,18 +154,16 @@ empty list."
     ;; Ask for version 3 of the API as suggested at
     ;; <https://developer.github.com/v3/>.
     `((Accept . "application/vnd.github.v3+json")
-      (user-agent . "GNU Guile")))
+      (user-agent . "GNU Guile")
+      ,@(if (%github-token)
+            `((Authorization . ,(string-append "token " (%github-token))))
+            '())))
 
-  (define (decorate url)
-    (if (%github-token)
-        (string-append url "?access_token=" (%github-token))
-        url))
-
-  (match (json-fetch (decorate release-url) #:headers headers)
+  (match (json-fetch release-url #:headers headers)
     (#()
      ;; We got the empty list, presumably because the user didn't use GitHub's
      ;; "release" mechanism, but hopefully they did use Git tags.
-     (json-fetch (decorate tag-url) #:headers headers))
+     (json-fetch tag-url #:headers headers))
     (x x)))
 
 (define (latest-released-version url package-name)
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index f13f221da9..5e00067ef8 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -201,7 +201,11 @@ way and displaying details about the channel's source code."
                    (format #t (G_ "    commit: ~a~%")
                            (if (supports-hyperlinks?)
                                (channel-commit-hyperlink channel commit)
-                               commit))))
+                               commit))
+                   (when (not (supports-hyperlinks?))
+                     (format #t (G_ "    URL: ~a~%")
+                             (channel-commit-hyperlink channel commit
+                                                       (lambda (url msg) url))))))
                 (_ #f)))
 
             ;; Show most recently installed packages last.
@@ -233,9 +237,12 @@ way and displaying details about the channel's source code."
 
 (define* (channel-commit-hyperlink channel
                                    #:optional
-                                   (commit (channel-commit channel)))
+                                   (commit (channel-commit channel))
+                                   (transformer hyperlink))
   "Return a hyperlink for COMMIT in CHANNEL, using COMMIT as the hyperlink's
-text.  The hyperlink links to a web view of COMMIT, when available."
+text.  The hyperlink links to a web view of COMMIT, when available.
+TRANSFORMER is a procedure of 2 arguments, a URI and text, and returns a
+string for display."
   (let* ((url  (channel-url channel))
          (uri  (string->uri url))
          (host (and uri (uri-host uri))))
@@ -244,7 +251,7 @@ text.  The hyperlink links to a web view of COMMIT, when available."
           (#f
            commit)
           ((_ template)
-           (hyperlink (template url commit) commit)))
+           (transformer (template url commit) commit)))
         commit)))
 
 
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index e69a3b6c97..b5e3a5630e 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -571,6 +571,8 @@ any, are available.  Raise an error if they're not."
               (and (file-system-mount? fs)
                    (not (member (file-system-type fs)
                                 %pseudo-file-system-types))
+                   ;; Don't try to validate network file systems.
+                   (not (string-prefix? "nfs" (file-system-type fs)))
                    (not (memq 'bind-mount (file-system-flags fs)))))
             file-systems))
 
diff --git a/guix/ssh.scm b/guix/ssh.scm
index 291ce20b61..56b49b177f 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -157,11 +157,16 @@ server at '~a': ~a")
           (session-set! session 'timeout timeout)
           session)
          (x
-          (disconnect! session)
-          (raise (condition
-                  (&message
-                   (message (format #f (G_ "SSH authentication failed for '~a': ~a~%")
-                                    host (get-error session)))))))))
+          (match (userauth-gssapi! session)
+            ('success
+             (session-set! session 'timeout timeout)
+             session)
+            (x
+             (disconnect! session)
+             (raise (condition
+                     (&message
+                      (message (format #f (G_ "SSH authentication failed for '~a': ~a~%")
+                                       host (get-error session)))))))))))
       (x
        ;; Connection failed or timeout expired.
        (raise (condition
diff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scm
index d42c40932c..80868692c0 100644
--- a/guix/store/deduplication.scm
+++ b/guix/store/deduplication.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Caleb Ristvedt <caleb.ristvedt@cune.org>
-;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,7 +23,7 @@
 (define-module (guix store deduplication)
   #:use-module (gcrypt hash)
   #:use-module (guix build utils)
-  #:use-module (guix base16)
+  #:use-module (guix base32)
   #:use-module (srfi srfi-11)
   #:use-module (rnrs io ports)
   #:use-module (ice-9 ftw)
@@ -140,7 +140,7 @@ PATH so that future duplicates can hardlink to it.  PATH is assumed to be
 under STORE."
   (let* ((links-directory (string-append store "/.links"))
          (link-file       (string-append links-directory "/"
-                                         (bytevector->base16-string hash))))
+                                         (bytevector->nix-base32-string hash))))
     (mkdir-p links-directory)
     (if (eq? 'directory (stat:type (lstat path)))
         ;; Can't hardlink directories, so hardlink their atoms.
diff --git a/guix/swh.scm b/guix/swh.scm
index 8bdf9965f6..ec744fed2f 100644
--- a/guix/swh.scm
+++ b/guix/swh.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -126,9 +127,16 @@
   (make-parameter "https://archive.softwareheritage.org"))
 
 (define (swh-url path . rest)
+  ;; URLs returned by the API may be relative or absolute. This has changed
+  ;; without notice before. Handle both cases by detecting whether the path
+  ;; starts with a domain.
+  (define root
+    (if (string-prefix? "/" path)
+      (string-append (%swh-base-url) path)
+      path))
+
   (define url
-    (string-append (%swh-base-url) path
-                   (string-join rest "/" 'prefix)))
+    (string-append root (string-join rest "/" 'prefix)))
 
   ;; Ensure there's a trailing slash or we get a redirect.
   (if (string-suffix? "/" url)
diff --git a/guix/ui.scm b/guix/ui.scm
index dce97fb7b9..22a6d6c8e3 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -591,7 +591,8 @@ nicely."
 \"1MiB\", to a number of bytes.  Raise an error if STR could not be
 interpreted."
   (define unit-pos
-    (string-rindex str char-set:digit))
+    (string-rindex str
+                   (char-set-union (char-set #\.) char-set:digit)))
 
   (define unit
     (and unit-pos (substring str (+ 1 unit-pos))))
@@ -1472,7 +1473,8 @@ them.  If PORT is a terminal, print at most a full screen of results."
                                  #:hyperlinks? links?
                                  #:extra-fields
                                  `((relevance . ,score)))))))
-         (if (and max-rows
+         (if (and (not (getenv "INSIDE_EMACS"))
+                  max-rows
                   (> (port-line port) first-line) ;print at least one result
                   (> (+ 4 (line-count text) (port-line port))
                      max-rows))
@@ -1636,7 +1638,7 @@ DURATION-RELATION with the current time."
     (let* ((file   (generation-file-name profile number))
            (link   (if (supports-hyperlinks?)
                        (cut file-hyperlink file <>)
-                       identity))
+                       (cut format #f (G_ "~a~%file: ~a") <> file)))
            (header (format #f (link (highlight (G_ "Generation ~a\t~a")))
                            number
                            (date->string
diff --git a/m4/guix.m4 b/m4/guix.m4
index 8be7cca54f..961ce838ac 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -142,13 +142,14 @@ dnl GUIX_CHECK_GUILE_SSH
 dnl
 dnl Check whether a recent-enough Guile-SSH is available.
 AC_DEFUN([GUIX_CHECK_GUILE_SSH], [
-  dnl Check whether 'channel-send-eof' (introduced in 0.10.2) is present.
+  dnl Check whether 'userauth-gssapi!' (introduced in 0.12.0) is present.
   AC_CACHE_CHECK([whether Guile-SSH is available and recent enough],
     [guix_cv_have_recent_guile_ssh],
     [GUILE_CHECK([retval],
       [(and (@ (ssh channel) channel-send-eof)
             (@ (ssh popen) open-remote-pipe)
-	    (@ (ssh dist node) node-eval))])
+            (@ (ssh dist node) node-eval)
+            (@ (ssh auth) userauth-gssapi!))])
      if test "$retval" = 0; then
        guix_cv_have_recent_guile_ssh="yes"
      else
diff --git a/po/doc/guix-cookbook.de.po b/po/doc/guix-cookbook.de.po
new file mode 100644
index 0000000000..4bb57d980c
--- /dev/null
+++ b/po/doc/guix-cookbook.de.po
@@ -0,0 +1,3395 @@
+# German translations for the Guix Cookbook.
+# Copyright (C) 2020 Ludovic Courtès
+# This file is distributed under the same license as the guix package.
+# Florian Pelz <pelzflorian@pelzflorian.de>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: guix 1.0.1.4876-09145-dirty\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2020-02-14 08:04+0100\n"
+"PO-Revision-Date: 2020-02-17 06:51+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:7
+msgid "@documentencoding UTF-8"
+msgstr ""
+"@documentencoding UTF-8\n"
+"@documentlanguage de\n"
+"@frenchspacing on"
+
+#. type: top
+#: doc/guix-cookbook.texi:7 doc/guix-cookbook.texi:29 doc/guix-cookbook.texi:43
+#, no-wrap
+msgid "GNU Guix Cookbook"
+msgstr "GNU-Guix-Kochbuch"
+
+#. type: copying
+#: doc/guix-cookbook.texi:14
+msgid "Copyright @copyright{} 2019 Ricardo Wurmus@* Copyright @copyright{} 2019 Efraim Flashner@* Copyright @copyright{} 2019 Pierre Neidhardt@*"
+msgstr "Copyright @copyright{} 2019 Ricardo Wurmus@* Copyright @copyright{} 2019 Efraim Flashner@* Copyright @copyright{} 2019 Pierre Neidhardt@*"
+
+#. type: copying
+#: doc/guix-cookbook.texi:21
+msgid "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is included in the section entitled ``GNU Free Documentation License''."
+msgstr "Es ist Ihnen gestattet, dieses Dokument zu vervielfältigen, weiterzugeben und/oder zu verändern, unter den Bedingungen der GNU Free Documentation License, entweder gemäß Version 1.3 der Lizenz oder (nach Ihrer Option) einer späteren Version, die von der Free Software Foundation veröffentlicht wurde, ohne unveränderliche Abschnitte, ohne vorderen Umschlagtext und ohne hinteren Umschlagtext. Eine Kopie der Lizenz finden Sie im Abschnitt mit dem Titel „GNU Free Documentation License“."
+
+#. type: dircategory
+#: doc/guix-cookbook.texi:23
+#, no-wrap
+msgid "System administration"
+msgstr "Systemadministration"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:26
+msgid "Guix cookbook: (guix-cookbook)"
+msgstr "Guix-Kochbuch: (guix-cookbook.de)"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:26
+msgid "Tutorials and examples for GNU Guix."
+msgstr "Anleitungen und Beispiele für GNU Guix."
+
+#. type: subtitle
+#: doc/guix-cookbook.texi:30
+#, no-wrap
+msgid "Tutorials and examples for using the GNU Guix Functional Package Manager"
+msgstr "Anleitungen und Beispiele, wie man den funktionalen Paketmanager GNU Guix benutzt"
+
+#. type: author
+#: doc/guix-cookbook.texi:31
+#, no-wrap
+msgid "The GNU Guix Developers"
+msgstr "Die Entwickler von GNU Guix"
+
+#. type: node
+#: doc/guix-cookbook.texi:42
+#, no-wrap
+msgid "Top"
+msgstr "Top"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:49
+msgid "This document presents tutorials and detailed examples for GNU@tie{}Guix, a functional package management tool written for the GNU system.  Please @pxref{Top,,, guix, GNU Guix reference manual} for details about the system, its API, and related concepts."
+msgstr "Dieses Dokument stellt Anleitungen und detaillierte Beispiele vor, wie man GNU@tie{}Guix benutzt, ein Werkzeug zur funktionalen Paketverwaltung, das für das GNU-System geschrieben wurde. Bitte lesen Sie Details zum System, seinen Programmierschnittstellen und ähnlichen Konzepten im @ref{Top,,, guix.de, Referenzhandbuch zu GNU Guix} nach."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:56
+msgid "If you would like to translate this document in your native language, consider joining the @uref{https://translationproject.org/domain/guix-cookbook.html, Translation Project}."
+msgstr "Wenn Sie dieses Dokument in Ihre eigene Sprache übersetzen möchten, dann sind Sie beim @uref{https://translationproject.org/domain/guix-cookbook.html, Translation Project} herzlich willkommen."
+
+#. type: chapter
+#: doc/guix-cookbook.texi:62 doc/guix-cookbook.texi:71
+#: doc/guix-cookbook.texi:87 doc/guix-cookbook.texi:88
+#, no-wrap
+msgid "Scheme tutorials"
+msgstr "Anleitungen zu Scheme"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:62
+msgid "Meet your new favorite language!"
+msgstr "Lernen Sie Ihre neue Lieblingssprache kennen!"
+
+#. type: chapter
+#: doc/guix-cookbook.texi:62 doc/guix-cookbook.texi:75
+#: doc/guix-cookbook.texi:291 doc/guix-cookbook.texi:292
+#, no-wrap
+msgid "Packaging"
+msgstr "Paketerstellung"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:62
+msgid "Packaging tutorials"
+msgstr "Anleitungen, wie man Pakete erstellt."
+
+#. type: chapter
+#: doc/guix-cookbook.texi:62 doc/guix-cookbook.texi:79
+#: doc/guix-cookbook.texi:1311 doc/guix-cookbook.texi:1312
+#, no-wrap
+msgid "System Configuration"
+msgstr "Systemkonfiguration"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:62
+msgid "Customizing the GNU System"
+msgstr "Das GNU-System anpassen."
+
+#. type: chapter
+#: doc/guix-cookbook.texi:62 doc/guix-cookbook.texi:1566
+#: doc/guix-cookbook.texi:1567
+#, no-wrap
+msgid "Advanced package management"
+msgstr "Fortgeschrittene Paketverwaltung"
+
+# angelehnt an Alle Macht dem Volke in Übersetzung von Die Mutter
+#. type: menuentry
+#: doc/guix-cookbook.texi:62
+msgid "Power to the users!"
+msgstr "Alle Macht den Nutzern!"
+
+#. type: chapter
+#: doc/guix-cookbook.texi:66 doc/guix-cookbook.texi:1964
+#: doc/guix-cookbook.texi:1965
+#, no-wrap
+msgid "Acknowledgments"
+msgstr "Danksagungen"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:66
+msgid "Thanks!"
+msgstr "Danke!"
+
+#. type: appendix
+#: doc/guix-cookbook.texi:66 doc/guix-cookbook.texi:1989
+#: doc/guix-cookbook.texi:1990
+#, no-wrap
+msgid "GNU Free Documentation License"
+msgstr "GNU-Lizenz für freie Dokumentation"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:66
+msgid "The license of this document."
+msgstr "Die Lizenz dieses Dokuments."
+
+#. type: unnumbered
+#: doc/guix-cookbook.texi:66 doc/guix-cookbook.texi:1995
+#: doc/guix-cookbook.texi:1996
+#, no-wrap
+msgid "Concept Index"
+msgstr "Konzeptverzeichnis"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:66
+msgid "Concepts."
+msgstr "Konzepte."
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:69
+msgid "--- The Detailed Node Listing ---"
+msgstr "--- Detaillierte Liste der Knoten ---"
+
+#. type: section
+#: doc/guix-cookbook.texi:73 doc/guix-cookbook.texi:101
+#: doc/guix-cookbook.texi:102
+#, no-wrap
+msgid "A Scheme Crash Course"
+msgstr "Ein Schnellkurs in Scheme"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:73
+msgid "Learn the basics of Scheme"
+msgstr "Die Grundzüge von Scheme erlernen."
+
+#. type: section
+#: doc/guix-cookbook.texi:77 doc/guix-cookbook.texi:303
+#: doc/guix-cookbook.texi:305 doc/guix-cookbook.texi:306
+#, no-wrap
+msgid "Packaging Tutorial"
+msgstr "Anleitung zum Paketeschreiben"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:77
+msgid "Let's add a package to Guix!"
+msgstr "Lasst uns ein Paket zu Guix beitragen!"
+
+#. type: section
+#: doc/guix-cookbook.texi:81 doc/guix-cookbook.texi:1323
+#: doc/guix-cookbook.texi:1325 doc/guix-cookbook.texi:1326
+#, no-wrap
+msgid "Customizing the Kernel"
+msgstr "Den Kernel anpassen"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:81
+msgid "Creating and using a custom Linux kernel"
+msgstr "Einen eigenen Linux-Kernel benutzen"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:94
+msgid "GNU@tie{}Guix is written in the general purpose programming language Scheme, and many of its features can be accessed and manipulated programmatically.  You can use Scheme to generate package definitions, to modify them, to build them, to deploy whole operating systems, etc."
+msgstr "GNU@tie{}Guix ist in Scheme geschrieben, einer für alle Anwendungszwecke geeigneten Programmiersprache, und viele Funktionalitäten von Guix können programmatisch angesteuert und verändert werden. Sie können Scheme benutzen, um Paketdefinitionen zu erzeugen, abzuändern, ganze Betriebssysteme einzuspielen etc."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:98
+msgid "Knowing the basics of how to program in Scheme will unlock many of the advanced features Guix provides --- and you don't even need to be an experienced programmer to use them!"
+msgstr "Wenn man die Grundzüge kennt, wie man in Scheme programmiert, bekommt man Zugang zu vielen der fortgeschrittenen Funktionen von Guix — und Sie müssen dazu nicht einmal ein erfahrener Programmierer sein!"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:100
+msgid "Let's get started!"
+msgstr "Legen wir los!"
+
+#. type: cindex
+#: doc/guix-cookbook.texi:104
+#, no-wrap
+msgid "Scheme, crash course"
+msgstr "Scheme, Schnellkurs"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:110
+msgid "Guix uses the Guile implementation of Scheme.  To start playing with the language, install it with @code{guix install guile} and start a @uref{https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop, REPL} by running @code{guile} from the command line."
+msgstr "Die von Guix benutzte Scheme-Implementierung nennt sich Guile. Um mit der Sprache herumspielen zu können, installieren Sie Guile mit @code{guix install guile} und starten eine interaktive Programmierumgebung (englisch @uref{https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop, REPL}), indem Sie @code{guile} auf der Befehlszeile ausführen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:113
+msgid "Alternatively you can also run @code{guix environment --ad-hoc guile -- guile} if you'd rather not have Guile installed in your user profile."
+msgstr "Alternativ können Sie auch den Befehl @code{guix environment --ad-hoc guile -- guile} ausführen, wenn Sie Guile lieber @emph{nicht} in Ihr Nutzerprofil installieren wollen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:119
+msgid "In the following examples, lines show what you would type at the REPL; lines starting with ``@result{}'' show evaluation results, while lines starting with ``@print{}'' show things that get printed.  @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}), for more details on the REPL."
+msgstr "In den folgenden Beispielen stehen die Zeilen dafür, was Sie auf der REPL eintippen; wenn eine Zeile mit „@result{}“ beginnt, zeigt sie das Ergebnis einer Auswertung, während Zeilen, die mit „@print{}“ beginnen, für eine angezeigte Ausgabe stehen. Siehe @ref{Using Guile Interactively,,, guile, GNU Guile Reference Manual} für mehr Details zur REPL."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:126
+msgid "Scheme syntax boils down to a tree of expressions (or @emph{s-expression} in Lisp lingo).  An expression can be a literal such as numbers and strings, or a compound which is a parenthesized list of compounds and literals.  @code{#t} and @code{#f} stand for the Booleans ``true'' and ``false'', respectively."
+msgstr "Die Scheme-Syntax ist an sich ein Baum von Ausdrücken (Lisp-Programmierer nennen sie @emph{symbolische Ausdrücke}, kurz @emph{S-Ausdrücke} bzw.@: englisch @emph{s-expression}). Ein solcher Ausdruck kann ein Literal sein, wie z.B.@: Zahlen oder Zeichenketten, oder er kann ein zusammengesetzter Ausdruck sein, d.h.@: eine geklammerte Liste von zusammengesetzten und literalen Ausdrücken. Dabei stehen @code{#t} und @code{#f} jeweils für die Booleschen Werte „wahr“ und „falsch“."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:128
+msgid "Examples of valid expressions:"
+msgstr "Beispiele für gültige Ausdrücke"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:132
+#, no-wrap
+msgid ""
+"\"Hello World!\"\n"
+"@result{} \"Hello World!\"\n"
+"\n"
+msgstr ""
+"\"Hallo Welt!\"\n"
+"@result{} \"Hallo Welt!\"\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:135
+#, no-wrap
+msgid ""
+"17\n"
+"@result{} 17\n"
+"\n"
+msgstr ""
+"17\n"
+"@result{} 17\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:139
+#, no-wrap
+msgid ""
+"(display (string-append \"Hello \" \"Guix\" \"\\n\"))\n"
+"@print{} Hello Guix!\n"
+"@result{} #<unspecified>\n"
+msgstr ""
+"(display (string-append \"Hallo \" \"Guix\" \"\\n\"))\n"
+"@print{} Hallo Guix!\n"
+"@result{} #<unspecified>\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:146
+msgid "This last example is a function call nested in another function call.  When a parenthesized expression is evaluated, the first term is the function and the rest are the arguments passed to the function.  Every function returns the last evaluated expression as its return value."
+msgstr "Das letzte Beispiel eben ist der Aufruf einer Funktion innerhalb eines anderen Funktionsaufrufs. Wenn ein geklammerter Ausdruck ausgewertet wird, ist der erste Term die Funktion und der Rest sind die Argumente, die an die Funktion übergeben werden. Jede Funktion liefert ihren zuletzt ausgewerteten Ausdruck als ihren Rückgabewert."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:149
+msgid "Anonymous functions are declared with the @code{lambda} term:"
+msgstr "Anonyme Funktionen werden mit dem @code{lambda}-Term deklariert:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:153
+#, no-wrap
+msgid ""
+"(lambda (x) (* x x))\n"
+"@result{} #<procedure 120e348 at <unknown port>:24:0 (x)>\n"
+msgstr ""
+"(lambda (x) (* x x))\n"
+"@result{} #<procedure 120e348 at <unknown port>:24:0 (x)>\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:158
+msgid "The above procedure returns the square of its argument.  Since everything is an expression, the @code{lambda} expression returns an anonymous procedure, which can in turn be applied to an argument:"
+msgstr "Die obige Prozedur liefert das Quadrat ihres Arguments. Weil alles ein Ausdruck ist, liefert der Ausdruck @code{lambda} eine anonyme Prozedur, die wiederum auf ein Argument angewandt werden kann:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:162
+#, no-wrap
+msgid ""
+"((lambda (x) (* x x)) 3)\n"
+"@result{} 9\n"
+msgstr ""
+"((lambda (x) (* x x)) 3)\n"
+"@result{} 9\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:166
+msgid "Anything can be assigned a global name with @code{define}:"
+msgstr "Allem kann mit @code{define} ein globaler Name zugewiesen werden:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:172
+#, no-wrap
+msgid ""
+"(define a 3)\n"
+"(define square (lambda (x) (* x x)))\n"
+"(square a)\n"
+"@result{} 9\n"
+msgstr ""
+"(define a 3)\n"
+"(define quadrat (lambda (x) (* x x)))\n"
+"(quadrat a)\n"
+"@result{} 9\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:176
+msgid "Procedures can be defined more concisely with the following syntax:"
+msgstr "Prozeduren können auch kürzer mit der folgenden Syntax definiert werden:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:179
+#, no-wrap
+msgid "(define (square x) (* x x))\n"
+msgstr "(define (quadrat x) (* x x))\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:183
+msgid "A list structure can be created with the @code{list} procedure:"
+msgstr "Eine Listenstruktur kann mit der @code{list}-Prozedur erzeugt werden:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:187
+#, no-wrap
+msgid ""
+"(list 2 a 5 7)\n"
+"@result{} (2 3 5 7)\n"
+msgstr ""
+"(list 2 a 5 7)\n"
+"@result{} (2 3 5 7)\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:194
+msgid "The @dfn{quote} disables evaluation of a parenthesized expression: the first term is not called over the other terms (@pxref{Expression Syntax, quote,, guile, GNU Guile Reference Manual}).  Thus it effectively returns a list of terms."
+msgstr "Mit dem @dfn{quote}-Zeichen wird das Auswerten eines geklammerten Ausdrucks abgeschaltet: Der erste Term wird @emph{nicht} auf den anderen Termen aufgerufen (siehe @ref{Expression Syntax, quote,, guile, GNU Guile Reference Manual}). Folglich liefert es quasi eine Liste von Termen."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:198
+#, no-wrap
+msgid ""
+"'(display (string-append \"Hello \" \"Guix\" \"\\n\"))\n"
+"@result{} (display (string-append \"Hello \" \"Guix\" \"\\n\"))\n"
+"\n"
+msgstr ""
+"'(display (string-append \"Hello \" \"Guix\" \"\\n\"))\n"
+"@result{} (display (string-append \"Hello \" \"Guix\" \"\\n\"))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:201
+#, no-wrap
+msgid ""
+"'(2 a 5 7)\n"
+"@result{} (2 a 5 7)\n"
+msgstr ""
+"'(2 a 5 7)\n"
+"@result{} (2 a 5 7)\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:207
+msgid "The @dfn{quasiquote} disables evaluation of a parenthesized expression until @dfn{unquote} (a comma) re-enables it.  Thus it provides us with fine-grained control over what is evaluated and what is not."
+msgstr "Mit einem @dfn{quasiquote}-Zeichen wird die Auswertung eines geklammerten Ausdrucks so lange abgeschaltet, bis ein @dfn{unquote} (ein Komma) sie wieder aktiviert. Wir können damit genau steuern, was ausgewertet wird und was nicht."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:211
+#, no-wrap
+msgid ""
+"`(2 a 5 7 (2 ,a 5 ,(+ a 4)))\n"
+"@result{} (2 a 5 7 (2 3 5 7))\n"
+msgstr ""
+"`(2 a 5 7 (2 ,a 5 ,(+ a 4)))\n"
+"@result{} (2 a 5 7 (2 3 5 7))\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:215
+msgid "Note that the above result is a list of mixed elements: numbers, symbols (here @code{a}) and the last element is a list itself."
+msgstr "Beachten Sie, dass obiges Ergenis eine Liste verschiedenartiger Elemente ist: Zahlen, Symbole (in diesem Fall @code{a}) und als letztes Element selbst wieder eine Liste."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:219
+msgid "Multiple variables can be named locally with @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}):"
+msgstr "Mehrere Variable können in einer lokalen Umgebung mit Bezeichnern versehen werden, indem Sie @code{let} benutzen (siehe @ref{Local Bindings,,, guile, GNU Guile Reference Manual}):"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:226
+#, no-wrap
+msgid ""
+"(define x 10)\n"
+"(let ((x 2)\n"
+"      (y 3))\n"
+"  (list x y))\n"
+"@result{} (2 3)\n"
+"\n"
+msgstr ""
+"(define x 10)\n"
+"(let ((x 2)\n"
+"      (y 3))\n"
+"  (list x y))\n"
+"@result{} (2 3)\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:229
+#, no-wrap
+msgid ""
+"x\n"
+"@result{} 10\n"
+"\n"
+msgstr ""
+"x\n"
+"@result{} 10\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:232
+#, no-wrap
+msgid ""
+"y\n"
+"@error{} In procedure module-lookup: Unbound variable: y\n"
+msgstr ""
+"y\n"
+"@error{} In procedure module-lookup: Unbound variable: y\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:236
+msgid "Use @code{let*} to allow later variable declarations to refer to earlier definitions."
+msgstr "Benutzen Sie @code{let*}, damit spätere Variablendeklarationen auf frühere verweisen können."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:242
+#, no-wrap
+msgid ""
+"(let* ((x 2)\n"
+"       (y (* x 3)))\n"
+"  (list x y))\n"
+"@result{} (2 6)\n"
+msgstr ""
+"(let* ((x 2)\n"
+"       (y (* x 3)))\n"
+"  (list x y))\n"
+"@result{} (2 6)\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:247
+msgid "The keyword syntax is @code{#:}; it is used to create unique identifiers.  @pxref{Keywords,,, guile, GNU Guile Reference Manual}."
+msgstr "Die Syntax für Schlüsselwörter ist @code{#:}. Wir benutzen sie, um eindeutige Bezeichnungen zu erzeugen. Siehe @ref{Keywords,,, guile, GNU Guile Reference Manual}."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:252
+msgid "The percentage @code{%} is typically used for read-only global variables in the build stage.  Note that it is merely a convention, like @code{_} in C.  Scheme treats @code{%} exactly the same as any other letter."
+msgstr "Das Prozentzeichen @code{%} wird in der Regel für globale Variable auf Erstellungsebene benutzt, auf die nur lesend zugegriffen werden soll. Beachten Sie, dass es sich dabei nur um eine Konvention handelt, ähnlich wie @code{_} in C. Scheme behandelt @code{%} genau wie jedes andere Zeichen."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:256
+msgid "Modules are created with @code{define-module} (@pxref{Creating Guile Modules,,, guile, GNU Guile Reference Manual}).  For instance"
+msgstr "Module werden mit Hilfe von @code{define-module} erzeugt (siehe @ref{Creating Guile Modules,,, guile, GNU Guile Reference Manual}). Zum Beispiel definiert man mit"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:262
+#, no-wrap
+msgid ""
+"(define-module (guix build-system ruby)\n"
+"  #:use-module (guix store)\n"
+"  #:export (ruby-build\n"
+"            ruby-build-system))\n"
+msgstr ""
+"(define-module (guix build-system ruby)\n"
+"  #:use-module (guix store)\n"
+"  #:export (ruby-build\n"
+"            ruby-build-system))\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:268
+msgid "defines the module @code{guix build-system ruby} which must be located in @file{guix/build-system/ruby.scm} somewhere in the Guile load path.  It depends on the @code{(guix store)} module and it exports two variables, @code{ruby-build} and @code{ruby-build-system}."
+msgstr "das Modul @code{guix build-system ruby}, das sich unter dem Pfad @file{guix/build-system/ruby.scm} innerhalb irgendeines Verzeichnisses im Guile-Ladepfad befinden muss. Es hat eine Abhängigkeit auf das Modul @code{(guix store)} und exportiert zwei seiner Variablen, @code{ruby-build} und @code{ruby-build-system}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:273
+msgid "For a more detailed introduction, check out @uref{http://www.troubleshooters.com/codecorn/scheme_guile/hello.htm, Scheme at a Glance}, by Steve Litt."
+msgstr "Für eine detailliertere Einführung können Sie einen Blick auf Steve Litts @uref{http://www.troubleshooters.com/codecorn/scheme_guile/hello.htm, Scheme at a Glance} werfen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:285
+msgid "One of the reference Scheme books is the seminal ``Structure and Interpretation of Computer Programs'', by Harold Abelson and Gerald Jay Sussman, with Julie Sussman.  You'll find a @uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html, free copy online}, together with @uref{https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/, videos of the lectures by the authors}.  The book is available in Texinfo format as the @code{sicp} Guix package.  Go ahead, run @code{guix install sicp} and start reading with @code{info sicp} (@pxref{,,, sicp, Structure and Interpretation of Computer Programs}).  An @uref{https://sarabander.github.io/sicp/, unofficial ebook is also available}."
+msgstr "Eines der Referenzbücher zu Scheme ist das einflussreiche „Structure and Interpretation of Computer Programs“, von Harold Abelson und Gerald Jay Sussman, mit Julie Sussman. Eine deutsche Übersetzung „Struktur und Interpretation von Computerprogrammen“ hat Susanne Daniels-Herold verfasst. Vom englischen Original finden Sie eine @uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html, kostenlose Ausgabe online} zusammen mit @uref{https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/, Videos der von den Autoren gehaltenen Vorlesungen}. Das Buch können Sie im Texinfo-Format über das @code{sicp}-Guix-Paket beziehen. Probieren Sie es aus: Führen Sie @code{guix install sicp} aus und fangen Sie mit dem Lesen an, indem Sie @code{info sicp} eintippen (siehe @ref{,,, sicp, Structure and Interpretation of Computer Programs}). Es gibt auch ein @uref{https://sarabander.github.io/sicp/, inoffizielles E-Book}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:288
+msgid "You'll find more books, tutorials and other resources at @url{https://schemers.org/}."
+msgstr "Sie finden noch mehr Bücher, Anleitungen und andere Ressourcen auf @url{https://schemers.org/}."
+
+#. type: cindex
+#: doc/guix-cookbook.texi:294
+#, no-wrap
+msgid "packaging"
+msgstr "Pakete schreiben"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:300
+msgid "This chapter is dedicated to teaching you how to add packages to the collection of packages that come with GNU Guix.  This involves writing package definitions in Guile Scheme, organizing them in package modules, and building them."
+msgstr "In diesem Kapitel bringen wir Ihnen bei, wie Sie Pakete zur mit GNU Guix ausgelieferten Paketsammlung beitragen. Dazu gehört, Paketdefinitionen in Guile Scheme zu schreiben, sie in Paketmodulen zu organisieren und sie zu erstellen."
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:303
+msgid "A tutorial on how to add packages to Guix."
+msgstr "Eine Anleitung, wie Sie Pakete zu Guix hinzufügen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:314
+msgid "GNU Guix stands out as the @emph{hackable} package manager, mostly because it uses @uref{https://www.gnu.org/software/guile/, GNU Guile}, a powerful high-level programming language, one of the @uref{https://en.wikipedia.org/wiki/Scheme_%28programming_language%29, Scheme} dialects from the @uref{https://en.wikipedia.org/wiki/Lisp_%28programming_language%29, Lisp family}."
+msgstr "GNU Guix zeichnet sich in erster Linie deswegen als das @emph{hackbare} Paketverwaltungswerkzeug aus, weil es mit @uref{https://www.gnu.org/software/guile/, GNU Guile} arbeitet, einer mächtigen, hochsprachlichen Programmiersprache, die einen der Dialekte von @uref{https://de.wikipedia.org/wiki/Scheme, Scheme} darstellt. Scheme wiederum gehört zur @uref{https://de.wikipedia.org/wiki/Lisp, Lisp-Familie von Programmiersprachen}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:318
+msgid "Package definitions are also written in Scheme, which empowers Guix in some very unique ways, unlike most other package managers that use shell scripts or simple languages."
+msgstr "Paketdefinitionen werden ebenso in Scheme geschrieben, wodurch Guix auf sehr einzigartige Weise mächtiger wird als die meisten anderen Paketverwaltungssysteme, die Shell-Skripte oder einfache Sprachen benutzen."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:323
+msgid "Use functions, structures, macros and all of Scheme expressiveness for your package definitions."
+msgstr "Sie können sich Funktionen, Strukturen, Makros und all die Ausdrucksstärke von Scheme für Ihre Paketdefinitionen zu Nutze machen."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:327
+msgid "Inheritance makes it easy to customize a package by inheriting from it and modifying only what is needed."
+msgstr "Durch Vererbung können Sie ohne viel Aufwand ein Paket anpassen, indem Sie von ihm erben lassen und nur das Nötige abändern."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:337
+msgid "Batch processing: the whole package collection can be parsed, filtered and processed.  Building a headless server with all graphical interfaces stripped out? It's possible.  Want to rebuild everything from source using specific compiler optimization flags? Pass the @code{#:make-flags \"...\"} argument to the list of packages.  It wouldn't be a stretch to think @uref{https://wiki.gentoo.org/wiki/USE_flag, Gentoo USE flags} here, but this goes even further: the changes don't have to be thought out beforehand by the packager, they can be @emph{programmed} by the user!"
+msgstr "Stapelverarbeitung („batch mode“) wird möglich; die ganze Paketsammlung kann analysiert, gefiltert und verarbeitet werden. Versuchen Sie, ein Serversystem ohne Bildschirm („headless“) auch tatsächlich von allen Grafikschnittstellen zu befreien? Das ist möglich. Möchten Sie alles von Neuem aus seinem Quellcode erstellen, aber mit eingeschalteten besonderen Compileroptimierungen? Übergeben Sie einfach das passende @code{#:make-flags \"...\"}-Argument an die Paketliste. Es wäre nicht übertrieben, hier an die @uref{https://wiki.gentoo.org/wiki/USE_flag, USE-Optionen von Gentoo} zu denken, aber das hier übertrifft sie: Der Paketautor muss vorher gar nicht darüber nachgedacht haben, der Nutzer kann sie selbst @emph{programmieren}!"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:343
+msgid "The following tutorial covers all the basics around package creation with Guix.  It does not assume much knowledge of the Guix system nor of the Lisp language.  The reader is only expected to be familiar with the command line and to have some basic programming knowledge."
+msgstr "Die folgende Anleitung erklärt alles Grundlegende über das Schreiben von Paketen mit Guix. Dabei setzen wir kein großes Wissen über das Guix-System oder die Lisp-Sprache voraus. Vom Leser wird nur erwartet, dass er mit der Befehlszeile vertraut ist und über grundlegende Programmierkenntnisse verfügt."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:344 doc/guix-cookbook.texi:345
+#, no-wrap
+msgid "A ``Hello World'' package"
+msgstr "Ein Hallo-Welt-Paket"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:350
+msgid "The ``Defining Packages'' section of the manual introduces the basics of Guix packaging (@pxref{Defining Packages,,, guix, GNU Guix Reference Manual}).  In the following section, we will partly go over those basics again."
+msgstr "Der Abschnitt „Pakete definieren“ im Handbuch führt in die Grundlagen des Paketschreibens für Guix ein (siehe @ref{Pakete definieren,,, guix.de, Referenzhandbuch zu GNU Guix}). Im folgenden Abschnitt werden wir diese Grundlagen teilweise rekapitulieren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:356
+msgid "GNU@tie{}Hello is a dummy project that serves as an idiomatic example for packaging.  It uses the GNU build system (@code{./configure && make && make install}).  Guix already provides a package definition which is a perfect example to start with.  You can look up its declaration with @code{guix edit hello} from the command line.  Let's see how it looks:"
+msgstr "GNU@tie{}Hello ist ein Projekt, das uns als Stellvertreter für „richtige“ Projekte und allgemeines Beispiel für das Schreiben von Paketen dient. Es verwendet das GNU-Erstellungssystem (@code{./configure && make && make install}). Guix stellt uns schon eine Paketdefinition zur Verfügung, die uns einen perfekten Ausgangspunkt bietet. Sie können sich ihre Deklaration anschauen, indem Sie @code{guix edit hello} von der Befehlszeile ausführen. Schauen wir sie uns an:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:377
+#, no-wrap
+msgid ""
+"(define-public hello\n"
+"  (package\n"
+"    (name \"hello\")\n"
+"    (version \"2.10\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                  \".tar.gz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"    (build-system gnu-build-system)\n"
+"    (synopsis \"Hello, GNU world: An example GNU package\")\n"
+"    (description\n"
+"     \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"    (home-page \"https://www.gnu.org/software/hello/\")\n"
+"    (license gpl3+)))\n"
+msgstr ""
+"(define-public hello\n"
+"  (package\n"
+"    (name \"hello\")\n"
+"    (version \"2.10\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                  \".tar.gz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"    (build-system gnu-build-system)\n"
+"    (synopsis \"Hello, GNU world: An example GNU package\")\n"
+"    (description\n"
+"     \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"    (home-page \"https://www.gnu.org/software/hello/\")\n"
+"    (license gpl3+)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:381
+msgid "As you can see, most of it is rather straightforward.  But let's review the fields together:"
+msgstr "Wie Sie sehen können, ist das meiste klar strukturiert. Aber sehen wir uns die Felder zusammen an:"
+
+#. type: item
+#: doc/guix-cookbook.texi:383
+#, no-wrap
+msgid "name"
+msgstr "name"
+
+#. type: table
+#: doc/guix-cookbook.texi:386
+msgid "The project name.  Using Scheme conventions, we prefer to keep it lower case, without underscore and using dash-separated words."
+msgstr "Der Name des Projekts. Wir halten uns an die Konventionen von Scheme und bevorzugen deshalb Kleinschreibung ohne Unterstriche, sondern mit Bindestrichen zwischen den Wörtern."
+
+#. type: item
+#: doc/guix-cookbook.texi:387
+#, no-wrap
+msgid "source"
+msgstr "source"
+
+#. type: table
+#: doc/guix-cookbook.texi:390
+msgid "This field contains a description of the source code origin.  The @code{origin} record contains these fields:"
+msgstr "Dieses Feld enthält eine Beschreibung, was der Ursprung des Quellcodes ist. Das @code{origin}-Verbundsobjekt enthält diese Felder:"
+
+#. type: item
+#: doc/guix-cookbook.texi:392
+#, no-wrap
+msgid "The method, here @code{url-fetch} to download via HTTP/FTP, but other methods"
+msgstr "Die Methode. Wir verwenden hier @code{url-fetch}, um über HTTP/FTP herunterzuladen,"
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:394
+msgid "exist, such as @code{git-fetch} for Git repositories."
+msgstr "aber es gibt auch andere Methoden wie @code{git-fetch} für Git-Repositorys."
+
+#. type: item
+#: doc/guix-cookbook.texi:394
+#, no-wrap
+msgid "The URI, which is typically some @code{https://} location for @code{url-fetch}.  Here"
+msgstr "Die URI, welche bei @code{url-fetch} normalerweise eine Ortsangabe mit @code{https://} ist."
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:397
+msgid "the special `mirror://gnu` refers to a set of well known locations, all of which can be used by Guix to fetch the source, should some of them fail."
+msgstr "In diesem Fall verweist die besondere URI ‚mirror://gnu‘ auf eine von mehreren wohlbekannten Ortsangaben, von denen Guix jede durchprobieren kann, um den Quellcode herunterzuladen, wenn es bei manchen davon nicht klappt."
+
+#. type: item
+#: doc/guix-cookbook.texi:397
+#, no-wrap
+msgid "The @code{sha256} checksum of the requested file.  This is essential to ensure"
+msgstr "Die @code{sha256}-Prüfsumme der angefragten Datei."
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:400
+msgid "the source is not corrupted.  Note that Guix works with base32 strings, hence the call to the @code{base32} function."
+msgstr "Sie ist notwendig, damit sichergestellt werden kann, dass der Quellcode nicht beschädigt ist. Beachten Sie, dass Guix mit Zeichenketten in Base32-Kodierung arbeitet, weshalb wir die @code{base32}-Funktion aufrufen."
+
+#. type: item
+#: doc/guix-cookbook.texi:402
+#, no-wrap
+msgid "build-system"
+msgstr "build-system"
+
+#. type: table
+#: doc/guix-cookbook.texi:411
+msgid "This is where the power of abstraction provided by the Scheme language really shines: in this case, the @code{gnu-build-system} abstracts away the famous @code{./configure && make && make install} shell invocations.  Other build systems include the @code{trivial-build-system} which does not do anything and requires from the packager to program all the build steps, the @code{python-build-system}, the @code{emacs-build-system}, and many more (@pxref{Build Systems,,, guix, GNU Guix Reference Manual})."
+msgstr "Hier glänzt Schemes Fähigkeit zur Abstraktion: In diesem Fall abstrahiert @code{gnu-build-system} die berühmten Schritte @code{./configure && make && make install}, die sonst in der Shell aufgerufen würden. Zu den anderen Erstellungssystemen gehören das @code{trivial-build-system}, das nichts tut und dem Paketautoren das Schreiben sämtlicher Erstellungsschritte abverlangt, das @code{python-build-system}, das @code{emacs-build-system}, und viele mehr (siehe @ref{Erstellungssysteme,,, guix.de, Referenzhandbuch zu GNU Guix})."
+
+#. type: item
+#: doc/guix-cookbook.texi:412
+#, no-wrap
+msgid "synopsis"
+msgstr "synopsis"
+
+#. type: table
+#: doc/guix-cookbook.texi:415
+msgid "It should be a concise summary of what the package does.  For many packages a tagline from the project's home page can be used as the synopsis."
+msgstr "Die Zusammenfassung. Sie sollte eine knappe Beschreibung sein, was das Paket tut. Für viele Pakete findet sich auf der Homepage ein Einzeiler, der als Zusammenfassung benutzt werden kann."
+
+#. type: item
+#: doc/guix-cookbook.texi:416
+#, no-wrap
+msgid "description"
+msgstr "description"
+
+#. type: table
+#: doc/guix-cookbook.texi:419
+msgid "Same as for the synopsis, it's fine to re-use the project description from the homepage.  Note that Guix uses Texinfo syntax."
+msgstr "Genau wie bei der Zusammenfassung ist es in Ordnung, die Beschreibung des Projekts für das Paket wiederzuverwenden. Beachten Sie, dass Guix dafür Texinfo-Syntax verlangt."
+
+#. type: item
+#: doc/guix-cookbook.texi:420
+#, no-wrap
+msgid "home-page"
+msgstr "home-page"
+
+#. type: table
+#: doc/guix-cookbook.texi:422
+msgid "Use HTTPS if available."
+msgstr "Hier soll möglichst HTTPS benutzt werden."
+
+#. type: item
+#: doc/guix-cookbook.texi:423
+#, no-wrap
+msgid "license"
+msgstr "license"
+
+#. type: table
+#: doc/guix-cookbook.texi:426
+msgid "See @code{guix/licenses.scm} in the project source for a full list of available licenses."
+msgstr "Siehe die vollständige Liste verfügbarer Lizenzen in @code{guix/licenses.scm} im Guix-Quellcode."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:430
+msgid "Time to build our first package! Nothing fancy here for now: we will stick to a dummy @code{my-hello}, a copy of the above declaration."
+msgstr "Es wird Zeit, unser erstes Paket zu schreiben! Aber noch nichts tolles, wir bleiben bei einem Paket @code{my-hello} stelltvertretend für „richtige“ Software; es ist eine Kopie obiger Deklaration."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:434
+msgid "As with the ritualistic ``Hello World'' taught with most programming languages, this will possibly be the most ``manual'' approach.  We will work out an ideal setup later; for now we will go the simplest route."
+msgstr "Genau wie beim Ritual, Neulinge in Programmiersprachen „Hallo Welt“ schreiben zu lassen, fangen wir mit der vielleicht „arbeitsintensivsten“ Herangehensweise ans Paketeschreiben an. Wir kümmern uns später darum, wie man am besten an Paketen arbeitet; erst einmal nehmen wir den einfachsten Weg."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:436
+msgid "Save the following to a file @file{my-hello.scm}."
+msgstr "Speichern Sie den folgenden Code in eine Datei @file{my-hello.scm}."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:442
+#, no-wrap
+msgid ""
+"(use-modules (guix packages)\n"
+"             (guix download)\n"
+"             (guix build-system gnu)\n"
+"             (guix licenses))\n"
+"\n"
+msgstr ""
+"(use-modules (guix packages)\n"
+"             (guix download)\n"
+"             (guix build-system gnu)\n"
+"             (guix licenses))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:461
+#, no-wrap
+msgid ""
+"(package\n"
+"  (name \"my-hello\")\n"
+"  (version \"2.10\")\n"
+"  (source (origin\n"
+"            (method url-fetch)\n"
+"            (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                \".tar.gz\"))\n"
+"            (sha256\n"
+"             (base32\n"
+"              \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"  (build-system gnu-build-system)\n"
+"  (synopsis \"Hello, Guix world: An example custom Guix package\")\n"
+"  (description\n"
+"   \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"  (home-page \"https://www.gnu.org/software/hello/\")\n"
+"  (license gpl3+))\n"
+msgstr ""
+"(package\n"
+"  (name \"my-hello\")\n"
+"  (version \"2.10\")\n"
+"  (source (origin\n"
+"            (method url-fetch)\n"
+"            (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                \".tar.gz\"))\n"
+"            (sha256\n"
+"             (base32\n"
+"              \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"  (build-system gnu-build-system)\n"
+"  (synopsis \"Hello, Guix world: An example custom Guix package\")\n"
+"  (description\n"
+"   \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"  (home-page \"https://www.gnu.org/software/hello/\")\n"
+"  (license gpl3+))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:464
+msgid "We will explain the extra code in a moment."
+msgstr "Wir erklären den zusätzlichen Code in Kürze."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:471
+msgid "Feel free to play with the different values of the various fields.  If you change the source, you'll need to update the checksum.  Indeed, Guix refuses to build anything if the given checksum does not match the computed checksum of the source code.  To obtain the correct checksum of the package declaration, we need to download the source, compute the sha256 checksum and convert it to base32."
+msgstr "Spielen Sie ruhig mit unterschiedlichen Werten für die verschiedenen Felder herum. Wenn Sie den Quellort (die „source“) ändern, müssen Sie die Prüfsumme aktualisieren. Tatsächlich weigert sich Guix, etwas zu erstellen, wenn die angegebene Prüfsumme nicht zu der berechneten Prüfsumme des Quellcodes passt. Um die richtige Prüfsumme für die Paketdeklaration zu finden, müssen wir den Quellcode herunterladen, die SHA256-Summe davon berechnen und sie in Base32 umwandeln."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:474
+msgid "Thankfully, Guix can automate this task for us; all we need is to provide the URI:"
+msgstr "Glücklicherweise kann Guix diese Aufgabe automatisieren; wir müssen lediglich die URI übergeben."
+
+#. type: example
+#: doc/guix-cookbook.texi:478
+#, no-wrap
+msgid ""
+"$ guix download mirror://gnu/hello/hello-2.10.tar.gz\n"
+"\n"
+msgstr ""
+"$ guix download mirror://gnu/hello/hello-2.10.tar.gz\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:485
+#, no-wrap
+msgid ""
+"Starting download of /tmp/guix-file.JLYgL7\n"
+"From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz...\n"
+"following redirection to `https://mirror.ibcp.fr/pub/gnu/hello/hello-2.10.tar.gz'...\n"
+" …10.tar.gz  709KiB                                 2.5MiB/s 00:00 [##################] 100.0%\n"
+"/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz\n"
+"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\n"
+msgstr ""
+"Starting download of /tmp/guix-file.JLYgL7\n"
+"From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz...\n"
+"following redirection to `https://mirror.ibcp.fr/pub/gnu/hello/hello-2.10.tar.gz'...\n"
+" …10.tar.gz  709KiB                                 2.5MiB/s 00:00 [##################] 100.0%\n"
+"/gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz\n"
+"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:490
+msgid "In this specific case the output tells us which mirror was chosen.  If the result of the above command is not the same as in the above snippet, update your @code{my-hello} declaration accordingly."
+msgstr "In diesem speziellen Fall sagt uns die Ausgabe, welcher Spiegelserver ausgewählt wurde. Wenn das Ergebnis des obigen Befehls nicht dasselbe ist wie im Codeschnipsel, dann aktualisieren Sie Ihre @code{my-hello}-Deklaration entsprechend."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:494
+msgid "Note that GNU package tarballs come with an OpenPGP signature, so you should definitely check the signature of this tarball with `gpg` to authenticate it before going further:"
+msgstr "Beachten Sie, dass Tarball-Archive von GNU-Paketen mit einer OpenPGP-Signatur ausgeliefert werden, deshalb sollten Sie mit Sicherheit die Signatur dieses Tarballs mit „gpg“ überprüfen, um ihn zu authentifizieren, bevor Sie weitermachen."
+
+#. type: example
+#: doc/guix-cookbook.texi:498
+#, no-wrap
+msgid ""
+"$ guix download mirror://gnu/hello/hello-2.10.tar.gz.sig\n"
+"\n"
+msgstr ""
+"$ guix download mirror://gnu/hello/hello-2.10.tar.gz.sig\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:513
+#, no-wrap
+msgid ""
+"Starting download of /tmp/guix-file.03tFfb\n"
+"From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz.sig...\n"
+"following redirection to `https://ftp.igh.cnrs.fr/pub/gnu/hello/hello-2.10.tar.gz.sig'...\n"
+" ….tar.gz.sig  819B                                                                                                                       1.2MiB/s 00:00 [##################] 100.0%\n"
+"/gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig\n"
+"0q0v86n3y38z17rl146gdakw9xc4mcscpk8dscs412j22glrv9jf\n"
+"$ gpg --verify /gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz\n"
+"gpg: Signature made Sun 16 Nov 2014 01:08:37 PM CET\n"
+"gpg:                using RSA key A9553245FDE9B739\n"
+"gpg: Good signature from \"Sami Kerola <kerolasa@@iki.fi>\" [unknown]\n"
+"gpg:                 aka \"Sami Kerola (http://www.iki.fi/kerolasa/) <kerolasa@@iki.fi>\" [unknown]\n"
+"gpg: WARNING: This key is not certified with a trusted signature!\n"
+"gpg:          There is no indication that the signature belongs to the owner.\n"
+"Primary key fingerprint: 8ED3 96E3 7E38 D471 A005  30D3 A955 3245 FDE9 B739\n"
+msgstr ""
+"Starting download of /tmp/guix-file.03tFfb\n"
+"From https://ftpmirror.gnu.org/gnu/hello/hello-2.10.tar.gz.sig...\n"
+"following redirection to `https://ftp.igh.cnrs.fr/pub/gnu/hello/hello-2.10.tar.gz.sig'...\n"
+" ….tar.gz.sig  819B                                                                                                                       1.2MiB/s 00:00 [##################] 100.0%\n"
+"/gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig\n"
+"0q0v86n3y38z17rl146gdakw9xc4mcscpk8dscs412j22glrv9jf\n"
+"$ gpg --verify /gnu/store/rzs8wba9ka7grrmgcpfyxvs58mly0sx6-hello-2.10.tar.gz.sig /gnu/store/hbdalsf5lpf01x4dcknwx6xbn6n5km6k-hello-2.10.tar.gz\n"
+"gpg: Signatur vom So 16 Nov 2014 13:08:37 CET\n"
+"gpg:                mittels RSA-Schlüssel A9553245FDE9B739\n"
+"gpg: Korrekte Signatur von \"Sami Kerola (https://www.iki.fi/kerolasa/) <kerolasa@@iki.fi>\" [unbekannt]\n"
+"gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!\n"
+"gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.\n"
+"Haupt-Fingerabdruck  = 8ED3 96E3 7E38 D471 A005  30D3 A955 3245 FDE9 B739\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:516
+msgid "You can then happily run"
+msgstr "Sie können dann unbesorgt das hier ausführen:"
+
+#. type: example
+#: doc/guix-cookbook.texi:520
+#, no-wrap
+msgid "$ guix package --install-from-file=my-hello.scm\n"
+msgstr "$ guix package --install-from-file=my-hello.scm\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:523
+msgid "You should now have @code{my-hello} in your profile!"
+msgstr "Nun sollte @code{my-hello} in Ihrem Profil enthalten sein!"
+
+#. type: example
+#: doc/guix-cookbook.texi:529
+#, no-wrap
+msgid ""
+"$ guix package --list-installed=my-hello\n"
+"my-hello\t2.10\tout\n"
+"/gnu/store/f1db2mfm8syb8qvc357c53slbvf1g9m9-my-hello-2.10\n"
+msgstr ""
+"$ guix package --list-installed=my-hello\n"
+"my-hello\t2.10\tout\n"
+"/gnu/store/f1db2mfm8syb8qvc357c53slbvf1g9m9-my-hello-2.10\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:534
+msgid "We've gone as far as we could without any knowledge of Scheme.  Before moving on to more complex packages, now is the right time to brush up on your Scheme knowledge.  @pxref{A Scheme Crash Course} to get up to speed."
+msgstr "Wir sind so weit gekommen, wie es ohne Scheme-Kenntnisse möglich ist. Bevor wir mit komplexeren Paketen weitermachen, ist jetzt der Zeitpunkt gekommen, Ihr Wissen über Scheme zu entstauben. Siehe @ref{Ein Schnellkurs in Scheme} für eine Auffrischung."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:535 doc/guix-cookbook.texi:536
+#, no-wrap
+msgid "Setup"
+msgstr "Herangehensweisen"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:541
+msgid "In the rest of this chapter we will rely on some basic Scheme programming knowledge.  Now let's detail the different possible setups for working on Guix packages."
+msgstr "Im Rest dieses Kapitels setzen wir ein paar grundlegende Scheme-Programmierkenntnisse voraus. Wir wollen uns nun verschiedene mögliche Herangehensweisen anschauen, wie man an Guix-Paketen arbeiten kann."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:543
+msgid "There are several ways to set up a Guix packaging environment."
+msgstr "Es gibt mehrere Arten, eine Umgebung zum Paketeschreiben aufzusetzen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:546
+msgid "We recommend you work directly on the Guix source checkout since it makes it easier for everyone to contribute to the project."
+msgstr "Unsere Empfehlung ist, dass Sie direkt am Checkout des Guix-Quellcodes arbeiten, weil es dann für alle einfacher ist, zu Guix beizutragen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:548
+msgid "But first, let's look at other possibilities."
+msgstr "Werfen wir aber zunächst einen Blick auf andere Möglichkeiten."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:549 doc/guix-cookbook.texi:550
+#, no-wrap
+msgid "Local file"
+msgstr "Lokale Datei"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:555
+msgid "This is what we previously did with @samp{my-hello}.  With the Scheme basics we've covered, we are now able to explain the leading chunks.  As stated in @code{guix package --help}:"
+msgstr "Diese Methode haben wir zuletzt für @samp{my-hello} benutzt. Jetzt nachdem wir uns mit den Scheme-Grundlagen befasst haben, können wir uns den Code am Anfang erklären. @code{guix package --help} sagt uns:"
+
+#. type: example
+#: doc/guix-cookbook.texi:560
+#, no-wrap
+msgid ""
+"  -f, --install-from-file=FILE\n"
+"                         install the package that the code within FILE\n"
+"                         evaluates to\n"
+msgstr ""
+"  -f, --install-from-file=DATEI\n"
+"                         das Paket installieren, zu dem der Code in der DATEI\n"
+"                           ausgewertet wird\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:564
+msgid "Thus the last expression @emph{must} return a package, which is the case in our earlier example."
+msgstr "Daher @emph{muss} der letzte Ausdruck ein Paket liefern, was im vorherigen Beispiel der Fall ist."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:568
+msgid "The @code{use-modules} expression tells which of the modules we need in the file.  Modules are a collection of values and procedures.  They are commonly called ``libraries'' or ``packages'' in other programming languages."
+msgstr "Der Ausdruck @code{use-modules} sagt aus, welche Module in der Datei gebraucht werden. Module sind eine Sammlung aus Werten und Prozeduren. In anderen Programmiersprachen werden sie oft „Bibliotheken“ oder „Pakete“ genannt."
+
+#. type: node
+#: doc/guix-cookbook.texi:569
+#, no-wrap
+msgid "@samp{GUIX_PACKAGE_PATH}"
+msgstr "@samp{GUIX_PACKAGE_PATH}"
+
+#. type: samp{#1}
+#: doc/guix-cookbook.texi:570
+#, no-wrap
+msgid "GUIX_PACKAGE_PATH"
+msgstr "GUIX_PACKAGE_PATH"
+
+#. type: emph{#1}
+#: doc/guix-cookbook.texi:574
+msgid "Note: Starting from Guix 0.16, the more flexible Guix @dfn{channels} are the preferred way and supersede @samp{GUIX_PACKAGE_PATH}.  See next section."
+msgstr "Anmerkung: Seit Guix 0.16 sind die vielseitigeren @dfn{Kanäle} von Guix die bevorzugte Wahl und sie lösen den @samp{GUIX_PACKAGE_PATH} ab. Siehe den nächsten Abschnitt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:578
+msgid "It can be tedious to specify the file from the command line instead of simply calling @code{guix package --install my-hello} as you would do with the official packages."
+msgstr "Es kann mühsam sein, die Datei auf der Befehlszeile anzugeben, statt einfach @code{guix package --install my-hello} aufzurufen, wie man es bei den offiziellen Paketen tun würde."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:581
+msgid "Guix makes it possible to streamline the process by adding as many ``package declaration directories'' as you want."
+msgstr "Guix ermöglicht es, den Prozess zu optimieren, indem man so viele „Paketdeklarationsverzeichnisse“, wie man will, hinzufügt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:584
+msgid "Create a directory, say @samp{~./guix-packages} and add it to the @samp{GUIX_PACKAGE_PATH} environment variable:"
+msgstr "Erzeugen Sie ein Verzeichnis, beispielsweise @samp{~./guix-packages}, und fügen Sie es zur Umgebungsvariablen @samp{GUIX_PACKAGE_PATH} hinzu:"
+
+#. type: example
+#: doc/guix-cookbook.texi:588
+#, no-wrap
+msgid ""
+"$ mkdir ~/guix-packages\n"
+"$ export GUIX_PACKAGE_PATH=~/guix-packages\n"
+msgstr ""
+"$ mkdir ~/guix-packages\n"
+"$ export GUIX_PACKAGE_PATH=~/guix-packages\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:591
+msgid "To add several directories, separate them with a colon (@code{:})."
+msgstr "Um mehrere Verzeichnisse hinzuzufügen, trennen Sie diese ab durch einen Doppelpunkt (@code{:})."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:593
+msgid "Our previous @samp{my-hello} needs some adjustments though:"
+msgstr "Unser @samp{my-hello} von vorher braucht zudem ein paar Anpassungen:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:600
+#, no-wrap
+msgid ""
+"(define-module (my-hello)\n"
+"  #:use-module (guix licenses)\n"
+"  #:use-module (guix packages)\n"
+"  #:use-module (guix build-system gnu)\n"
+"  #:use-module (guix download))\n"
+"\n"
+msgstr ""
+"(define-module (my-hello)\n"
+"  #:use-module (guix licenses)\n"
+"  #:use-module (guix packages)\n"
+"  #:use-module (guix build-system gnu)\n"
+"  #:use-module (guix download))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:620
+#, no-wrap
+msgid ""
+"(define-public my-hello\n"
+"  (package\n"
+"    (name \"my-hello\")\n"
+"    (version \"2.10\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                  \".tar.gz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"    (build-system gnu-build-system)\n"
+"    (synopsis \"Hello, Guix world: An example custom Guix package\")\n"
+"    (description\n"
+"     \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"    (home-page \"https://www.gnu.org/software/hello/\")\n"
+"    (license gpl3+)))\n"
+msgstr ""
+"(define-public my-hello\n"
+"  (package\n"
+"    (name \"my-hello\")\n"
+"    (version \"2.10\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnu/hello/hello-\" version\n"
+"                                  \".tar.gz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i\"))))\n"
+"    (build-system gnu-build-system)\n"
+"    (synopsis \"Hello, Guix world: An example custom Guix package\")\n"
+"    (description\n"
+"     \"GNU Hello prints the message \\\"Hello, world!\\\" and then exits.  It\n"
+"serves as an example of standard GNU coding practices.  As such, it supports\n"
+"command-line arguments, multiple languages, and so on.\")\n"
+"    (home-page \"https://www.gnu.org/software/hello/\")\n"
+"    (license gpl3+)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:626
+msgid "Note that we have assigned the package value to an exported variable name with @code{define-public}.  This is effectively assigning the package to the @code{my-hello} variable so that it can be referenced, among other as dependency of other packages."
+msgstr "Beachten Sie, dass wir den Paketwert einer exportierten Variablen mit @code{define-public} zugewiesen haben. Das bedeutet, das Paket wird einer Variablen @code{my-hello} zugewiesen, damit darauf verwiesen werden kann. Unter anderem kann es dadurch als Abhängigkeit anderer Pakete verwendet werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:631
+msgid "If you use @code{guix package --install-from-file=my-hello.scm} on the above file, it will fail because the last expression, @code{define-public}, does not return a package.  If you want to use @code{define-public} in this use-case nonetheless, make sure the file ends with an evaluation of @code{my-hello}:"
+msgstr "Wenn Sie @code{guix package --install-from-file=my-hello.scm} auf der obigen Datei aufrufen, geht es schief, weil der letzte Ausdruck, @code{define-public}, kein Paket zurückliefert. Wenn Sie trotzdem @code{define-public} für jene Herangehensweise verwenden möchten, stellen Sie sicher, dass am Ende der Datei eine Auswertung von @code{my-hello} steht:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:637
+#, no-wrap
+msgid ""
+"; ...\n"
+"(define-public my-hello\n"
+"  ; ...\n"
+"  )\n"
+"\n"
+msgstr ""
+"; …\n"
+"(define-public my-hello\n"
+"  ; …\n"
+"  )\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:639
+#, no-wrap
+msgid "my-hello\n"
+msgstr "my-hello\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:642
+msgid "This last example is not very typical."
+msgstr "Meistens tut man das aber nicht."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:645
+msgid "Now @samp{my-hello} should be part of the package collection like all other official packages.  You can verify this with:"
+msgstr "@samp{my-hello} sollte nun Teil der Paketsammlung sein, genau wie all die anderen, offiziellen Pakete. Sie können das so ausprobieren:"
+
+#. type: example
+#: doc/guix-cookbook.texi:648
+#, no-wrap
+msgid "$ guix package --show=my-hello\n"
+msgstr "$ guix package --show=my-hello\n"
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:650 doc/guix-cookbook.texi:651
+#, no-wrap
+msgid "Guix channels"
+msgstr "Guix-Kanäle"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:657
+msgid "Guix 0.16 features channels, which is very similar to @samp{GUIX_PACKAGE_PATH} but provides better integration and provenance tracking.  Channels are not necessarily local, they can be maintained as a public Git repository for instance.  Of course, several channels can be used at the same time."
+msgstr "Guix 0.16 hat Kanäle eingeführt, die sehr ähnlich zu @samp{GUIX_PACKAGE_PATH} sind, sich aber besser integrieren und Provenienzverfolgung ermöglichen. Kanäle befinden sich nicht unbedingt auf einem lokalen Rechner, sie können zum Beispiel auch anderen als öffentliches Git-Repository angeboten werden. Natürlich können zur selben Zeit mehrere Kanäle benutzt werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:659
+msgid "@xref{Channels,,, guix, GNU Guix Reference Manual} for setup details."
+msgstr "Siehe @ref{Kanäle,,, guix.de, Referenzhandbuch zu GNU Guix} für Details zu deren Einrichtung."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:660 doc/guix-cookbook.texi:661
+#, no-wrap
+msgid "Direct checkout hacking"
+msgstr "Direkt am Checkout hacken"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:666
+msgid "Working directly on the Guix project is recommended: it reduces the friction when the time comes to submit your changes upstream to let the community benefit from your hard work!"
+msgstr "Es wird empfohlen, direkt am Code des Guix-Projekts zu arbeiten, weil Ihre Änderungen dann später mit weniger Schwierigkeiten bei uns eingereicht werden können, damit Ihre harte Arbeit der Gemeinschaft nützt!"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:672
+msgid "Unlike most software distributions, the Guix repository holds in one place both the tooling (including the package manager) and the package definitions.  This choice was made so that it would give developers the flexibility to modify the API without breakage by updating all packages at the same time.  This reduces development inertia."
+msgstr "Anders als die meisten Software-Distributionen werden bei Guix sowohl Werkzeuge (einschließlich des Paketverwaltungsprogramms) als auch die Paketdefinitionen in einem Repository gespeichert. Der Grund für diese Entscheidung war, dass Entwickler die Freiheit haben sollten, die Programmierschnittstelle (API) zu ändern, ohne Inkompatibilitäten einzuführen, indem alle Pakete gleichzeitig mit der API aktualisiert werden. Dadurch wird die Entwicklung weniger träge."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:674
+msgid "Check out the official @uref{https://git-scm.com/, Git} repository:"
+msgstr "Legen Sie ein Checkout des offiziellen @uref{https://git-scm.com/, Git-Repositorys} an:"
+
+#. type: example
+#: doc/guix-cookbook.texi:677
+#, no-wrap
+msgid "$ git clone https://git.savannah.gnu.org/git/guix.git\n"
+msgstr "$ git clone https://git.savannah.gnu.org/git/guix.git\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:681
+msgid "In the rest of this article, we use @samp{$GUIX_CHECKOUT} to refer to the location of the checkout."
+msgstr "Im Rest dieses Artikels schreiben wir @samp{$GUIX_CHECKOUT}, wenn wir den Ort meinen, an dem das Checkout gespeichert ist."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:685
+msgid "Follow the instructions in the manual (@pxref{Contributing,,, guix, GNU Guix Reference Manual}) to set up the repository environment."
+msgstr "Folgen Sie den Anweisungen im Handbuch (siehe (@ref{Mitwirken,,, guix.de, Referenzhandbuch zu GNU Guix}), um die nötige Umgebung für die Nutzung des Repositorys herzustellen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:688
+msgid "Once ready, you should be able to use the package definitions from the repository environment."
+msgstr "Sobald sie hergestellt wurde, sollten Sie die Paketdefinitionen aus der Repository-Umgebung benutzen können."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:690
+msgid "Feel free to edit package definitions found in @samp{$GUIX_CHECKOUT/gnu/packages}."
+msgstr "Versuchen Sie sich ruhig daran, die Paketdefinitionen zu editieren, die Sie in @samp{$GUIX_CHECKOUT/gnu/packages} finden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:694
+msgid "The @samp{$GUIX_CHECKOUT/pre-inst-env} script lets you use @samp{guix} over the package collection of the repository (@pxref{Running Guix Before It Is Installed,,, guix, GNU Guix Reference Manual})."
+msgstr "Das Skript @samp{$GUIX_CHECKOUT/pre-inst-env} ermöglicht es Ihnen, @samp{guix} auf der Paketsammlung des Repositorys aufzurufen (siehe @ref{Guix vor der Installation ausführen,,, guix.de, Referenzhandbuch zu GNU Guix})."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:698
+msgid "Search packages, such as Ruby:"
+msgstr "So suchen Sie Pakete, z.B.@: Ruby:"
+
+#. type: example
+#: doc/guix-cookbook.texi:705
+#, no-wrap
+msgid ""
+"  $ cd $GUIX_CHECKOUT\n"
+"  $ ./pre-inst-env guix package --list-available=ruby\n"
+"      ruby    1.8.7-p374      out     gnu/packages/ruby.scm:119:2\n"
+"      ruby    2.1.6   out     gnu/packages/ruby.scm:91:2\n"
+"      ruby    2.2.2   out     gnu/packages/ruby.scm:39:2\n"
+msgstr ""
+"  $ cd $GUIX_CHECKOUT\n"
+"  $ ./pre-inst-env guix package --list-available=ruby\n"
+"      ruby    1.8.7-p374      out     gnu/packages/ruby.scm:119:2\n"
+"      ruby    2.1.6   out     gnu/packages/ruby.scm:91:2\n"
+"      ruby    2.2.2   out     gnu/packages/ruby.scm:39:2\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:709
+msgid "Build a package, here Ruby version 2.1:"
+msgstr "Erstellen Sie ein Paket, z.B.@: Ruby in Version 2.1:"
+
+#. type: example
+#: doc/guix-cookbook.texi:713
+#, no-wrap
+msgid ""
+"  $ ./pre-inst-env guix build --keep-failed ruby@@2.1\n"
+"  /gnu/store/c13v73jxmj2nir2xjqaz5259zywsa9zi-ruby-2.1.6\n"
+msgstr ""
+"  $ ./pre-inst-env guix build --keep-failed ruby@@2.1\n"
+"  /gnu/store/c13v73jxmj2nir2xjqaz5259zywsa9zi-ruby-2.1.6\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:717
+msgid "Install it to your user profile:"
+msgstr "Installieren Sie es in Ihr Profil:"
+
+#. type: example
+#: doc/guix-cookbook.texi:720
+#, no-wrap
+msgid "  $ ./pre-inst-env guix package --install ruby@@2.1\n"
+msgstr "  $ ./pre-inst-env guix package --install ruby@@2.1\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:724
+msgid "Check for common mistakes:"
+msgstr "Prüfen Sie auf häufige Fehler:"
+
+#. type: example
+#: doc/guix-cookbook.texi:727
+#, no-wrap
+msgid "  $ ./pre-inst-env guix lint ruby@@2.1\n"
+msgstr "  $ ./pre-inst-env guix lint ruby@@2.1\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:732
+msgid "Guix strives at maintaining a high packaging standard; when contributing to the Guix project, remember to"
+msgstr "Guix ist bestrebt, einen hohen Standard an seine Pakete anzusetzen. Wenn Sie Beiträge zum Guix-Projekt leisten,"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:736
+msgid "follow the coding style (@pxref{Coding Style,,, guix, GNU Guix Reference Manual}),"
+msgstr "schreiben Sie Ihren Code im Stil von Guix (siehe @ref{Programmierstil,,, guix.de, Referenzhandbuch zu GNU Guix})"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:738
+msgid "and review the check list from the manual (@pxref{Submitting Patches,,, guix, GNU Guix Reference Manual})."
+msgstr "und schauen Sie sich die Kontrollliste aus dem Handbuch (siehe @ref{Einreichen von Patches,,, guix.de, Referenzhandbuch zu GNU Guix}) noch einmal an."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:742
+msgid "Once you are happy with the result, you are welcome to send your contribution to make it part of Guix.  This process is also detailed in the manual.  (@pxref{Contributing,,, guix, GNU Guix Reference Manual})"
+msgstr "Sobald Sie mit dem Ergebnis zufrieden sind, freuen wir uns, wenn Sie Ihren Beitrag an uns schicken, damit wir ihn in Guix aufnehmen. Dieser Prozess wird auch im Handbuch beschrieben (siehe @ref{Mitwirken,,, guix.de, Referenzhandbuch zu GNU Guix})<."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:745
+msgid "It's a community effort so the more join in, the better Guix becomes!"
+msgstr "Es handelt sich um eine gemeinschaftliche Arbeit, je mehr also mitmachen, desto besser wird Guix!"
+
+#. type: subsection
+#: doc/guix-cookbook.texi:746 doc/guix-cookbook.texi:747
+#, no-wrap
+msgid "Extended example"
+msgstr "Erweitertes Beispiel"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:752
+msgid "The above ``Hello World'' example is as simple as it goes.  Packages can be more complex than that and Guix can handle more advanced scenarios.  Let's look at another, more sophisticated package (slightly modified from the source):"
+msgstr "Einfacher als obiges Hallo-Welt-Beispiel wird es nicht. Pakete können auch komplexer als das sein und Guix eignet sich für fortgeschrittenere Szenarien. Schauen wir uns ein anderes, umfangreicheres Paket an (leicht modifiziert gegenüber Guix’ Quellcode):"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:766
+#, no-wrap
+msgid ""
+"(define-module (gnu packages version-control)\n"
+"  #:use-module ((guix licenses) #:prefix license:)\n"
+"  #:use-module (guix utils)\n"
+"  #:use-module (guix packages)\n"
+"  #:use-module (guix git-download)\n"
+"  #:use-module (guix build-system cmake)\n"
+"  #:use-module (gnu packages ssh)\n"
+"  #:use-module (gnu packages web)\n"
+"  #:use-module (gnu packages pkg-config)\n"
+"  #:use-module (gnu packages python)\n"
+"  #:use-module (gnu packages compression)\n"
+"  #:use-module (gnu packages tls))\n"
+"\n"
+msgstr ""
+"(define-module (gnu packages version-control)\n"
+"  #:use-module ((guix licenses) #:prefix license:)\n"
+"  #:use-module (guix utils)\n"
+"  #:use-module (guix packages)\n"
+"  #:use-module (guix git-download)\n"
+"  #:use-module (guix build-system cmake)\n"
+"  #:use-module (gnu packages ssh)\n"
+"  #:use-module (gnu packages web)\n"
+"  #:use-module (gnu packages pkg-config)\n"
+"  #:use-module (gnu packages python)\n"
+"  #:use-module (gnu packages compression)\n"
+"  #:use-module (gnu packages tls))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:826
+#, no-wrap
+msgid ""
+"(define-public my-libgit2\n"
+"  (let ((commit \"e98d0a37c93574d2c6107bf7f31140b548c6a7bf\")\n"
+"        (revision \"1\"))\n"
+"    (package\n"
+"      (name \"my-libgit2\")\n"
+"      (version (git-version \"0.26.6\" revision commit))\n"
+"      (source (origin\n"
+"                (method git-fetch)\n"
+"                (uri (git-reference\n"
+"                      (url \"https://github.com/libgit2/libgit2/\")\n"
+"                      (commit commit)))\n"
+"                (file-name (git-file-name name version))\n"
+"                (sha256\n"
+"                 (base32\n"
+"                  \"17pjvprmdrx4h6bb1hhc98w9qi6ki7yl57f090n9kbhswxqfs7s3\"))\n"
+"                (patches (search-patches \"libgit2-mtime-0.patch\"))\n"
+"                (modules '((guix build utils)))\n"
+"                (snippet '(begin\n"
+"                            ;; Remove bundled software.\n"
+"                            (delete-file-recursively \"deps\")\n"
+"                            #t))))\n"
+"      (build-system cmake-build-system)\n"
+"      (outputs '(\"out\" \"debug\"))\n"
+"      (arguments\n"
+"       `(#:tests? #t                            ; Run the test suite (this is the default)\n"
+"         #:configure-flags '(\"-DUSE_SHA1DC=ON\") ; SHA-1 collision detection\n"
+"         #:phases\n"
+"         (modify-phases %standard-phases\n"
+"           (add-after 'unpack 'fix-hardcoded-paths\n"
+"             (lambda _\n"
+"               (substitute* \"tests/repo/init.c\"\n"
+"                 ((\"#!/bin/sh\") (string-append \"#!\" (which \"sh\"))))\n"
+"               (substitute* \"tests/clar/fs.h\"\n"
+"                 ((\"/bin/cp\") (which \"cp\"))\n"
+"                 ((\"/bin/rm\") (which \"rm\")))\n"
+"               #t))\n"
+"           ;; Run checks more verbosely.\n"
+"           (replace 'check\n"
+"             (lambda _ (invoke \"./libgit2_clar\" \"-v\" \"-Q\")))\n"
+"           (add-after 'unpack 'make-files-writable-for-tests\n"
+"               (lambda _ (for-each make-file-writable (find-files \".\" \".*\")))))))\n"
+"      (inputs\n"
+"       `((\"libssh2\" ,libssh2)\n"
+"         (\"http-parser\" ,http-parser)\n"
+"         (\"python\" ,python-wrapper)))\n"
+"      (native-inputs\n"
+"       `((\"pkg-config\" ,pkg-config)))\n"
+"      (propagated-inputs\n"
+"       ;; These two libraries are in 'Requires.private' in libgit2.pc.\n"
+"       `((\"openssl\" ,openssl)\n"
+"         (\"zlib\" ,zlib)))\n"
+"      (home-page \"https://libgit2.github.com/\")\n"
+"      (synopsis \"Library providing Git core methods\")\n"
+"      (description\n"
+"       \"Libgit2 is a portable, pure C implementation of the Git core methods\n"
+"provided as a re-entrant linkable library with a solid API, allowing you to\n"
+"write native speed custom Git applications in any language with bindings.\")\n"
+"      ;; GPLv2 with linking exception\n"
+"      (license license:gpl2))))\n"
+msgstr ""
+"(define-public my-libgit2\n"
+"  (let ((commit \"e98d0a37c93574d2c6107bf7f31140b548c6a7bf\")\n"
+"        (revision \"1\"))\n"
+"    (package\n"
+"      (name \"my-libgit2\")\n"
+"      (version (git-version \"0.26.6\" revision commit))\n"
+"      (source (origin\n"
+"                (method git-fetch)\n"
+"                (uri (git-reference\n"
+"                      (url \"https://github.com/libgit2/libgit2/\")\n"
+"                      (commit commit)))\n"
+"                (file-name (git-file-name name version))\n"
+"                (sha256\n"
+"                 (base32\n"
+"                  \"17pjvprmdrx4h6bb1hhc98w9qi6ki7yl57f090n9kbhswxqfs7s3\"))\n"
+"                (patches (search-patches \"libgit2-mtime-0.patch\"))\n"
+"                (modules '((guix build utils)))\n"
+"                (snippet '(begin\n"
+"                            ;; Remove bundled software.\n"
+"                            (delete-file-recursively \"deps\")\n"
+"                            #t))))\n"
+"      (build-system cmake-build-system)\n"
+"      (outputs '(\"out\" \"debug\"))\n"
+"      (arguments\n"
+"       `(#:tests? #t                            ; Run the test suite (this is the default)\n"
+"         #:configure-flags '(\"-DUSE_SHA1DC=ON\") ; SHA-1 collision detection\n"
+"         #:phases\n"
+"         (modify-phases %standard-phases\n"
+"           (add-after 'unpack 'fix-hardcoded-paths\n"
+"             (lambda _\n"
+"               (substitute* \"tests/repo/init.c\"\n"
+"                 ((\"#!/bin/sh\") (string-append \"#!\" (which \"sh\"))))\n"
+"               (substitute* \"tests/clar/fs.h\"\n"
+"                 ((\"/bin/cp\") (which \"cp\"))\n"
+"                 ((\"/bin/rm\") (which \"rm\")))\n"
+"               #t))\n"
+"           ;; Run checks more verbosely.\n"
+"           (replace 'check\n"
+"             (lambda _ (invoke \"./libgit2_clar\" \"-v\" \"-Q\")))\n"
+"           (add-after 'unpack 'make-files-writable-for-tests\n"
+"               (lambda _ (for-each make-file-writable (find-files \".\" \".*\")))))))\n"
+"      (inputs\n"
+"       `((\"libssh2\" ,libssh2)\n"
+"         (\"http-parser\" ,http-parser)\n"
+"         (\"python\" ,python-wrapper)))\n"
+"      (native-inputs\n"
+"       `((\"pkg-config\" ,pkg-config)))\n"
+"      (propagated-inputs\n"
+"       ;; These two libraries are in 'Requires.private' in libgit2.pc.\n"
+"       `((\"openssl\" ,openssl)\n"
+"         (\"zlib\" ,zlib)))\n"
+"      (home-page \"https://libgit2.github.com/\")\n"
+"      (synopsis \"Library providing Git core methods\")\n"
+"      (description\n"
+"       \"Libgit2 is a portable, pure C implementation of the Git core methods\n"
+"provided as a re-entrant linkable library with a solid API, allowing you to\n"
+"write native speed custom Git applications in any language with bindings.\")\n"
+"      ;; GPLv2 with linking exception\n"
+"      (license license:gpl2))))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:831
+msgid "(In those cases were you only want to tweak a few fields from a package definition, you should rely on inheritance instead of copy-pasting everything.  See below.)"
+msgstr "(In solchen Fällen, wo Sie nur ein paar wenige Felder einer Paketdefinition abändern wollen, wäre es wirklich besser, wenn Sie Vererbung einsetzen würden, statt alles abzuschreiben. Siehe unten.)"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:833
+msgid "Let's discuss those fields in depth."
+msgstr "Reden wir über diese Felder im Detail."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:834
+#, no-wrap
+msgid "@code{git-fetch} method"
+msgstr "@code{git-fetch}-Methode"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:841
+msgid "Unlike the @code{url-fetch} method, @code{git-fetch} expects a @code{git-reference} which takes a Git repository and a commit.  The commit can be any Git reference such as tags, so if the @code{version} is tagged, then it can be used directly.  Sometimes the tag is prefixed with a @code{v}, in which case you'd use @code{(commit (string-append \"v\" version))}."
+msgstr "Anders als die @code{url-fetch}-Methode erwartet @code{git-fetch} eine @code{git-reference}, welche ein Git-Repository und einen Commit entgegennimmt. Der Commit kann eine beliebige Art von Git-Referenz sein, z.B.@: ein Tag. Wenn die @code{version} also mit einem Tag versehen ist, kann sie einfach benutzt werden. Manchmal ist dem Tag ein Präfix @code{v} vorangestellt. In diesem Fall würden Sie @code{(commit (string-append \"v\" version))} schreiben."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:845
+msgid "To ensure that the source code from the Git repository is stored in a unique directory with a readable name we use @code{(file-name (git-file-name name version))}."
+msgstr "Um sicherzustellen, dass der Quellcode aus dem Git-Repository in einem nachvollziehbaren Verzeichnis mit lesbarem Namen landet, schreiben wir @code{(file-name (git-file-name name version))}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:848
+msgid "Note that there is also a @code{git-version} procedure that can be used to derive the version when packaging programs for a specific commit."
+msgstr "Beachten Sie, dass auch eine Prozedur @code{git-version} existiert, mit der die Version beim Paketieren eines bestimmten Commits eines Programms abgeleitet werden kann."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:849
+#, no-wrap
+msgid "Snippets"
+msgstr "Schnipsel"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:855
+msgid "Snippets are quoted (i.e. non-evaluated) Scheme code that are a means of patching the source.  They are a Guix-y alternative to the traditional @samp{.patch} files.  Because of the quote, the code in only evaluated when passed to the Guix daemon for building.  There can be as many snippets as needed."
+msgstr "„Snippets“, deutsch Schnipsel, sind mit z.B.@: @code{quote}-Zeichen maskierte, also nicht ausgewertete, Stücke Scheme-Code, mit denen der Quellcode gepatcht wird. Sie sind eine guixige Alternative zu traditionellen @samp{.patch}-Dateien. Wegen der Maskierung werden sie erst dann ausgewertet, wenn sie an den Guix-Daemon zum Erstellen übergeben werden. Es kann so viele Schnipsel geben wie nötig."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:858
+msgid "Snippets might need additional Guile modules which can be imported from the @code{modules} field."
+msgstr "In Schnipseln könnten zusätzliche Guile-Module benötigt werden. Diese können importiert werden, indem man sie im Feld @code{modules} angibt."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:859
+#, no-wrap
+msgid "Inputs"
+msgstr "Eingaben"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:862
+msgid "First, a syntactic comment: See the quasi-quote / comma syntax?"
+msgstr "Zunächst ein syntaktischer Kommentar: Sehen Sie die Syntax mit @code{quasiquote} und Komma?"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:866
+#, no-wrap
+msgid ""
+"    (native-inputs\n"
+"     `((\"pkg-config\" ,pkg-config)))\n"
+msgstr ""
+"    (native-inputs\n"
+"     `((\"pkg-config\" ,pkg-config)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:869
+msgid "is equivalent to"
+msgstr "ist das Gleiche wie"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:873
+#, no-wrap
+msgid ""
+"    (native-inputs\n"
+"     (list (list \"pkg-config\" pkg-config)))\n"
+msgstr ""
+"    (native-inputs\n"
+"     (list (list \"pkg-config\" pkg-config)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:876
+msgid "You'll mostly see the former because it's shorter."
+msgstr "Sie werden hauptsächlich erstere Variante sehen, weil sie kürzer ist."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:878
+msgid "There are 3 different input types.  In short:"
+msgstr "Es gibt 3 verschiedene Arten von Eingaben. Kurz gefasst:"
+
+#. type: item
+#: doc/guix-cookbook.texi:880
+#, no-wrap
+msgid "native-inputs"
+msgstr "native-inputs"
+
+#. type: table
+#: doc/guix-cookbook.texi:883
+msgid "Required for building but not runtime -- installing a package through a substitute won't install these inputs."
+msgstr "Sie werden zum Erstellen gebraucht, aber @emph{nicht} zur Laufzeit — wenn Sie ein Paket als Substitut installieren, werden diese Eingaben nirgendwo installiert."
+
+#. type: item
+#: doc/guix-cookbook.texi:883
+#, no-wrap
+msgid "inputs"
+msgstr "inputs"
+
+#. type: table
+#: doc/guix-cookbook.texi:886
+msgid "Installed in the store but not in the profile, as well as being present at build time."
+msgstr "Sie werden in den Store installiert, aber nicht in das Profil, und sie stehen beim Erstellen zur Verfügung."
+
+#. type: item
+#: doc/guix-cookbook.texi:886
+#, no-wrap
+msgid "propagated-inputs"
+msgstr "propagated-inputs"
+
+#. type: table
+#: doc/guix-cookbook.texi:889
+msgid "Installed in the store and in the profile, as well as being present at build time."
+msgstr "Sie werden sowohl in den Store als auch ins Profil installiert und sind auch beim Erstellen verfügbar."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:892
+msgid "@xref{Package Reference,,, guix, GNU Guix Reference Manual} for more details."
+msgstr "Siehe @ref{„package“-Referenz,,, guix.de, Referenzhandbuch zu GNU Guix} für mehr Details."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:896
+msgid "The distinction between the various inputs is important: if a dependency can be handled as an @emph{input} instead of a @emph{propagated input}, it should be done so, or else it ``pollutes'' the user profile for no good reason."
+msgstr "Der Unterschied zwischen den verschiedenen Eingaben ist wichtig: Wenn eine Abhängigkeit als @code{input} statt als @code{propagated-input} ausreicht, dann sollte sie auch so eingeordnet werden, sonst „verschmutzt“ sie das Profil des Benutzers ohne guten Grund."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:903
+msgid "For instance, a user installing a graphical program that depends on a command line tool might only be interested in the graphical part, so there is no need to force the command line tool into the user profile.  The dependency is a concern to the package, not to the user.  @emph{Inputs} make it possible to handle dependencies without bugging the user by adding undesired executable files (or libraries) to their profile."
+msgstr "Wenn eine Nutzerin beispielsweise ein grafisches Programm installiert, das von einem Befehlszeilenwerkzeug abhängt, sie sich aber nur für den grafischen Teil interessiert, dann sollten wir sie nicht zur Installation des Befehlszeilenwerkzeugs in ihr Benutzerprofil zwingen. Um die Abhängigkeit sollte sich das Paket kümmern, nicht seine Benutzerin. Mit @emph{Inputs} können wir Abhängigkeiten verwenden, wo sie gebraucht werden, ohne Nutzer zu belästigen, indem wir ausführbare Dateien (oder Bibliotheken) in deren Profil installieren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:909
+msgid "Same goes for @emph{native-inputs}: once the program is installed, build-time dependencies can be safely garbage-collected.  It also matters when a substitute is available, in which case only the @emph{inputs} and @emph{propagated inputs} will be fetched: the @emph{native inputs} are not required to install a package from a substitute."
+msgstr "Das Gleiche gilt für @emph{native-inputs}: Wenn das Programm einmal installiert ist, können Abhängigkeiten zur Erstellungszeit gefahrlos dem Müllsammler anvertraut werden. Sie sind auch besser, wenn ein Substitut verfügbar ist, so dass nur die @code{inputs} und @code{propagated-inputs} heruntergeladen werden; @code{native-inputs} braucht niemand, der das Paket aus einem Substitut heraus installiert."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:910
+#, no-wrap
+msgid "Outputs"
+msgstr "Ausgaben"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:914
+msgid "Just like how a package can have multiple inputs, it can also produce multiple outputs."
+msgstr "Genau wie ein Paket mehrere Eingaben haben kann, kann es auch mehrere Ausgaben haben."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:916
+msgid "Each output corresponds to a separate directory in the store."
+msgstr "Jede Ausgabe entspricht einem anderen Verzeichnis im Store."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:919
+msgid "The user can choose which output to install; this is useful to save space or to avoid polluting the user profile with unwanted executables or libraries."
+msgstr "Die Benutzerin kann sich entscheiden, welche Ausgabe sie installieren will; so spart sie Platz auf dem Datenträger und verschmutzt ihr Benutzerprofil nicht mit unerwünschten ausführbaren Dateien oder Bibliotheken."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:922
+msgid "Output separation is optional.  When the @code{outputs} field is left out, the default and only output (the complete package) is referred to as @code{\"out\"}."
+msgstr "Nach Ausgaben zu trennen ist optional. Wenn Sie kein @code{outputs}-Feld schreiben, heißt die standardmäßige und einzige Ausgabe (also das ganze Paket) schlicht @code{\"out\"}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:924
+msgid "Typical separate output names include @code{debug} and @code{doc}."
+msgstr "Typische Namen für getrennte Ausgaben sind @code{debug} und @code{doc}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:928
+msgid "It's advised to separate outputs only when you've shown it's worth it: if the output size is significant (compare with @code{guix size}) or in case the package is modular."
+msgstr "Es wird empfohlen, getrennte Ausgaben nur dann anzubieten, wenn Sie gezeigt haben, dass es sich lohnt, d.h.@: wenn die Ausgabengröße signifikant ist (vergleichen Sie sie mittels @code{guix size}) oder das Paket modular aufgebaut ist."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:929
+#, no-wrap
+msgid "Build system arguments"
+msgstr "Argumente ans Erstellungssystem"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:932
+msgid "The @code{arguments} is a keyword-value list used to configure the build process."
+msgstr "@code{arguments} ist eine Liste aus Schlüsselwort-Wert-Paaren (eine „keyword-value list“), mit denen der Erstellungsprozess konfiguriert wird."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:937
+msgid "The simplest argument @code{#:tests?} can be used to disable the test suite when building the package.  This is mostly useful when the package does not feature any test suite.  It's strongly recommended to keep the test suite on if there is one."
+msgstr "Das einfachste Argument @code{#:tests?} kann man benutzen, um den Testkatalog bei der Erstellung des Pakets nicht zu prüfen. Das braucht man meistens dann, wenn das Paket überhaupt keinen Testkatalog hat. Wir empfehlen sehr, den Testkatalog zu benutzen, wenn es einen gibt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:941
+msgid "Another common argument is @code{:make-flags}, which specifies a list of flags to append when running make, as you would from the command line.  For instance, the following flags"
+msgstr "Ein anderes häufiges Argument ist @code{:make-flags}, was eine Liste an den @code{make}-Aufruf anzuhängender Befehlszeilenargumente festlegt, so wie Sie sie auf der Befehlszeile angeben würden. Zum Beispiel werden die folgenden @code{:make-flags}"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:945
+#, no-wrap
+msgid ""
+"#:make-flags (list (string-append \"prefix=\" (assoc-ref %outputs \"out\"))\n"
+"                   \"CC=gcc\")\n"
+msgstr ""
+"#:make-flags (list (string-append \"prefix=\" (assoc-ref %outputs \"out\"))\n"
+"                   \"CC=gcc\")\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:948
+msgid "translate into"
+msgstr "übersetzt zu"
+
+#. type: example
+#: doc/guix-cookbook.texi:951
+#, no-wrap
+msgid "$ make CC=gcc prefix=/gnu/store/...-<out>\n"
+msgstr "$ make CC=gcc prefix=/gnu/store/...-<out>\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:957
+msgid "This sets the C compiler to @code{gcc} and the @code{prefix} variable (the installation directory in Make parlance) to @code{(assoc-ref %outputs \"out\")}, which is a build-stage global variable pointing to the destination directory in the store (something like @samp{/gnu/store/...-my-libgit2-20180408})."
+msgstr "Dadurch wird als C-Compiler @code{gcc} verwendet und als @code{prefix}-Variable (das Installationsverzeichnis in der Sprechweise von Make) wird @code{(assoc-ref %outputs \"out\")} verwendet, also eine globale Variable der Erstellungsschicht, die auf das Zielverzeichnis im Store verweist (so etwas wie @samp{/gnu/store/...-my-libgit2-20180408})."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:959
+msgid "Similarly, it's possible to set the configure flags:"
+msgstr "Auf gleiche Art kann man auch die Befehlszeilenoptionen für configure festlegen:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:962
+#, no-wrap
+msgid "#:configure-flags '(\"-DUSE_SHA1DC=ON\")\n"
+msgstr "#:configure-flags '(\"-DUSE_SHA1DC=ON\")\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:966
+msgid "The @code{%build-inputs} variable is also generated in scope.  It's an association table that maps the input names to their store directories."
+msgstr "Die Variable @code{%build-inputs} wird auch in diesem Sichtbarkeitsbereich erzeugt. Es handelt sich um eine assoziative Liste, die von den Namen der Eingaben auf ihre Verzeichnisse im Store abbildet."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:971
+msgid "The @code{phases} keyword lists the sequential steps of the build system.  Typically phases include @code{unpack}, @code{configure}, @code{build}, @code{install} and @code{check}.  To know more about those phases, you need to work out the appropriate build system definition in @samp{$GUIX_CHECKOUT/guix/build/gnu-build-system.scm}:"
+msgstr "Das @code{phases}-Schlüsselwort listet der Reihe nach die vom Erstellungssystem durchgeführten Schritte auf. Zu den üblichen Phasen gehören @code{unpack}, @code{configure}, @code{build}, @code{install} und @code{check}. Um mehr über diese Phasen zu lernen, müssen Sie sich die Definition des zugehörigen Erstellungssystems in @samp{$GUIX_CHECKOUT/guix/build/gnu-build-system.scm} anschauen:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:990
+#, no-wrap
+msgid ""
+"(define %standard-phases\n"
+"  ;; Standard build phases, as a list of symbol/procedure pairs.\n"
+"  (let-syntax ((phases (syntax-rules ()\n"
+"                         ((_ p ...) `((p . ,p) ...)))))\n"
+"    (phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack\n"
+"            bootstrap\n"
+"            patch-usr-bin-file\n"
+"            patch-source-shebangs configure patch-generated-file-shebangs\n"
+"            build check install\n"
+"            patch-shebangs strip\n"
+"            validate-runpath\n"
+"            validate-documentation-location\n"
+"            delete-info-dir-file\n"
+"            patch-dot-desktop-files\n"
+"            install-license-files\n"
+"            reset-gzip-timestamps\n"
+"            compress-documentation)))\n"
+msgstr ""
+"(define %standard-phases\n"
+"  ;; Standard build phases, as a list of symbol/procedure pairs.\n"
+"  (let-syntax ((phases (syntax-rules ()\n"
+"                         ((_ p ...) `((p . ,p) ...)))))\n"
+"    (phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack\n"
+"            bootstrap\n"
+"            patch-usr-bin-file\n"
+"            patch-source-shebangs configure patch-generated-file-shebangs\n"
+"            build check install\n"
+"            patch-shebangs strip\n"
+"            validate-runpath\n"
+"            validate-documentation-location\n"
+"            delete-info-dir-file\n"
+"            patch-dot-desktop-files\n"
+"            install-license-files\n"
+"            reset-gzip-timestamps\n"
+"            compress-documentation)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:993
+msgid "Or from the REPL:"
+msgstr "Alternativ auf einer REPL:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:999
+#, no-wrap
+msgid ""
+"(add-to-load-path \"/path/to/guix/checkout\")\n"
+",use (guix build gnu-build-system)\n"
+"(map first %standard-phases)\n"
+"@result{} (set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files install-license-files reset-gzip-timestamps compress-documentation)\n"
+msgstr ""
+"(add-to-load-path \"/path/to/guix/checkout\")\n"
+",use (guix build gnu-build-system)\n"
+"(map first %standard-phases)\n"
+"@result{} (set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files install-license-files reset-gzip-timestamps compress-documentation)\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1003
+msgid "If you want to know more about what happens during those phases, consult the associated procedures."
+msgstr "Wenn Sie mehr darüber wissen wollen, was in diesen Phasen passiert, schauen Sie in den jeweiligen Prozeduren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1006
+msgid "For instance, as of this writing the definition of @code{unpack} for the GNU build system is"
+msgstr "Beispielsweise sieht momentan, als dies hier geschrieben wurde, die Definition von @code{unpack} für das GNU-Erstellungssystem so aus:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1016
+#, no-wrap
+msgid ""
+"(define* (unpack #:key source #:allow-other-keys)\n"
+"  \"Unpack SOURCE in the working directory, and change directory within the\n"
+"source.  When SOURCE is a directory, copy it in a sub-directory of the current\n"
+"working directory.\"\n"
+"  (if (file-is-directory? source)\n"
+"      (begin\n"
+"        (mkdir \"source\")\n"
+"        (chdir \"source\")\n"
+"\n"
+msgstr ""
+"(define* (unpack #:key source #:allow-other-keys)\n"
+"  \"Unpack SOURCE in the working directory, and change directory within the\n"
+"source.  When SOURCE is a directory, copy it in a sub-directory of the current\n"
+"working directory.\"\n"
+"  (if (file-is-directory? source)\n"
+"      (begin\n"
+"        (mkdir \"source\")\n"
+"        (chdir \"source\")\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1027
+#, no-wrap
+msgid ""
+"        ;; Preserve timestamps (set to the Epoch) on the copied tree so that\n"
+"        ;; things work deterministically.\n"
+"        (copy-recursively source \".\"\n"
+"                          #:keep-mtime? #t))\n"
+"      (begin\n"
+"        (if (string-suffix? \".zip\" source)\n"
+"            (invoke \"unzip\" source)\n"
+"            (invoke \"tar\" \"xvf\" source))\n"
+"        (chdir (first-subdirectory \".\"))))\n"
+"  #t)\n"
+msgstr ""
+"        ;; Preserve timestamps (set to the Epoch) on the copied tree so that\n"
+"        ;; things work deterministically.\n"
+"        (copy-recursively source \".\"\n"
+"                          #:keep-mtime? #t))\n"
+"      (begin\n"
+"        (if (string-suffix? \".zip\" source)\n"
+"            (invoke \"unzip\" source)\n"
+"            (invoke \"tar\" \"xvf\" source))\n"
+"        (chdir (first-subdirectory \".\"))))\n"
+"  #t)\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1035
+msgid "Note the @code{chdir} call: it changes the working directory to where the source was unpacked.  Thus every phase following the @code{unpack} will use the source as a working directory, which is why we can directly work on the source files.  That is to say, unless a later phase changes the working directory to something else."
+msgstr "Beachten Sie den Aufruf von @code{chdir}: Damit wird das Arbeitsverzeichnis zu demjenigen gewechselt, wohin die Quelldateien entpackt wurden. In jeder Phase nach @code{unpack} dient also das Verzeichnis mit den Quelldateien als Arbeitsverzeichnis. Deswegen können wir direkt mit den Quelldateien arbeiten, zumindest solange keine spätere Phase das Arbeitsverzeichnis woandershin wechselt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1039
+msgid "We modify the list of @code{%standard-phases} of the build system with the @code{modify-phases} macro as per the list of specified modifications, which may have the following forms:"
+msgstr "Die Liste der @code{%standard-phases} des Erstellungssystems ändern wir mit Hilfe des @code{modify-phases}-Makros über eine Liste von Änderungen. Sie kann folgende Formen haben:"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1043
+msgid "@code{(add-before PHASE NEW-PHASE PROCEDURE)}: Run @code{PROCEDURE} named @code{NEW-PHASE} before @code{PHASE}."
+msgstr "@code{(add-before PHASE NEUE-PHASE PROZEDUR)}: Die @code{PROZEDUR} namens @code{NEUE-PHASE} vor @code{PHASE} ausführen."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1045
+msgid "@code{(add-after PHASE NEW-PHASE PROCEDURE)}: Same, but afterwards."
+msgstr "@code{(add-after PHASE NEUE-PHASE PROZEDUR)}: Genauso, aber danach."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1047
+msgid "@code{(replace PHASE PROCEDURE)}."
+msgstr "@code{(replace PHASE PROZEDUR)}."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1049
+msgid "@code{(delete PHASE)}."
+msgstr "@code{(delete PHASE)}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1056
+msgid "The @code{PROCEDURE} supports the keyword arguments @code{inputs} and @code{outputs}.  Each input (whether @emph{native}, @emph{propagated} or not) and output directory is referenced by their name in those variables.  Thus @code{(assoc-ref outputs \"out\")} is the store directory of the main output of the package.  A phase procedure may look like this:"
+msgstr "Die @code{PROZEDUR} unterstützt die Schlüsselwortargumente @code{inputs} und @code{outputs}. Jede Eingabe (ob sie @emph{native}, @emph{propagated} oder nichts davon ist) und jedes Ausgabeverzeichnis ist in diesen Variablen mit dem jeweiligen Namen assoziiert. @code{(assoc-ref outputs \"out\")} ist also das Store-Verzeichnis der Hauptausgabe des Pakets. Eine Phasenprozedur kann so aussehen:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1064
+#, no-wrap
+msgid ""
+"(lambda* (#:key inputs outputs #:allow-other-keys)\n"
+"  (let (((bash-directory (assoc-ref inputs \"bash\"))\n"
+"         (output-directory (assoc-ref outputs \"out\"))\n"
+"         (doc-directory (assoc-ref outputs \"doc\"))\n"
+"  ; ...\n"
+"  #t)\n"
+msgstr ""
+"(lambda* (#:key inputs outputs #:allow-other-keys)\n"
+"  (let (((bash-directory (assoc-ref inputs \"bash\"))\n"
+"         (output-directory (assoc-ref outputs \"out\"))\n"
+"         (doc-directory (assoc-ref outputs \"doc\"))\n"
+"  ; ...\n"
+"  #t)\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1070
+msgid "The procedure must return @code{#t} on success.  It's brittle to rely on the return value of the last expression used to tweak the phase because there is no guarantee it would be a @code{#t}.  Hence the trailing @code{#t} to ensure the right value is returned on success."
+msgstr "Die Prozedur muss bei Erfolg @code{#t} zurückliefern. Auf den Rückgabewert des letzten Ausdrucks, mit dem die Phase angepasst wurde, kann man sich nicht verlassen, weil es keine Garantie gibt, dass der Rückgabewert @code{#t} sein wird. Deswegen schreiben wir dahinter @code{#t}, damit bei erfolgreicher Ausführung der richtige Wert geliefert wird."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1071
+#, no-wrap
+msgid "Code staging"
+msgstr "Code-Staging"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1077
+msgid "The astute reader may have noticed the quasi-quote and comma syntax in the argument field.  Indeed, the build code in the package declaration should not be evaluated on the client side, but only when passed to the Guix daemon.  This mechanism of passing code around two running processes is called @uref{https://arxiv.org/abs/1709.00833, code staging}."
+msgstr "Aufmerksame Leser könnten die Syntax mit @code{quasiquote} und Komma im Argumentefeld bemerkt haben. Tatsächlich sollte der Erstellungscode in der Paketdeklaration @emph{nicht} auf Client-Seite ausgeführt werden, sondern erst, wenn er an den Guix-Daemon übergeben worden ist. Der Mechanismus, über den Code zwischen zwei laufenden Prozessen weitergegeben wird, nennen wir @uref{https://arxiv.org/abs/1709.00833, Code-Staging}."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1078
+#, no-wrap
+msgid "Utility functions"
+msgstr "Hilfsfunktionen"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1083
+msgid "When customizing @code{phases}, we often need to write code that mimics the equivalent system invocations (@code{make}, @code{mkdir}, @code{cp}, etc.) commonly used during regular ``Unix-style'' installations."
+msgstr "Beim Anpassen der @code{phases} müssen wir oft Code schreiben, der analog zu den äquivalenten Systemaufrufen funktioniert (@code{make}, @code{mkdir}, @code{cp}, etc.), welche in regulären „Unix-artigen“ Installationen oft benutzt werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1086
+msgid "Some like @code{chmod} are native to Guile.  @xref{,,, guile, Guile reference manual} for a complete list."
+msgstr "Manche, wie @code{chmod}, sind Teil von Guile. Siehe das @ref{,,, guile, Referenzhandbuch zu Guile} für eine vollständige Liste."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1089
+msgid "Guix provides additional helper functions which prove especially handy in the context of package management."
+msgstr "Guix stellt zusätzliche Hilfsfunktionen zur Verfügung, die bei der Paketverwaltung besonders praktisch sind."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1093
+msgid "Some of those functions can be found in @samp{$GUIX_CHECKOUT/guix/guix/build/utils.scm}.  Most of them mirror the behaviour of the traditional Unix system commands:"
+msgstr "Manche dieser Funktionalitäten finden Sie in @samp{$GUIX_CHECKOUT/guix/guix/build/utils.scm}. Die meisten spiegeln das Verhalten traditioneller Unix-Systembefehle wider:"
+
+#. type: item
+#: doc/guix-cookbook.texi:1095
+#, no-wrap
+msgid "which"
+msgstr "which"
+
+#. type: table
+#: doc/guix-cookbook.texi:1097
+msgid "Like the @samp{which} system command."
+msgstr "Das Gleiche wie der @samp{which}-Systembefehl."
+
+#. type: item
+#: doc/guix-cookbook.texi:1097
+#, no-wrap
+msgid "find-files"
+msgstr "find-files"
+
+#. type: table
+#: doc/guix-cookbook.texi:1099
+msgid "Akin to the @samp{find} system command."
+msgstr "Wie der @samp{find} Systembefehl."
+
+#. type: item
+#: doc/guix-cookbook.texi:1099
+#, no-wrap
+msgid "mkdir-p"
+msgstr "mkdir-p"
+
+#. type: table
+#: doc/guix-cookbook.texi:1101
+msgid "Like @samp{mkdir -p}, which creates all parents as needed."
+msgstr "Wie @samp{mkdir -p}, das Elternverzeichnisse erzeugt, wenn nötig."
+
+#. type: item
+#: doc/guix-cookbook.texi:1101
+#, no-wrap
+msgid "install-file"
+msgstr "install-file"
+
+#. type: table
+#: doc/guix-cookbook.texi:1105
+msgid "Similar to @samp{install} when installing a file to a (possibly non-existing) directory.  Guile has @code{copy-file} which works like @samp{cp}."
+msgstr "Ähnlich wie @samp{install} beim Installieren einer Datei in ein (nicht unbedingt existierendes) Verzeichnis. Guile kennt @code{copy-file}, das wie @samp{cp} funktioniert."
+
+#. type: item
+#: doc/guix-cookbook.texi:1105
+#, no-wrap
+msgid "copy-recursively"
+msgstr "copy-recursively"
+
+#. type: table
+#: doc/guix-cookbook.texi:1107
+msgid "Like @samp{cp -r}."
+msgstr "Wie @samp{cp -r}."
+
+#. type: item
+#: doc/guix-cookbook.texi:1107
+#, no-wrap
+msgid "delete-file-recursively"
+msgstr "delete-file-recursively"
+
+#. type: table
+#: doc/guix-cookbook.texi:1109
+msgid "Like @samp{rm -rf}."
+msgstr "Wie @samp{rm -rf}."
+
+#. type: item
+#: doc/guix-cookbook.texi:1109
+#, no-wrap
+msgid "invoke"
+msgstr "invoke"
+
+#. type: table
+#: doc/guix-cookbook.texi:1111
+msgid "Run an executable.  This should be used instead of @code{system*}."
+msgstr "Eine ausführbare Datei ausführen. Man sollte es benutzen und nicht @code{system*}."
+
+#. type: item
+#: doc/guix-cookbook.texi:1111
+#, no-wrap
+msgid "with-directory-excursion"
+msgstr "with-directory-excursion"
+
+#. type: table
+#: doc/guix-cookbook.texi:1114
+msgid "Run the body in a different working directory, then restore the previous working directory."
+msgstr "Den Rumpf in einem anderen Arbeitsverzeichnis ausführen und danach wieder in das vorherige Arbeitsverzeichnis wechseln."
+
+#. type: item
+#: doc/guix-cookbook.texi:1114
+#, no-wrap
+msgid "substitute*"
+msgstr "substitute*"
+
+#. type: table
+#: doc/guix-cookbook.texi:1116
+msgid "A ``@command{sed}-like'' function."
+msgstr "Eine „@command{sed}-artige“ Funktion."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1118
+#, no-wrap
+msgid "Module prefix"
+msgstr "Modulpräfix"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1128
+msgid "The license in our last example needs a prefix: this is because of how the @code{license} module was imported in the package, as @code{#:use-module ((guix licenses)  #:prefix license:)}.  The Guile module import mechanism (@pxref{Using Guile Modules,,, guile, Guile reference manual})  gives the user full control over namespacing: this is needed to avoid clashes between, say, the @samp{zlib} variable from @samp{licenses.scm} (a @emph{license} value) and the @samp{zlib} variable from @samp{compression.scm} (a @emph{package} value)."
+msgstr "Die Lizenz in unserem letzten Beispiel braucht ein Präfix. Der Grund liegt darin, wie das @code{license}-Modul importiert worden ist, nämlich @code{#:use-module ((guix licenses)  #:prefix license:)}. Der Importmechanismus von Guile-Modulen (siehe @ref{Using Guile Modules,,, guile, Referenzhandbuch zu Guile}) gibt Benutzern die volle Kontrolle über Namensräume. Man braucht sie, um Konflikte zu lösen, z.B.@ zwischen der @samp{zlib}-Variablen aus @samp{licenses.scm} (dieser Wert repräsentiert eine @emph{Softwarelizenz}) und der @samp{zlib}-Variablen aus @samp{compression.scm} (ein Wert, der für ein @emph{Paket} steht)."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1129 doc/guix-cookbook.texi:1130
+#, no-wrap
+msgid "Other build systems"
+msgstr "Andere Erstellungssysteme"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1137
+msgid "What we've seen so far covers the majority of packages using a build system other than the @code{trivial-build-system}.  The latter does not automate anything and leaves you to build everything manually.  This can be more demanding and we won't cover it here for now, but thankfully it is rarely necessary to fall back on this system."
+msgstr "Was wir bisher gesehen haben reicht für die meisten Pakete aus, die als Erstellungssystem etwas anderes als @code{trivial-build-system} verwenden. Letzteres automatisiert gar nichts und überlässt es Ihnen, alles zur Erstellung manuell festzulegen. Das kann einen noch mehr beanspruchen und wir beschreiben es hier zur Zeit nicht, aber glücklicherweise braucht man dieses System auch nur in seltenen Fällen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1141
+msgid "For the other build systems, such as ASDF, Emacs, Perl, Ruby and many more, the process is very similar to the GNU build system except for a few specialized arguments."
+msgstr "Bei anderen Erstellungssystemen wie ASDF, Emacs, Perl, Ruby und vielen anderen ist der Prozess sehr ähnlich zum GNU-Erstellungssystem abgesehen von ein paar speziellen Argumenten."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1146
+msgid "@xref{Build Systems,,, guix, GNU Guix Reference Manual}, for more information on build systems, or check the source code in the @samp{$GUIX_CHECKOUT/guix/build} and @samp{$GUIX_CHECKOUT/guix/build-system} directories."
+msgstr "Siehe @ref{Erstellungssysteme,,, guix.de, Referenzhandbuch zu GNU Guix}, für mehr Informationen über Erstellungssysteme, oder den Quellcode in den Verzeichnissen @samp{$GUIX_CHECKOUT/guix/build} und @samp{$GUIX_CHECKOUT/guix/build-system}."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1147 doc/guix-cookbook.texi:1148
+#, no-wrap
+msgid "Programmable and automated package definition"
+msgstr "Programmierbare und automatisierte Paketdefinition"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1152
+msgid "We can't repeat it enough: having a full-fledged programming language at hand empowers us in ways that reach far beyond traditional package management."
+msgstr "Wir können es nicht oft genug wiederholen: Eine Allzweck-Programmiersprache zur Hand zu haben macht Dinge möglich, die traditionelle Paketverwaltung weit übersteigen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1154
+msgid "Let's illustrate this with some awesome features of Guix!"
+msgstr "Wir können uns das anhand Guix’ großartiger Funktionalitäten klarmachen!"
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1155 doc/guix-cookbook.texi:1156
+#, no-wrap
+msgid "Recursive importers"
+msgstr "Rekursive Importer"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1163
+msgid "You might find some build systems good enough that there is little to do at all to write a package, to the point that it becomes repetitive and tedious after a while.  A @emph{raison d'être} of computers is to replace human beings at those boring tasks.  So let's tell Guix to do this for us and create the package definition of an R package from CRAN (the output is trimmed for conciseness):"
+msgstr "Sie könnten feststellen, dass manche Erstellungssysteme gut genug sind und nichts weiter zu tun bleibt, um ein Paket zu verfassen. Das Paketeschreiben kann so monoton werden und man wird dessen bald überdrüssig. Eine Daseinsberechtigung von Rechnern ist, Menschen bei solch langweiligen Aufgaben zu ersetzen. Lasst uns also Guix die Sache erledigen: Wir lassen uns die Paketdefinition eines R-Pakets mit den Informationen aus CRAN holen (was zu anderen ausgegeben wird, haben wir im Folgenden weggelassen):"
+
+#. type: example
+#: doc/guix-cookbook.texi:1166
+#, no-wrap
+msgid ""
+"$ guix import cran --recursive walrus\n"
+"\n"
+msgstr ""
+"$ guix import cran --recursive walrus\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1170
+#, no-wrap
+msgid ""
+"(define-public r-mc2d\n"
+"    ; ...\n"
+"    (license gpl2+)))\n"
+"\n"
+msgstr ""
+"(define-public r-mc2d\n"
+"    ; …\n"
+"    (license gpl2+)))\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1174
+#, no-wrap
+msgid ""
+"(define-public r-jmvcore\n"
+"    ; ...\n"
+"    (license gpl2+)))\n"
+"\n"
+msgstr ""
+"(define-public r-jmvcore\n"
+"    ; …\n"
+"    (license gpl2+)))\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1178
+#, no-wrap
+msgid ""
+"(define-public r-wrs2\n"
+"    ; ...\n"
+"    (license gpl3)))\n"
+"\n"
+msgstr ""
+"(define-public r-wrs2\n"
+"    ; …\n"
+"    (license gpl3)))\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1207
+#, no-wrap
+msgid ""
+"(define-public r-walrus\n"
+"  (package\n"
+"    (name \"r-walrus\")\n"
+"    (version \"1.0.3\")\n"
+"    (source\n"
+"      (origin\n"
+"        (method url-fetch)\n"
+"        (uri (cran-uri \"walrus\" version))\n"
+"        (sha256\n"
+"          (base32\n"
+"            \"1nk2glcvy4hyksl5ipq2mz8jy4fss90hx6cq98m3w96kzjni6jjj\"))))\n"
+"    (build-system r-build-system)\n"
+"    (propagated-inputs\n"
+"      `((\"r-ggplot2\" ,r-ggplot2)\n"
+"        (\"r-jmvcore\" ,r-jmvcore)\n"
+"        (\"r-r6\" ,r-r6)\n"
+"        (\"r-wrs2\" ,r-wrs2)))\n"
+"    (home-page \"https://github.com/jamovi/walrus\")\n"
+"    (synopsis \"Robust Statistical Methods\")\n"
+"    (description\n"
+"      \"This package provides a toolbox of common robust statistical\n"
+"tests, including robust descriptives, robust t-tests, and robust ANOVA.\n"
+"It is also available as a module for 'jamovi' (see\n"
+"<https://www.jamovi.org> for more information).  Walrus is based on the\n"
+"WRS2 package by Patrick Mair, which is in turn based on the scripts and\n"
+"work of Rand Wilcox.  These analyses are described in depth in the book\n"
+"'Introduction to Robust Estimation & Hypothesis Testing'.\")\n"
+"    (license gpl3)))\n"
+msgstr ""
+"(define-public r-walrus\n"
+"  (package\n"
+"    (name \"r-walrus\")\n"
+"    (version \"1.0.3\")\n"
+"    (source\n"
+"      (origin\n"
+"        (method url-fetch)\n"
+"        (uri (cran-uri \"walrus\" version))\n"
+"        (sha256\n"
+"          (base32\n"
+"            \"1nk2glcvy4hyksl5ipq2mz8jy4fss90hx6cq98m3w96kzjni6jjj\"))))\n"
+"    (build-system r-build-system)\n"
+"    (propagated-inputs\n"
+"      `((\"r-ggplot2\" ,r-ggplot2)\n"
+"        (\"r-jmvcore\" ,r-jmvcore)\n"
+"        (\"r-r6\" ,r-r6)\n"
+"        (\"r-wrs2\" ,r-wrs2)))\n"
+"    (home-page \"https://github.com/jamovi/walrus\")\n"
+"    (synopsis \"Robust Statistical Methods\")\n"
+"    (description\n"
+"      \"This package provides a toolbox of common robust statistical\n"
+"tests, including robust descriptives, robust t-tests, and robust ANOVA.\n"
+"It is also available as a module for 'jamovi' (see\n"
+"<https://www.jamovi.org> for more information).  Walrus is based on the\n"
+"WRS2 package by Patrick Mair, which is in turn based on the scripts and\n"
+"work of Rand Wilcox.  These analyses are described in depth in the book\n"
+"'Introduction to Robust Estimation & Hypothesis Testing'.\")\n"
+"    (license gpl3)))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1211
+msgid "The recursive importer won't import packages for which Guix already has package definitions, except for the very first."
+msgstr "Der rekursive Importer wird keine Pakete importieren, für die es in Guix bereits eine Paketdefinition gibt, außer dem Paket, mit dem er anfängt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1216
+msgid "Not all applications can be packaged this way, only those relying on a select number of supported systems.  Read about the full list of importers in the guix import section of the manual (@pxref{Invoking guix import,,, guix, GNU Guix Reference Manual})."
+msgstr "Nicht für alle Anwendungen können auf diesem Weg Pakete erzeugt werden, nur für jene, die auf ausgewählten Systemen aufbauen. Im Handbuch können Sie Informationen über die vollständige Liste aller Importer bekommen (siehe @ref{Aufruf von guix import,,, guix.de, Referenzhandbuch zu GNU Guix})."
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1217 doc/guix-cookbook.texi:1218
+#, no-wrap
+msgid "Automatic update"
+msgstr "Automatisch aktualisieren"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1222
+msgid "Guix can be smart enough to check for updates on systems it knows.  It can report outdated package definitions with"
+msgstr "Guix ist klug genug, um verfügbare Aktualisierungen auf bekannten Systemen zu erkennen. Es kann über veraltete Paketdefinitionen Bericht erstatten, wenn man dies eingibt:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1225
+#, no-wrap
+msgid "$ guix refresh hello\n"
+msgstr "$ guix refresh hello\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1230
+msgid "In most cases, updating a package to a newer version requires little more than changing the version number and the checksum.  Guix can do that automatically as well:"
+msgstr "In den meisten Fällen muss man zur Aktualisierung auf eine neuere Version wenig mehr tun, als die Versionsnummer und die Prüfsumme ändern. Auch das kann mit Guix automatisiert werden:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1233
+#, no-wrap
+msgid "$ guix refresh hello --update\n"
+msgstr "$ guix refresh hello --update\n"
+
+#. type: subsubsection
+#: doc/guix-cookbook.texi:1235 doc/guix-cookbook.texi:1236
+#, no-wrap
+msgid "Inheritance"
+msgstr "Vererbung"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1240
+msgid "If you've started browsing the existing package definitions, you might have noticed that a significant number of them have a @code{inherit} field:"
+msgstr "Wenn Sie anfangen, bestehende Paketdefinitionen anzuschauen, könnte es Ihnen auffallen, dass viele von ihnen über ein @code{inherit}-Feld verfügen."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1256
+#, no-wrap
+msgid ""
+"(define-public adwaita-icon-theme\n"
+"  (package (inherit gnome-icon-theme)\n"
+"    (name \"adwaita-icon-theme\")\n"
+"    (version \"3.26.1\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnome/sources/\" name \"/\"\n"
+"                                  (version-major+minor version) \"/\"\n"
+"                                  name \"-\" version \".tar.xz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"17fpahgh5dyckgz7rwqvzgnhx53cx9kr2xw0szprc6bnqy977fi8\"))))\n"
+"    (native-inputs\n"
+"     `((\"gtk-encode-symbolic-svg\" ,gtk+ \"bin\")))))\n"
+msgstr ""
+"(define-public adwaita-icon-theme\n"
+"  (package (inherit gnome-icon-theme)\n"
+"    (name \"adwaita-icon-theme\")\n"
+"    (version \"3.26.1\")\n"
+"    (source (origin\n"
+"              (method url-fetch)\n"
+"              (uri (string-append \"mirror://gnome/sources/\" name \"/\"\n"
+"                                  (version-major+minor version) \"/\"\n"
+"                                  name \"-\" version \".tar.xz\"))\n"
+"              (sha256\n"
+"               (base32\n"
+"                \"17fpahgh5dyckgz7rwqvzgnhx53cx9kr2xw0szprc6bnqy977fi8\"))))\n"
+"    (native-inputs\n"
+"     `((\"gtk-encode-symbolic-svg\" ,gtk+ \"bin\")))))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1261
+msgid "All unspecified fields are inherited from the parent package.  This is very convenient to create alternative packages, for instance with different source, version or compilation options."
+msgstr "Alle @emph{nicht} aufgeführten Felder werden vom Elternpaket geerbt. Das ist ziemlich praktisch, um alternative Pakete zu erzeugen, zum Beispiel solche mit geänderten Quellorten, Versionen oder Kompilierungsoptionen."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1262 doc/guix-cookbook.texi:1263
+#, no-wrap
+msgid "Getting help"
+msgstr "Hilfe bekommen"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1269
+msgid "Sadly, some applications can be tough to package.  Sometimes they need a patch to work with the non-standard filesystem hierarchy enforced by the store.  Sometimes the tests won't run properly.  (They can be skipped but this is not recommended.)  Other times the resulting package won't be reproducible."
+msgstr "Leider ist es für manche Anwendungen schwierig, Pakete zu schreiben. Manchmal brauchen sie einen Patch, um mit vom Standard abweichenden Dateisystemhierarchien klarzukommen, wie sie der Store erforderlich macht. Manchmal funktionieren die Tests nicht richtig. (Man kann sie überspringen, aber man sollte nicht.) Ein andermal ist das sich ergebende Paket nicht reproduzierbar."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1272
+msgid "Should you be stuck, unable to figure out how to fix any sort of packaging issue, don't hesitate to ask the community for help."
+msgstr "Wenn Sie nicht weiterkommen, weil Sie nicht wissen, wie Sie ein Problem beim Paketschreiben lösen können, dann zögern Sie nicht, die Gemeinde um Hilfe zu bitten."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1274
+msgid "See the @uref{https://www.gnu.org/software/guix/contact/, Guix homepage} for information on the mailing lists, IRC, etc."
+msgstr "Siehe die @uref{https://www.gnu.org/software/guix/contact/, Homepage von Guix} für Informationen, welche Mailing-Listen, IRC-Kanäle etc.@: bereitstehen."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1275 doc/guix-cookbook.texi:1276
+#, no-wrap
+msgid "Conclusion"
+msgstr "Schlusswort"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1282
+msgid "This tutorial was a showcase of the sophisticated package management that Guix boasts.  At this point we have mostly restricted this introduction to the @code{gnu-build-system} which is a core abstraction layer on which more advanced abstractions are based."
+msgstr "Diese Anleitung hat einen Überblick über die fortgeschrittene Paketverwaltung gegeben, die Guix vorweist. Zu diesem Zeitpunkt haben wir diese Einführung größtenteils auf das @code{gnu-build-system} eingeschränkt, was eine zentrale Abstraktionsschicht darstellt, auf der weitere Abstraktionen aufbauen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1287
+msgid "Where do we go from here? Next we ought to dissect the innards of the build system by removing all abstractions, using the @code{trivial-build-system}: this should give us a thorough understanding of the process before investigating some more advanced packaging techniques and edge cases."
+msgstr "Wie geht es nun weiter? Als Nächstes müssten wir das Erstellungssystem in seine Bestandteile zerlegen, um einen Einblick ganz ohne Abstraktionen zu bekommen. Das bedeutet, wir müssten das @code{trivial-build-system} analysieren. Dadurch sollte ein gründliches Verständnis des Prozesses vermittelt werden, bevor wir höher entwickelte Paketierungstechniken und Randfälle untersuchen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1290
+msgid "Other features worth exploring are the interactive editing and debugging capabilities of Guix provided by the Guile REPL@."
+msgstr "Andere Funktionalitäten, die es wert sind, erkundet zu werden, sind Guix’ Funktionalitäten zum interaktiven Editieren und zur Fehlersuche, die die REPL von Guile darbietet."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1295
+msgid "Those fancy features are completely optional and can wait; now is a good time to take a well-deserved break.  With what we've introduced here you should be well armed to package lots of programs.  You can get started right away and hopefully we will see your contributions soon!"
+msgstr "Diese eindrucksvollen Funktionalitäten sind völlig optional und können warten; jetzt ist die Zeit für eine wohlverdiente Pause. Mit dem Wissen, in das wir hier eingeführt haben, sollten Sie für das Paketieren vieler Programme gut gerüstet sein. Sie können gleich anfangen und hoffentlich bekommen wir bald Ihre Beiträge zu sehen!"
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1296 doc/guix-cookbook.texi:1297
+#, no-wrap
+msgid "References"
+msgstr "Literaturverzeichnis"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1302
+msgid "The @uref{https://www.gnu.org/software/guix/manual/en/html_node/Defining-Packages.html, package reference in the manual}"
+msgstr "Die @uref{https://guix.gnu.org/manual/de/html_node/Pakete-definieren.html, Paketreferenz im Handbuch}"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1305
+msgid "@uref{https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org, Pjotr’s hacking guide to GNU Guix}"
+msgstr "@uref{https://gitlab.com/pjotrp/guix-notes/blob/master/HACKING.org, Pjotr’s Hacking-Leitfaden für GNU Guix}"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1308
+msgid "@uref{https://www.gnu.org/software/guix/guix-ghm-andreas-20130823.pdf, ``GNU Guix: Package without a scheme!''}, by Andreas Enge"
+msgstr "@uref{https://www.gnu.org/software/guix/guix-ghm-andreas-20130823.pdf, „GNU Guix: Package without a scheme!“} von Andreas Enge"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1317
+msgid "Guix offers a flexible language for declaratively configuring your Guix System.  This flexibility can at times be overwhelming.  The purpose of this chapter is to demonstrate some advanced configuration concepts."
+msgstr "Guix stellt eine flexible Sprache bereit, um Ihr „Guix System“ auf deklarative Weise zu konfigurieren. Diese Flexibilität kann einen manchmal überwältigen. Dieses Kapitel hat den Zweck, einige fortgeschrittene Konfigurationskonzepte vorzuzeigen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1320
+msgid "@pxref{System Configuration,,, guix, GNU Guix Reference Manual} for a complete reference."
+msgstr "Siehe @ref{Systemkonfiguration,,, guix.de, Referenzhandbuch zu GNU Guix} für eine vollständige Referenz."
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:1323
+msgid "Creating and using a custom Linux kernel on Guix System."
+msgstr "Einen eigenen Linux-Kernel auf Guix System erzeugen und benutzen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1335
+msgid "Guix is, at its core, a source based distribution with substitutes (@pxref{Substitutes,,, guix, GNU Guix Reference Manual}), and as such building packages from their source code is an expected part of regular package installations and upgrades.  Given this starting point, it makes sense that efforts are made to reduce the amount of time spent compiling packages, and recent changes and upgrades to the building and distribution of substitutes continues to be a topic of discussion within Guix."
+msgstr "Im Kern ist Guix eine quellcodebasierte Distribution mit Substituten (siehe @ref{Substitute,,, guix.de, Referenzhandbuch zu GNU Guix}), daher ist das Erstellen von Paketen aus ihrem Quellcode heraus genauso vorgesehen wie die normale Installation und Aktualisierung von Paketen. Von diesem Standpunkt ist es sinnvoll, zu versuchen, den Zeitaufwand für das Kompilieren von Paketen zu senken, und kürzliche Neuerungen sowie Verbesserungen beim Erstellen und Verteilen von Substituten bleiben ein Diskussionsthema innerhalb von Guix."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1341
+msgid "The kernel, while not requiring an overabundance of RAM to build, does take a rather long time on an average machine.  The official kernel configuration, as is the case with many GNU/Linux distributions, errs on the side of inclusiveness, and this is really what causes the build to take such a long time when the kernel is built from source."
+msgstr "Der Kernel braucht zwar keine übermäßigen Mengen an Arbeitsspeicher beim Erstellen, jedoch jede Menge Zeit auf einer durchschnittlichen Maschine. Die offizielle Konfiguration des Kernels umfasst, wie bei anderen GNU/Linux-Distributionen auch, besser zu viel als zu wenig. Das ist der eigentliche Grund, warum seine Erstellung so lange dauert, wenn man den Kernel aus dem Quellcode heraus erstellt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1346
+msgid "The Linux kernel, however, can also just be described as a regular old package, and as such can be customized just like any other package.  The procedure is a little bit different, although this is primarily due to the nature of how the package definition is written."
+msgstr "Man kann den Linux-Kernel jedoch auch als ganz normales Paket beschreiben, das genau wie jedes andere Paket angepasst werden kann. Der Vorgang ist ein klein wenig anders, aber das liegt hauptsächlich an der Art, wie die Paketdefinition geschrieben ist."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1349
+msgid "The @code{linux-libre} kernel package definition is actually a procedure which creates a package."
+msgstr "Die @code{linux-libre}-Kernelpaketdefinition ist tatsächlich eine Prozedur, die ein Paket liefert."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1361
+#, no-wrap
+msgid ""
+"(define* (make-linux-libre version hash supported-systems\n"
+"                           #:key\n"
+"                           ;; A function that takes an arch and a variant.\n"
+"                           ;; See kernel-config for an example.\n"
+"                           (extra-version #f)\n"
+"                           (configuration-file #f)\n"
+"                           (defconfig \"defconfig\")\n"
+"                           (extra-options %default-extra-linux-options)\n"
+"                           (patches (list %boot-logo-patch)))\n"
+"  ...)\n"
+msgstr ""
+"(define* (make-linux-libre version hash supported-systems\n"
+"                           #:key\n"
+"                           ;; A function that takes an arch and a variant.\n"
+"                           ;; See kernel-config for an example.\n"
+"                           (extra-version #f)\n"
+"                           (configuration-file #f)\n"
+"                           (defconfig \"defconfig\")\n"
+"                           (extra-options %default-extra-linux-options)\n"
+"                           (patches (list %boot-logo-patch)))\n"
+"  ...)\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1365
+msgid "The current @code{linux-libre} package is for the 5.1.x series, and is declared like this:"
+msgstr "Das momentane @code{linux-libre}-Paket zielt ab auf die 5.1.x-Serie und ist wie folgt deklariert:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1373
+#, no-wrap
+msgid ""
+"(define-public linux-libre\n"
+"  (make-linux-libre %linux-libre-version\n"
+"                    %linux-libre-hash\n"
+"                    '(\"x86_64-linux\" \"i686-linux\" \"armhf-linux\" \"aarch64-linux\")\n"
+"                    #:patches %linux-libre-5.1-patches\n"
+"                    #:configuration-file kernel-config))\n"
+msgstr ""
+"(define-public linux-libre\n"
+"  (make-linux-libre %linux-libre-version\n"
+"                    %linux-libre-hash\n"
+"                    '(\"x86_64-linux\" \"i686-linux\" \"armhf-linux\" \"aarch64-linux\")\n"
+"                    #:patches %linux-libre-5.1-patches\n"
+"                    #:configuration-file kernel-config))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1382
+msgid "Any keys which are not assigned values inherit their default value from the @code{make-linux-libre} definition.  When comparing the two snippets above, you may notice that the code comment in the first doesn't actually refer to the @code{#:extra-version} keyword; it is actually for @code{#:configuration-file}.  Because of this, it is not actually easy to include a custom kernel configuration from the definition, but don't worry, there are other ways to work with what we do have."
+msgstr "Alle Schlüssel, denen kein Wert zugewiesen wird, erben ihren Vorgabewert von der Definition von @code{make-linux-libre}. Wenn Sie die beiden Schnipsel oben vergleichen, könnte Ihnen auffallen, dass sich der Code-Kommentar in ersterem tatsächlich @emph{nicht} auf das @code{#:extra-version}-Schlüsselwort bezieht, sondern auf @code{#:configuration-file}. Deswegen ist es nicht so leicht, aus der Definition heraus eine eigene Kernel-Konfiguration anhand der Definition zu schreiben, aber keine Sorge, es gibt andere Möglichkeiten, um mit dem zu arbeiten, was uns gegeben wurde."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1388
+msgid "There are two ways to create a kernel with a custom kernel configuration.  The first is to provide a standard @file{.config} file during the build process by including an actual @file{.config} file as a native input to our custom kernel.  The following is a snippet from the custom @code{'configure} phase of the @code{make-linux-libre} package definition:"
+msgstr "Es gibt zwei Möglichkeiten, einen Kernel mit eigener Kernel-Konfiguration zu erzeugen. Die erste ist, eine normale @file{.config}-Datei als native Eingabe zu unserem angepassten Kernel hinzuzufügen. Im Folgenden sehen Sie ein Schnipsel aus der angepassten @code{'configure}-Phase der @code{make-linux-libre}-Paketdefinition:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1392
+#, no-wrap
+msgid ""
+"(let ((build  (assoc-ref %standard-phases 'build))\n"
+"      (config (assoc-ref (or native-inputs inputs) \"kconfig\")))\n"
+"\n"
+msgstr ""
+"(let ((build  (assoc-ref %standard-phases 'build))\n"
+"      (config (assoc-ref (or native-inputs inputs) \"kconfig\")))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1400
+#, no-wrap
+msgid ""
+"  ;; Use a custom kernel configuration file or a default\n"
+"  ;; configuration file.\n"
+"  (if config\n"
+"      (begin\n"
+"        (copy-file config \".config\")\n"
+"        (chmod \".config\" #o666))\n"
+"      (invoke \"make\" ,defconfig))\n"
+msgstr ""
+"  ;; Use a custom kernel configuration file or a default\n"
+"  ;; configuration file.\n"
+"  (if config\n"
+"      (begin\n"
+"        (copy-file config \".config\")\n"
+"        (chmod \".config\" #o666))\n"
+"      (invoke \"make\" ,defconfig))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1405
+msgid "Below is a sample kernel package.  The @code{linux-libre} package is nothing special and can be inherited from and have its fields overridden like any other package:"
+msgstr "Nun folgt ein Beispiel-Kernel-Paket. Das @code{linux-libre}-Paket ist nicht anders als andere Pakete und man kann von ihm erben und seine Felder ersetzen wie bei jedem anderen Paket."
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1414
+#, no-wrap
+msgid ""
+"(define-public linux-libre/E2140\n"
+"  (package\n"
+"    (inherit linux-libre)\n"
+"    (native-inputs\n"
+"     `((\"kconfig\" ,(local-file \"E2140.config\"))\n"
+"      ,@@(alist-delete \"kconfig\"\n"
+"                      (package-native-inputs linux-libre))))))\n"
+msgstr ""
+"(define-public linux-libre/E2140\n"
+"  (package\n"
+"    (inherit linux-libre)\n"
+"    (native-inputs\n"
+"     `((\"kconfig\" ,(local-file \"E2140.config\"))\n"
+"      ,@@(alist-delete \"kconfig\"\n"
+"                      (package-native-inputs linux-libre))))))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1421
+msgid "In the same directory as the file defining @code{linux-libre-E2140} is a file named @file{E2140.config}, which is an actual kernel configuration file.  The @code{defconfig} keyword of @code{make-linux-libre} is left blank here, so the only kernel configuration in the package is the one which was included in the @code{native-inputs} field."
+msgstr "Im selben Verzeichnis wie die Datei, die @code{linux-libre-E2140} definiert, befindet sich noch eine Datei namens @file{E2140.config}, bei der es sich um eine richtige Kernel-Konfigurationsdatei handelt. Das Schlüsselwort @code{defconfig} von @code{make-linux-libre} wird hier leer gelassen, so dass die einzige Kernel-Konfiguration im Paket die im @code{native-inputs}-Feld ist."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1426
+msgid "The second way to create a custom kernel is to pass a new value to the @code{extra-options} keyword of the @code{make-linux-libre} procedure.  The @code{extra-options} keyword works with another function defined right below it:"
+msgstr "Die zweite Möglichkeit, einen eigenen Kernel zu erzeugen, ist, einen neuen Wert an das @code{extra-options}-Schlüsselwort der @code{make-linux-libre}-Prozedur zu übergeben. Das @code{extra-options}-Schlüsselwort wird zusammen mit einer anderen, direkt darunter definierten Funktion benutzt:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1442
+#, no-wrap
+msgid ""
+"(define %default-extra-linux-options\n"
+"  `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html\n"
+"   (\"CONFIG_DEVPTS_MULTIPLE_INSTANCES\" . #t)\n"
+"   ;; Modules required for initrd:\n"
+"   (\"CONFIG_NET_9P\" . m)\n"
+"   (\"CONFIG_NET_9P_VIRTIO\" . m)\n"
+"   (\"CONFIG_VIRTIO_BLK\" . m)\n"
+"   (\"CONFIG_VIRTIO_NET\" . m)\n"
+"   (\"CONFIG_VIRTIO_PCI\" . m)\n"
+"   (\"CONFIG_VIRTIO_BALLOON\" . m)\n"
+"   (\"CONFIG_VIRTIO_MMIO\" . m)\n"
+"   (\"CONFIG_FUSE_FS\" . m)\n"
+"   (\"CONFIG_CIFS\" . m)\n"
+"   (\"CONFIG_9P_FS\" . m)))\n"
+"\n"
+msgstr ""
+"(define %default-extra-linux-options\n"
+"  `(;; https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00039.html\n"
+"   (\"CONFIG_DEVPTS_MULTIPLE_INSTANCES\" . #t)\n"
+"   ;; Modules required for initrd:\n"
+"   (\"CONFIG_NET_9P\" . m)\n"
+"   (\"CONFIG_NET_9P_VIRTIO\" . m)\n"
+"   (\"CONFIG_VIRTIO_BLK\" . m)\n"
+"   (\"CONFIG_VIRTIO_NET\" . m)\n"
+"   (\"CONFIG_VIRTIO_PCI\" . m)\n"
+"   (\"CONFIG_VIRTIO_BALLOON\" . m)\n"
+"   (\"CONFIG_VIRTIO_MMIO\" . m)\n"
+"   (\"CONFIG_FUSE_FS\" . m)\n"
+"   (\"CONFIG_CIFS\" . m)\n"
+"   (\"CONFIG_9P_FS\" . m)))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1453
+#, no-wrap
+msgid ""
+"(define (config->string options)\n"
+"  (string-join (map (match-lambda\n"
+"                      ((option . 'm)\n"
+"                       (string-append option \"=m\"))\n"
+"                      ((option . #t)\n"
+"                       (string-append option \"=y\"))\n"
+"                      ((option . #f)\n"
+"                       (string-append option \"=n\")))\n"
+"                    options)\n"
+"               \"\\n\"))\n"
+msgstr ""
+"(define (config->string options)\n"
+"  (string-join (map (match-lambda\n"
+"                      ((option . 'm)\n"
+"                       (string-append option \"=m\"))\n"
+"                      ((option . #t)\n"
+"                       (string-append option \"=y\"))\n"
+"                      ((option . #f)\n"
+"                       (string-append option \"=n\")))\n"
+"                    options)\n"
+"               \"\\n\"))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1456
+msgid "And in the custom configure script from the `make-linux-libre` package:"
+msgstr "Und im eigenen configure-Skript des „make-linux-libre“-Pakets:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1464
+#, no-wrap
+msgid ""
+";; Appending works even when the option wasn't in the\n"
+";; file.  The last one prevails if duplicated.\n"
+"(let ((port (open-file \".config\" \"a\"))\n"
+"      (extra-configuration ,(config->string extra-options)))\n"
+"  (display extra-configuration port)\n"
+"  (close-port port))\n"
+"\n"
+msgstr ""
+";; Appending works even when the option wasn't in the\n"
+";; file.  The last one prevails if duplicated.\n"
+"(let ((port (open-file \".config\" \"a\"))\n"
+"      (extra-configuration ,(config->string extra-options)))\n"
+"  (display extra-configuration port)\n"
+"  (close-port port))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1466
+#, no-wrap
+msgid "(invoke \"make\" \"oldconfig\"))))\n"
+msgstr "(invoke \"make\" \"oldconfig\"))))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1471
+msgid "So by not providing a configuration-file the @file{.config} starts blank, and then we write into it the collection of flags that we want.  Here's another custom kernel:"
+msgstr "Indem wir also kein „configuration-file“ mitgeben, ist @file{.config} anfangs leer und danach schreiben wir dort die Sammlung der gewünschten Optionen („Flags“) hinein. Hier ist noch ein eigener Kernel:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1479
+#, no-wrap
+msgid ""
+"(define %macbook41-full-config\n"
+"  (append %macbook41-config-options\n"
+"          %filesystems\n"
+"          %efi-support\n"
+"          %emulation\n"
+"          (@@@@ (gnu packages linux) %default-extra-linux-options)))\n"
+"\n"
+msgstr ""
+"(define %macbook41-full-config\n"
+"  (append %macbook41-config-options\n"
+"          %filesystems\n"
+"          %efi-support\n"
+"          %emulation\n"
+"          (@@@@ (gnu packages linux) %default-extra-linux-options)))\n"
+"\n"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1489
+#, no-wrap
+msgid ""
+"(define-public linux-libre-macbook41\n"
+"  ;; XXX: Access the internal 'make-linux-libre' procedure, which is\n"
+"  ;; private and unexported, and is liable to change in the future.\n"
+"  ((@@@@ (gnu packages linux) make-linux-libre) (@@@@ (gnu packages linux) %linux-libre-version)\n"
+"                      (@@@@ (gnu packages linux) %linux-libre-hash)\n"
+"                      '(\"x86_64-linux\")\n"
+"                      #:extra-version \"macbook41\"\n"
+"                      #:patches (@@@@ (gnu packages linux) %linux-libre-5.1-patches)\n"
+"                      #:extra-options %macbook41-config-options))\n"
+msgstr ""
+"(define-public linux-libre-macbook41\n"
+"  ;; XXX: Auf die interne 'make-linux-libre'-Prozedur zugreifen, welche privat\n"
+"  ;; ist und nicht exportiert, desweiteren kann sie sich in Zukunft ändern.\n"
+"  ((@@@@ (gnu packages linux) make-linux-libre) (@@@@ (gnu packages linux) %linux-libre-version)\n"
+"                      (@@@@ (gnu packages linux) %linux-libre-hash)\n"
+"                      '(\"x86_64-linux\")\n"
+"                      #:extra-version \"macbook41\"\n"
+"                      #:patches (@@@@ (gnu packages linux) %linux-libre-5.1-patches)\n"
+"                      #:extra-options %macbook41-config-options))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1496
+msgid "In the above example @code{%filesystems} is a collection of flags enabling different filesystem support, @code{%efi-support} enables EFI support and @code{%emulation} enables a x86_64-linux machine to act in 32-bit mode also.  @code{%default-extra-linux-options} are the ones quoted above, which had to be added in since they were replaced in the @code{extra-options} keyword."
+msgstr "Im obigen Beispiel ist @code{%filesystems} eine Sammlung solcher „Flags“, mit denen Unterstützung für verschiedene Dateisysteme aktiviert wird, @code{%efi-support} aktiviert Unterstützung für EFI und @code{%emulation} ermöglicht es einer x86_64-linux-Maschine, auch im 32-Bit-Modus zu arbeiten. Die @code{%default-extra-linux-options} sind die oben zitierten, die wieder hinzugefügt werden mussten, weil sie durch das @code{extra-options}-Schlüsselwort ersetzt worden waren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1505
+msgid "This all sounds like it should be doable, but how does one even know which modules are required for a particular system? Two places that can be helpful in trying to answer this question is the @uref{https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel, Gentoo Handbook} and the @uref{https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig, documentation from the kernel itself}.  From the kernel documentation, it seems that @code{make localmodconfig} is the command we want."
+msgstr "All das klingt machbar, aber woher weiß man überhaupt, welche Module für ein bestimmtes System nötig sind? Es gibt zwei hilfreiche Anlaufstellen, zum einen das @uref{https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel, Gentoo-Handbuch}, zum anderen die @uref{https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig, Dokumentation des Kernels selbst}. Aus der Kernel-Dokumentation erfahren wir, dass @code{make localmodconfig} der Befehl sein könnte, den wir wollen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1508
+msgid "In order to actually run @code{make localmodconfig} we first need to get and unpack the kernel source code:"
+msgstr "Um @code{make localmodconfig} auch tatsächlich ausführen zu können, müssen wir zunächst den Quellcode des Kernels holen und entpacken:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1511
+#, no-wrap
+msgid "tar xf $(guix build linux-libre --source)\n"
+msgstr "tar xf $(guix build linux-libre --source)\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1518
+msgid "Once inside the directory containing the source code run @code{touch .config} to create an initial, empty @file{.config} to start with.  @code{make localmodconfig} works by seeing what you already have in @file{.config} and letting you know what you're missing.  If the file is blank then you're missing everything.  The next step is to run:"
+msgstr "Sobald wir im Verzeichnis mit dem Quellcode sind, führen Sie @code{touch .config} aus, um mit einer ersten, leeren @file{.config} anzufangen. @code{make localmodconfig} funktioniert so, dass angeschaut wird, was bereits in Ihrer @file{.config} steht, und Ihnen mitgeteilt wird, was Ihnen noch fehlt. Wenn die Datei leer bleibt, fehlt eben alles. Der nächste Schritt ist, das hier auszuführen:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1521
+#, no-wrap
+msgid "guix environment linux-libre -- make localmodconfig\n"
+msgstr "guix environment linux-libre -- make localmodconfig\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1526
+msgid "and note the output.  Do note that the @file{.config} file is still empty.  The output generally contains two types of warnings.  The first start with \"WARNING\" and can actually be ignored in our case.  The second read:"
+msgstr "und uns die Ausgabe davon anzuschauen. Beachten Sie, dass die @file{.config}-Datei noch immer leer ist. Die Ausgabe enthält im Allgemeinen zwei Arten von Warnungen. Am Anfang der ersten steht „WARNING“ und in unserem Fall können wir sie tatsächlich ignorieren. Bei der zweiten heißt es:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1529
+#, no-wrap
+msgid "module pcspkr did not have configs CONFIG_INPUT_PCSPKR\n"
+msgstr "module pcspkr did not have configs CONFIG_INPUT_PCSPKR\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1534
+msgid "For each of these lines, copy the @code{CONFIG_XXXX_XXXX} portion into the @file{.config} in the directory, and append @code{=m}, so in the end it looks like this:"
+msgstr "Für jede solche Zeile kopieren Sie den @code{CONFIG_XXXX_XXXX}-Teil in die @file{.config} im selben Verzeichnis und hängen @code{=m} an, damit es am Ende so aussieht:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1538
+#, no-wrap
+msgid ""
+"CONFIG_INPUT_PCSPKR=m\n"
+"CONFIG_VIRTIO=m\n"
+msgstr ""
+"CONFIG_INPUT_PCSPKR=m\n"
+"CONFIG_VIRTIO=m\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1547
+msgid "After copying all the configuration options, run @code{make localmodconfig} again to make sure that you don't have any output starting with ``module''.  After all of these machine specific modules there are a couple more left that are also needed.  @code{CONFIG_MODULES} is necessary so that you can build and load modules separately and not have everything built into the kernel.  @code{CONFIG_BLK_DEV_SD} is required for reading from hard drives.  It is possible that there are other modules which you will need."
+msgstr "Nachdem Sie alle Konfigurationsoptionen kopiert haben, führen Sie noch einmal @code{make localmodconfig} aus, um sicherzugehen, dass es keine Ausgaben mehr gibt, deren erstes Wort „module“ ist. Zusätzlich zu diesen maschinenspezifischen Modulen gibt es noch ein paar mehr, die Sie auch brauchen. @code{CONFIG_MODULES} brauchen Sie, damit Sie Module getrennt erstellen und laden können und nicht alles im Kernel eingebaut sein muss. Sie brauchen auch @code{CONFIG_BLK_DEV_SD}, um von Festplatten lesen zu können. Möglicherweise gibt es auch sonst noch Module, die Sie brauchen werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1551
+msgid "This post does not aim to be a guide to configuring your own kernel however, so if you do decide to build a custom kernel you'll have to seek out other guides to create a kernel which is just right for your needs."
+msgstr "Die Absicht hinter dem hier Niedergeschriebenen ist @emph{nicht}, eine Anleitung zum Konfigurieren eines eigenen Kernels zu sein. Wenn Sie also vorhaben, den Kernel an Ihre ganz eigenen Bedürfnisse anzupassen, werden Sie in anderen Anleitungen fündig."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1559
+msgid "The second way to setup the kernel configuration makes more use of Guix's features and allows you to share configuration segments between different kernels.  For example, all machines using EFI to boot have a number of EFI configuration flags that they need.  It is likely that all the kernels will share a list of filesystems to support.  By using variables it is easier to see at a glance what features are enabled and to make sure you don't have features in one kernel but missing in another."
+msgstr "Die zweite Möglichkeit, die Kernel-Konfiguration einzurichten, benutzt mehr von Guix’ Funktionalitäten und sie ermöglicht es Ihnen, Gemeinsamkeiten von Konfigurationen zwischen verschiedenen Kernels zu teilen. Zum Beispiel wird eine Reihe von EFI-Konfigurationsoptionen von allen Maschinen, die EFI benutzen, benötigt. Wahrscheinlich haben all diese Kernel eine Schnittmenge zu unterstützender Dateisysteme. Indem Sie Variable benutzen, können Sie leicht auf einen Schlag sehen, welche Funktionalitäten aktiviert sind, und gleichzeitig sicherstellen, dass Ihnen nicht Funktionalitäten des einen Kernels im anderen fehlen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1564
+msgid "Left undiscussed however, is Guix's initrd and its customization.  It is likely that you'll need to modify the initrd on a machine using a custom kernel, since certain modules which are expected to be built may not be available for inclusion into the initrd."
+msgstr "Was wir hierbei nicht erläutert haben, ist, wie Guix’ initrd und dessen Anpassung funktioniert. Wahrscheinlich werden Sie auf einer Maschine mit eigenem Kernel die initrd verändern müssen, weil sonst versucht wird, bestimmte Module in die initrd einzubinden, die Sie gar nicht erstellen haben lassen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1574
+msgid "Guix is a functional package manager that offers many features beyond what more traditional package managers can do.  To the uninitiated, those features might not have obvious use cases at first.  The purpose of this chapter is to demonstrate some advanced package management concepts."
+msgstr "Guix ist ein funktionales Paketverwaltungsprogramm, das weit mehr Funktionalitäten als traditionelle Paketverwalter anbietet. Für nicht Eingeweihte sind deren Anwendungsfälle nicht sofort ersichtlich. Dieses Kapitel ist dazu da, manche fortgeschrittenen Paketverwaltungskonzepte zu demonstrieren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1577
+msgid "@pxref{Package Management,,, guix, GNU Guix Reference Manual} for a complete reference."
+msgstr "Siehe @ref{Paketverwaltung,,, guix.de, Referenzhandbuch zu GNU Guix} für eine vollständige Referenz."
+
+#. type: section
+#: doc/guix-cookbook.texi:1580 doc/guix-cookbook.texi:1582
+#: doc/guix-cookbook.texi:1583
+#, no-wrap
+msgid "Guix Profiles in Practice"
+msgstr "Guix-Profile in der Praxis"
+
+#. type: menuentry
+#: doc/guix-cookbook.texi:1580
+msgid "Strategies for multiple profiles and manifests."
+msgstr "Strategien für mehrere Profile und Manifeste."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1588
+msgid "Guix provides a very useful feature that may be quite foreign to newcomers: @emph{profiles}.  They are a way to group package installations together and all users on the same system are free to use as many profiles as they want."
+msgstr "Guix gibt uns eine sehr nützliche Funktionalität, die Neuankömmlingen sehr fremd sein dürfte: @emph{Profile}. Mit ihnen kann man Paketinstallationen zusammenfassen und jeder Benutzer desselben Systems kann so viele davon anlegen, wie sie oder er möchte."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1593
+msgid "Whether you're a developer or not, you may find that multiple profiles bring you great power and flexibility.  While they shift the paradigm somewhat compared to @emph{traditional package managers}, they are very convenient to use once you've understood how to set them up."
+msgstr "Ob Sie ein Entwickler sind oder nicht, Sie dürften feststellen, dass mehrere Profile ein mächtiges Werkzeug sind, das Sie flexibler macht. Zwar ist es ein gewisser Paradigmenwechsel verglichen mit @emph{traditioneller Paketverwaltung}, doch sind sie sehr praktisch, sobald man im Umgang mit ihnen den Dreh ’raushat."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1599
+msgid "If you are familiar with Python's @samp{virtualenv}, you can think of a profile as a kind of universal @samp{virtualenv} that can hold any kind of software whatsoever, not just Python software.  Furthermore, profiles are self-sufficient: they capture all the runtime dependencies which guarantees that all programs within a profile will always work at any point in time."
+msgstr "Wenn Ihnen Pythons @samp{virtualenv} vertraut ist, können Sie sich ein Profil als eine Art universelles @samp{virtualenv} vorstellen, das jede Art von Software enthalten kann und nicht nur Python-Software. Desweiteren sind Profile selbstversorgend: Sie schließen alle Laufzeitabhängigkeiten ein und garantieren somit, dass alle Programme innerhalb eines Profils stets zu jeder Zeit funktionieren werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1601
+msgid "Multiple profiles have many benefits:"
+msgstr "Mehrere Profile bieten viele Vorteile:"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1605
+msgid "Clean semantic separation of the various packages a user needs for different contexts."
+msgstr "Klare semantische Trennung der verschiedenen Pakete, die ein Nutzer für verschiedene Kontexte braucht."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1609
+msgid "Multiple profiles can be made available into the environment either on login or within a dedicated shell."
+msgstr "Mehrere Profile können in der Umgebung verfügbar gemacht werden, entweder beim Anmelden oder in einer eigenen Shell."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1613
+msgid "Profiles can be loaded on demand.  For instance, the user can use multiple shells, each of them running different profiles."
+msgstr "Profile können bei Bedarf geladen werden. Zum Beispiel kann der Nutzer mehrere Unter-Shells benutzen, von denen jede ein anderes Profil ausführt."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1618
+msgid "Isolation: Programs from one profile will not use programs from the other, and the user can even install different versions of the same programs to the two profiles without conflict."
+msgstr "Isolierung: Programme aus dem einen Profil werden keine Programme aus dem anderen benutzen, und der Nutzer kann sogar verschiedene Versionen desselben Programms in die zwei Profile installieren, ohne dass es zu Konflikten kommt."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1622
+msgid "Deduplication: Profiles share dependencies that happens to be the exact same.  This makes multiple profiles storage-efficient."
+msgstr "Deduplizierung: Profile teilen sich Abhängigkeiten, wenn sie genau gleich sind. Dadurch sind mehrere Profile speichereffizient."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1630
+msgid "Reproducible: when used with declarative manifests, a profile can be fully specified by the Guix commit that was active when it was set up.  This means that the exact same profile can be @uref{https://guix.gnu.org/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/, set up anywhere and anytime}, with just the commit information.  See the section on @ref{Reproducible profiles}."
+msgstr "Reproduzierbar: Wenn man dafür deklarative Manifeste benutzt, kann ein Profil allein durch den bei dessen Einrichtung aktiven Guix-Commit eindeutig spezifiziert werden. Das bedeutet, dass man genau dasselbe Profil @uref{https://guix.gnu.org/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/, jederzeit und überall einrichten kann} und man dafür nur die Commit-Informationen braucht. Siehe den Abschnitt über @ref{Reproduzierbare Profile}."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1634
+msgid "Easier upgrades and maintenance: Multiple profiles make it easy to keep package listings at hand and make upgrades completely friction-less."
+msgstr "Leichtere Aktualisierung und Wartung: Mit mehreren Profilen ist es ein Leichtes, eine Liste von Paketen zur Hand zu haben und Aktualisierungen völlig reibungslos ablaufen zu lassen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1637
+msgid "Concretely, here follows some typical profiles:"
+msgstr "Konkret wären diese hier typische Profile:"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1641
+msgid "The dependencies of a project you are working on."
+msgstr "Die Abhängigkeiten des Projekts, an dem Sie arbeiten."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1644
+msgid "Your favourite programming language libraries."
+msgstr "Die Bibliotheken Ihrer Lieblingsprogrammiersprache."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1647
+msgid "Laptop-specific programs (like @samp{powertop}) that you don't need on a desktop."
+msgstr "Programme nur für Laptops (wie @samp{powertop}), für die Sie auf einem „Desktop“-Rechner keine Verwendung haben."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1651
+msgid "@TeX{}live (this one can be really useful when you need to install just one package for this one document you've just received over email)."
+msgstr "@TeX{}live (das kann wirklich praktisch sein, wenn Sie nur ein einziges Paket für dieses eine Dokument installieren müssen, das Ihnen jemand in einer E-Mail geschickt hat)."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1654
+msgid "Games."
+msgstr "Spiele."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1657
+msgid "Let's dive in the set up!"
+msgstr "Tauchen wir ein in deren Einrichtung!"
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1658 doc/guix-cookbook.texi:1659
+#, no-wrap
+msgid "Basic setup with manifests"
+msgstr "Grundlegende Einrichtung über Manifeste"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1663
+msgid "A Guix profile can be set up @emph{via} a so-called @emph{manifest specification} that looks like this:"
+msgstr "Ein Guix-Profil kann über eine sogenannte @emph{Manifest-Spezifikation} eingerichtet werden. Das sieht etwa so aus:"
+
+#. type: lisp
+#: doc/guix-cookbook.texi:1673
+#, no-wrap
+msgid ""
+"(specifications->manifest\n"
+"  '(\"package-1\"\n"
+"    ;; Version 1.3 of package-2.\n"
+"    \"package-2@@1.3\"\n"
+"    ;; The \"lib\" output of package-3.\n"
+"    \"package-3:lib\"\n"
+"    ; ...\n"
+"    \"package-N\"))\n"
+msgstr ""
+"(specifications->manifest\n"
+"  '(\"paket-1\"\n"
+"    ;; Version 1.3 von paket-2.\n"
+"    \"paket-2@@1.3\"\n"
+"    ;; Die \"lib\"-Ausgabe von paket-3.\n"
+"    \"paket-3:lib\"\n"
+"    ; …\n"
+"    \"paket-N\"))\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1677
+msgid "@pxref{Invoking guix package,,, guix, GNU Guix Reference Manual}, for the syntax details."
+msgstr "Siehe @ref{Aufruf von guix package,,, guix.de, Referenzhandbuch zu GNU Guix}, für Details zur Syntax."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1679
+msgid "We can create a manifest specification per profile and install them this way:"
+msgstr "Wir können eine Manifestspezifikation für jedes Profil schreiben und es auf diese Weise installieren:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1684
+#, no-wrap
+msgid ""
+"GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles\n"
+"mkdir -p \"$GUIX_EXTRA_PROFILES\"/my-project # if it does not exist yet\n"
+"guix package --manifest=/path/to/guix-my-project-manifest.scm --profile=\"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+msgstr ""
+"GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles\n"
+"mkdir -p \"$GUIX_EXTRA_PROFILES\"/my-project # wenn es noch nicht existiert\n"
+"guix package --manifest=/pfad/zu/guix-my-project-manifest.scm --profile=\"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1688
+msgid "Here we set an arbitrary variable @samp{GUIX_EXTRA_PROFILES} to point to the directory where we will store our profiles in the rest of this article."
+msgstr "Hierbei haben wir eine beliebig benannte Variable @samp{GUIX_EXTRA_PROFILES} eingerichtet, die auf das Verzeichnis verweist, wo wir unsere Profile für den Rest dieses Artikels speichern wollen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1694
+msgid "Placing all your profiles in a single directory, with each profile getting its own sub-directory, is somewhat cleaner.  This way, each sub-directory will contain all the symlinks for precisely one profile.  Besides, \"looping over profiles\" becomes obvious from any programming language (e.g. a shell script) by simply looping over the sub-directories of @samp{$GUIX_EXTRA_PROFILES}."
+msgstr "Wenn Sie all Ihre Profile in ein einzelnes Verzeichnis legen und jedes Profil ein Unterverzeichnis darin bekommt, ist die Organisation etwas verständlicher. Dadurch wird jedes Unterverzeichnis all die symbolischen Verknüpfungen für genau ein Profil enthalten. Außerdem wird es von jeder Programmiersprache aus einfach, eine „Schleife über die Profile“ zu schreiben (z.B.@: in einem Shell-Skript), indem Sie es einfach die Unterverzeichnisse von @samp{$GUIX_EXTRA_PROFILES} in einer Schleife durchlaufen lassen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1696
+msgid "Note that it's also possible to loop over the output of"
+msgstr "Beachten Sie, dass man auch eine Schleife über die Ausgabe von"
+
+#. type: example
+#: doc/guix-cookbook.texi:1699
+#, no-wrap
+msgid "guix package --list-profiles\n"
+msgstr "guix package --list-profiles\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1702
+msgid "although you'll probably have to filter out @samp{~/.config/guix/current}."
+msgstr "schreiben kann, obwohl Sie dabei wahrscheinlich @samp{~/.config/guix/current} herausfiltern wollen würden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1704
+msgid "To enable all profiles on login, add this to your @samp{~/.bash_profile} (or similar):"
+msgstr "Um bei der Anmeldung alle Profile zu aktivieren, fügen Sie dies in Ihre @samp{~/.bash_profile} ein (oder etwas Entsprechendes):"
+
+#. type: example
+#: doc/guix-cookbook.texi:1714
+#, no-wrap
+msgid ""
+"for i in $GUIX_EXTRA_PROFILES/*; do\n"
+"  profile=$i/$(basename \"$i\")\n"
+"  if [ -f \"$profile\"/etc/profile ]; then\n"
+"    GUIX_PROFILE=\"$profile\"\n"
+"    . \"$GUIX_PROFILE\"/etc/profile\n"
+"  fi\n"
+"  unset profile\n"
+"done\n"
+msgstr ""
+"for i in $GUIX_EXTRA_PROFILES/*; do\n"
+"  profile=$i/$(basename \"$i\")\n"
+"  if [ -f \"$profile\"/etc/profile ]; then\n"
+"    GUIX_PROFILE=\"$profile\"\n"
+"    . \"$GUIX_PROFILE\"/etc/profile\n"
+"  fi\n"
+"  unset profile\n"
+"done\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1719
+msgid "Note to Guix System users: the above reflects how your default profile @samp{~/.guix-profile} is activated from @samp{/etc/profile}, that latter being loaded by @samp{~/.bashrc} by default."
+msgstr "Eine Anmerkung für Nutzer von „Guix System“: Obiger Code entspricht dem, wie Ihr voreingestelltes Profil @samp{~/.guix-profile} durch @samp{/etc/profile} aktiviert wird, was nach Vorgabe durch @samp{~/.bashrc} geladen wird."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1721
+msgid "You can obviously choose to only enable a subset of them:"
+msgstr "Selbstverständlich können Sie sich auch dafür entscheiden, nur eine Teilmenge zu aktivieren:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1731
+#, no-wrap
+msgid ""
+"for i in \"$GUIX_EXTRA_PROFILES\"/my-project-1 \"$GUIX_EXTRA_PROFILES\"/my-project-2; do\n"
+"  profile=$i/$(basename \"$i\")\n"
+"  if [ -f \"$profile\"/etc/profile ]; then\n"
+"    GUIX_PROFILE=\"$profile\"\n"
+"    . \"$GUIX_PROFILE\"/etc/profile\n"
+"  fi\n"
+"  unset profile\n"
+"done\n"
+msgstr ""
+"for i in \"$GUIX_EXTRA_PROFILES\"/my-project-1 \"$GUIX_EXTRA_PROFILES\"/my-project-2; do\n"
+"  profile=$i/$(basename \"$i\")\n"
+"  if [ -f \"$profile\"/etc/profile ]; then\n"
+"    GUIX_PROFILE=\"$profile\"\n"
+"    . \"$GUIX_PROFILE\"/etc/profile\n"
+"  fi\n"
+"  unset profile\n"
+"done\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1735
+msgid "When a profile is off, it's straightforward to enable it for an individual shell without \"polluting\" the rest of the user session:"
+msgstr "Wenn ein Profil abgeschaltet ist, lässt es sich mit Leichtigkeit für eine bestimmte Shell aktivieren, ohne die restliche Benutzersitzung zu „verschmutzen“:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1738
+#, no-wrap
+msgid "GUIX_PROFILE=\"path/to/my-project\" ; . \"$GUIX_PROFILE\"/etc/profile\n"
+msgstr "GUIX_PROFILE=\"pfad/zu/my-project\" ; . \"$GUIX_PROFILE\"/etc/profile\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1745
+msgid "The key to enabling a profile is to @emph{source} its @samp{etc/profile} file.  This file contains shell code that exports the right environment variables necessary to activate the software contained in the profile.  It is built automatically by Guix and meant to be sourced.  It contains the same variables you would get if you ran:"
+msgstr "Der Schlüssel dazu, wie man ein Profil aktiviert, ist dessen @samp{etc/profile}-Datei mit @command{source} zu laden. Diese Datei enthält einige Shell-Befehle, um die für das Aktivieren der Software im Profil nötigen Umgebungsvariablen zu exportieren. Die Datei wird durch Guix automatisch erzeugt, um mit @command{source} eingelesen zu werden. Sie enthält dieselben Variablen, die Sie nach Ausführung dieses Befehls bekämen:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1748
+#, no-wrap
+msgid "guix package --search-paths=prefix --profile=$my_profile\"\n"
+msgstr "guix package --search-paths=prefix --profile=$my_profile\"\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1752
+msgid "Once again, see (@pxref{Invoking guix package,,, guix, GNU Guix Reference Manual})  for the command line options."
+msgstr "Siehe auch hier das @ref{Aufruf von guix package,,, guix.de, Referenzhandbuch zu GNU Guix} für die Befehlszeilenoptionen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1754
+msgid "To upgrade a profile, simply install the manifest again:"
+msgstr "Um ein Profil zu aktualisieren, installieren Sie das Manifest einfach nochmal:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1757
+#, no-wrap
+msgid "guix package -m /path/to/guix-my-project-manifest.scm -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+msgstr "guix package -m /pfad/zu/guix-my-project-manifest.scm -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1763
+msgid "To upgrade all profiles, it's easy enough to loop over them.  For instance, assuming your manifest specifications are stored in @samp{~/.guix-manifests/guix-$profile-manifest.scm}, with @samp{$profile} being the name of the profile (e.g. \"project1\"), you could do the following in Bourne shell:"
+msgstr "Um alle Profile zu aktualisieren, genügt es, sie in einer Schleife durchlaufen zu lassen. Nehmen wir zum Beispiel an, Ihre Manifestspezifikationen befinden sich in @samp{~/.guix-manifests/guix-$profile-manifest.scm}, wobei @samp{$profile} der Name des Profils ist (z.B.@: „projekt1“), dann könnten Sie in der Bourne-Shell Folgendes tun:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1768
+#, no-wrap
+msgid ""
+"for profile in \"$GUIX_EXTRA_PROFILES\"/*; do\n"
+"  guix package --profile=\"$profile\" --manifest=\"$HOME/.guix-manifests/guix-$profile-manifest.scm\"\n"
+"done\n"
+msgstr ""
+"for profile in \"$GUIX_EXTRA_PROFILES\"/*; do\n"
+"  guix package --profile=\"$profile\" --manifest=\"$HOME/.guix-manifests/guix-$profile-manifest.scm\"\n"
+"done\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1771
+msgid "Each profile has its own generations:"
+msgstr "Jedes Profil verfügt über seine eigenen Generationen:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1774
+#, no-wrap
+msgid "guix package -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project --list-generations\n"
+msgstr "guix package -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project --list-generations\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1777
+msgid "You can roll-back to any generation of a given profile:"
+msgstr "Sie können es auf jede Generation zurücksetzen:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1780
+#, no-wrap
+msgid "guix package -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project --switch-generations=17\n"
+msgstr "guix package -p \"$GUIX_EXTRA_PROFILES\"/my-project/my-project --switch-generations=17\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1784
+msgid "Finally, if you want to switch to a profile without inheriting from the current environment, you can activate it from an empty shell:"
+msgstr "Zu guter Letzt ist es möglich, zu einem Profil zu wechseln ohne die aktuelle Umgebung zu erben, indem Sie es aus einer leeren Shell heraus aktivieren:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1788
+#, no-wrap
+msgid ""
+"env -i $(which bash) --login --noprofile --norc\n"
+". my-project/etc/profile\n"
+msgstr ""
+"env -i $(which bash) --login --noprofile --norc\n"
+". my-project/etc/profile\n"
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1790 doc/guix-cookbook.texi:1791
+#, no-wrap
+msgid "Required packages"
+msgstr "Die nötigen Pakete"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1796
+msgid "Activating a profile essentially boils down to exporting a bunch of environmental variables.  This is the role of the @samp{etc/profile} within the profile."
+msgstr "Das Aktivieren eines Profils bedeutet im Grunde, dass eine Menge Umgebungsvariabler exportiert wird. Diese Rolle fällt der @samp{etc/profile}-Datei innerhalb des Profils zu."
+
+#. type: emph{#1}
+#: doc/guix-cookbook.texi:1799
+msgid "Note: Only the environmental variables of the packages that consume them will be set."
+msgstr "Anmerkung: Nur diejenigen Umgebungsvariablen der sie gebrauchenden Pakete werden gesetzt."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1803
+msgid "For instance, @samp{MANPATH} won't be set if there is no consumer application for man pages within the profile.  So if you need to transparently access man pages once the profile is loaded, you've got two options:"
+msgstr "Zum Beispiel wird kein @samp{MANPATH} gesetzt sein, wenn keine Anwendung im Profil diese „Man-Pages“ (Handbuchseiten) gebraucht. Wenn Sie also transparenten Zugriff auf Handbuchseiten brauchen, nachdem das Profil geladen wurde, dann gibt es zwei Möglichkeiten:"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1807
+msgid "Either export the variable manually, e.g."
+msgstr "Entweder Sie exportieren die Variablen von Hand, z.B."
+
+#. type: example
+#: doc/guix-cookbook.texi:1809
+#, no-wrap
+msgid "export MANPATH=/path/to/profile$@{MANPATH:+:@}$MANPATH\n"
+msgstr "export MANPATH=/path/to/profile$@{MANPATH:+:@}$MANPATH\n"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1813
+msgid "Or include @samp{man-db} to the profile manifest."
+msgstr "Oder Sie schreiben @samp{man-db} in das Profilmanifest hinein."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1817
+msgid "The same is true for @samp{INFOPATH} (you can install @samp{info-reader}), @samp{PKG_CONFIG_PATH} (install @samp{pkg-config}), etc."
+msgstr "Das Gleiche gilt für @samp{INFOPATH} (Sie können @samp{info-reader} installieren), @samp{PKG_CONFIG_PATH} (installieren Sie @samp{pkg-config}), etc."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1818 doc/guix-cookbook.texi:1819
+#, no-wrap
+msgid "Default profile"
+msgstr "Vorgabeprofil"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1822
+msgid "What about the default profile that Guix keeps in @samp{~/.guix-profile}?"
+msgstr "Was ist mit dem Standardprofil, das Guix in @samp{~/.guix-profile} aufbewahrt?"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1825
+msgid "You can assign it the role you want.  Typically you would install the manifest of the packages you want to use all the time."
+msgstr "Sie können ihm die Rolle zuweisen, die Sie wollen. Normalerweise würden Sie das Manifest derjenigen Pakete installieren, die Sie ständig benutzen möchten."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1829
+msgid "Alternatively, you could keep it \"manifest-less\" for throw-away packages that you would just use for a couple of days.  This way makes it convenient to run"
+msgstr "Alternativ können Sie es ohne Manifest für Wegwerfpakete benutzen, die Sie nur ein paar Tage lang benutzen wollen. Das macht es leicht,"
+
+#. type: example
+#: doc/guix-cookbook.texi:1833
+#, no-wrap
+msgid ""
+"guix install package-foo\n"
+"guix upgrade package-bar\n"
+msgstr ""
+"guix install paket-foo\n"
+"guix upgrade paket-bar\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1836
+msgid "without having to specify the path to a profile."
+msgstr "auszuführen ohne den Pfad zu einem Profil festzulegen."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1837 doc/guix-cookbook.texi:1838
+#, no-wrap
+msgid "The benefits of manifests"
+msgstr "Der Vorteil von Manifesten"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1842
+msgid "Manifests are a convenient way to keep your package lists around and, say, to synchronize them across multiple machines using a version control system."
+msgstr "Manifeste sind eine bequeme Art, Ihre Paketlisten zur Hand zu haben und diese z.B.@: über mehrere Maschinen hinweg in einem Versionskontrollsystem zu synchronisieren."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1846
+msgid "A common complaint about manifests is that they can be slow to install when they contain large number of packages.  This is especially cumbersome when you just want get an upgrade for one package within a big manifest."
+msgstr "Eine oft gehörte Beschwerde über Manifeste ist, dass es lange dauert, sie zu installieren, wenn sie viele Pakete enthalten. Das ist besonders hinderlich, wenn Sie nur ein einziges Paket in ein großes Manifest installieren möchten."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1851
+msgid "This is one more reason to use multiple profiles, which happen to be just perfect to break down manifests into multiple sets of semantically connected packages.  Using multiple, small profiles provides more flexibility and usability."
+msgstr "Das ist ein weiteres Argument dafür, mehrere Profile zu benutzen, denn es stellt sich heraus, dass dieses Vorgehen perfekt für das Aufbrechen von Manifesten in mehrere Mengen semantisch verbundener Pakete geeignet ist. Mit mehreren, kleinen Profilen haben Sie mehr Flexibilität und Benutzerfreundlichkeit."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1853
+msgid "Manifests come with multiple benefits.  In particular, they ease maintenance:"
+msgstr "Manifeste haben mehrere Vorteile. Insbesondere erleichtern sie die Wartung."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1861
+msgid "When a profile is set up from a manifest, the manifest itself is self-sufficient to keep a \"package listing\" around and reinstall the profile later or on a different system.  For ad-hoc profiles, we would need to generate a manifest specification manually and maintain the package versions for the packages that don't use the default version."
+msgstr "Wenn ein Profil aus einem Manifest heraus eingerichtet wird, ist das Manifest selbst genug, um eine Liste der Pakete zur Verfügung zu haben und das Profil später auf einem anderen System zu installieren. Bei @i{ad-hoc}-Profilen müssten wir hingegen eine Manifestspezifikation von Hand schreiben und uns um die Paketversionen derjenigen Pakete kümmern, die nicht die vorgegebene Version verwenden."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1866
+msgid "@code{guix package --upgrade} always tries to update the packages that have propagated inputs, even if there is nothing to do.  Guix manifests remove this problem."
+msgstr "Bei @code{guix package --upgrade} wird immer versucht, die Pakete zu aktualisieren, die propagierte Eingaben haben, selbst wenn es nichts zu tun gibt. Mit Guix-Manifesten fällt dieses Problem weg."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1872
+msgid "When partially upgrading a profile, conflicts may arise (due to diverging dependencies between the updated and the non-updated packages) and they can be annoying to resolve manually.  Manifests remove this problem altogether since all packages are always upgraded at once."
+msgstr "Wenn man nur Teile eines Profils aktualisiert, kann es zu Konflikten kommen (weil die Abhängigkeiten zwischen aktualisierten und nicht aktualisierten Paketen voneinander abweichen), und es kann mühsam sein, diese Konflikte von Hand aufzulösen. Manifeste haben kein solches Problem, weil alle Pakete immer gleichzeitig aktualisiert werden."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1878
+msgid "As mentioned above, manifests allow for reproducible profiles, while the imperative @code{guix install}, @code{guix upgrade}, etc. do not, since they produce different profiles every time even when they hold the same packages.  See @uref{https://issues.guix.gnu.org/issue/33285, the related discussion on the matter}."
+msgstr "Wie zuvor erwähnt, gewähren einem Manifeste reproduzierbare Profile, während die imperativen @code{guix install}, @code{guix upgrade}, etc.@: das nicht tun, weil sie jedes Mal ein anderes Profil ergeben, obwohl sie dieselben Pakete enthalten. Siehe die @uref{https://issues.guix.gnu.org/issue/33285, dieses Thema betreffende Diskussion}."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1886
+msgid "Manifest specifications are usable by other @samp{guix} commands.  For example, you can run @code{guix weather -m manifest.scm} to see how many substitutes are available, which can help you decide whether you want to try upgrading today or wait a while.  Another example: you can run @code{guix pack -m manifest.scm} to create a pack containing all the packages in the manifest (and their transitive references)."
+msgstr "Manifestspezifikationen können von anderen @samp{guix}-Befehlen benutzt werden. Zum Beispiel können Sie @code{guix weather -m manifest.scm} ausführen, um zu sehen, wieviele Substitute verfügbar sind, was Ihnen bei der Entscheidung helfen kann, ob Sie heute schon eine Aktualisierung durchführen oder lieber noch eine Weile warten möchten. Ein anderes Beispiel: Sie können mit @code{guix pack -m manifest.scm} ein Bündel erzeugen, das alle Pakete im Manifest enthält (mitsamt derer transitiven Referenzen)."
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1890
+msgid "Finally, manifests have a Scheme representation, the @samp{<manifest>} record type.  They can be manipulated in Scheme and passed to the various Guix @uref{https://en.wikipedia.org/wiki/Api, APIs}."
+msgstr "Zuletzt haben Manifeste auch eine Repräsentation in Scheme, nämlich den @samp{<manifest>}-Verbundstyp. Sie können in Scheme verarbeitet werden und an die verschiedenen @uref{https://de.wikipedia.org/wiki/Programmierschnittstelle, Guix-Programmierschnittstellen (APIs)} übergeben werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1898
+msgid "It's important to understand that while manifests can be used to declare profiles, they are not strictly equivalent: profiles have the side effect that they \"pin\" packages in the store, which prevents them from being garbage-collected (@pxref{Invoking guix gc,,, guix, GNU Guix Reference Manual})  and ensures that they will still be available at any point in the future."
+msgstr "Es ist wichtig, dass Sie verstehen, dass Manifeste zwar benutzt werden können, um Profile zu deklarieren, sie aber nicht ganz dasselbe wie Profile sind: Profile haben Nebenwirkungen. Sie setzen Pakete im Store fest, so dass sie nicht vom Müllsammler geholt werden (siehe @ref{Aufruf von guix gc,,, guix.de, Referenzhandbuch zu GNU Guix}) und stellen sicher, dass sie auch in Zukunft jederzeit verfügbar sein werden."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1900
+msgid "Let's take an example:"
+msgstr "Schauen wir uns ein Beispiel an:"
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:1906
+msgid "We have an environment for hacking on a project for which there isn't a Guix package yet.  We build the environment using a manifest, and then run @code{guix environment -m manifest.scm}.  So far so good."
+msgstr "Wir haben eine Umgebung, in der wir an einem Projekt hacken können, für das es noch kein Guix-Paket gibt. Wir richten die Umgebung mit einem Manifest ein und führen dann @code{guix environment -m manifest.scm} aus. So weit so gut."
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:1912
+msgid "Many weeks pass and we have run a couple of @code{guix pull} in the mean time.  Maybe a dependency from our manifest has been updated; or we may have run @code{guix gc} and some packages needed by our manifest have been garbage-collected."
+msgstr "Nach vielen Wochen haben wir in der Zwischenzeit schon ein paarmal @code{guix pull} laufen lassen. Vielleicht wurde eine Abhängigkeit aus unserem Manifest aktualisiert oder wir könnten @code{guix gc} ausgeführt haben, so dass manche Pakete, die von unserem Manifest gebraucht würden, vom Müllsammler geholt worden sind."
+
+#. type: enumerate
+#: doc/guix-cookbook.texi:1917
+msgid "Eventually, we set to work on that project again, so we run @code{guix environment -m manifest.scm}.  But now we have to wait for Guix to build and install stuff!"
+msgstr "Schließlich fangen wir wieder an, an dem Projekt zu arbeiten, also fÜhren wir @code{guix environment -m manifest.scm} aus. Aber jetzt müssen wir warten, bis Guix lauter Dinge erstellt und installiert hat!"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1923
+msgid "Ideally, we could spare the rebuild time.  And indeed we can, all we need is to install the manifest to a profile and use @code{GUIX_PROFILE=/the/profile; . \"$GUIX_PROFILE\"/etc/profile} as explained above: this guarantees that our hacking environment will be available at all times."
+msgstr "Ideal wäre es, wenn wir uns die Zeit für die Neuerstellung sparen könnten. Und das können wir auch: Alles, was wir brauchen, ist, das Manifest in ein Profil zu installieren und @code{GUIX_PROFILE=/das/profil; . \"$GUIX_PROFILE\"/etc/profile} aufzurufen, wie oben erklärt. Dadurch haben wir die Garantie, dass unsere Hacking-Umgebung jederzeit zur Verfügung steht."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1926
+msgid "@emph{Security warning:} While keeping old profiles around can be convenient, keep in mind that outdated packages may not have received the latest security fixes."
+msgstr "@emph{Sicherheitswarnung:} Obwohl es angenehm sein kann, alte Profile zu behalten, sollten Sie daran denken, dass veraltete Pakete @emph{nicht} über die neuesten Sicherheitsbehebungen verfügen."
+
+#. type: subsection
+#: doc/guix-cookbook.texi:1927 doc/guix-cookbook.texi:1928
+#, no-wrap
+msgid "Reproducible profiles"
+msgstr "Reproduzierbare Profile"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1931
+msgid "To reproduce a profile bit-for-bit, we need two pieces of information:"
+msgstr "Um ein Profil Bit für Bit nachzubilden, brauchen wir zweierlei Informationen:"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1935
+msgid "a manifest,"
+msgstr "ein Manifest und"
+
+#. type: itemize
+#: doc/guix-cookbook.texi:1937
+msgid "a Guix channel specification."
+msgstr "eine Kanalspezifikation für Guix."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1941
+msgid "Indeed, manifests alone might not be enough: different Guix versions (or different channels) can produce different outputs for a given manifest."
+msgstr "Tatsächlich kann es vorkommen, dass ein Manifest allein nicht genug ist: Verschiedene Versionen von Guix (oder andere Kanäle) können beim selben Manifest zu verschiedenen Ausgaben führen."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1945
+msgid "You can output the Guix channel specification with @samp{guix describe --format=channels}.  Save this to a file, say @samp{channel-specs.scm}."
+msgstr "Sie können sich die Guix-Kanalspezifikationen mit @samp{guix describe --format=channels} ausgeben lassen. Speichern Sie sie in eine Datei ab, sagen wir @samp{channel-specs.scm}."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1948
+msgid "On another computer, you can use the channel specification file and the manifest to reproduce the exact same profile:"
+msgstr "Auf einem anderen Rechner können Sie die Kanalspezifikationsdatei und das Manifest benutzen, um genau dasselbe Profil zu reproduzieren:"
+
+#. type: example
+#: doc/guix-cookbook.texi:1952
+#, no-wrap
+msgid ""
+"GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles\n"
+"GUIX_EXTRA=$HOME/.guix-extra\n"
+"\n"
+msgstr ""
+"GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles\n"
+"GUIX_EXTRA=$HOME/.guix-extra\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1955
+#, no-wrap
+msgid ""
+"mkdir \"$GUIX_EXTRA\"/my-project\n"
+"guix pull --channels=channel-specs.scm --profile \"$GUIX_EXTRA/my-project/guix\"\n"
+"\n"
+msgstr ""
+"mkdir \"$GUIX_EXTRA\"/my-project\n"
+"guix pull --channels=channel-specs.scm --profile \"$GUIX_EXTRA/my-project/guix\"\n"
+"\n"
+
+#. type: example
+#: doc/guix-cookbook.texi:1958
+#, no-wrap
+msgid ""
+"mkdir -p \"$GUIX_EXTRA_PROFILES/my-project\"\n"
+"\"$GUIX_EXTRA\"/my-project/guix/bin/guix package --manifest=/path/to/guix-my-project-manifest.scm --profile=\"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+msgstr ""
+"mkdir -p \"$GUIX_EXTRA_PROFILES/my-project\"\n"
+"\"$GUIX_EXTRA\"/my-project/guix/bin/guix package --manifest=/path/to/guix-my-project-manifest.scm --profile=\"$GUIX_EXTRA_PROFILES\"/my-project/my-project\n"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1962
+msgid "It's safe to delete the Guix channel profile you've just installed with the channel specification, the project profile does not depend on it."
+msgstr "Es kann nichts Schlimmes passieren, wenn Sie das Guix-Kanalprofil, das Sie eben aus der Kanalspezifikation erstellt haben, löschen, denn das Projektprofil hängt davon nicht ab."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1974
+msgid "Guix is based on the @uref{https://nixos.org/nix/, Nix package manager}, which was designed and implemented by Eelco Dolstra, with contributions from other people (see the @file{nix/AUTHORS} file in Guix.)  Nix pioneered functional package management, and promoted unprecedented features, such as transactional package upgrades and rollbacks, per-user profiles, and referentially transparent build processes.  Without this work, Guix would not exist."
+msgstr "Guix baut auf dem @uref{https://nixos.org/nix/, Nix-Paketverwaltungsprogramm} auf, das von Eelco Dolstra entworfen und entwickelt wurde, mit Beiträgen von anderen Leuten (siehe die Datei @file{nix/AUTHORS} in Guix). Nix hat für die funktionale Paketverwaltung die Pionierarbeit geleistet und noch nie dagewesene Funktionalitäten vorangetrieben wie transaktionsbasierte Paketaktualisierungen und die Rücksetzbarkeit selbiger, eigene Paketprofile für jeden Nutzer und referenziell transparente Erstellungsprozesse. Ohne diese Arbeit gäbe es Guix nicht.<"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1977
+msgid "The Nix-based software distributions, Nixpkgs and NixOS, have also been an inspiration for Guix."
+msgstr "Die Nix-basierten Software-Distributionen Nixpkgs und NixOS waren auch eine Inspiration für Guix."
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1983
+msgid "GNU@tie{}Guix itself is a collective work with contributions from a number of people.  See the @file{AUTHORS} file in Guix for more information on these fine people.  The @file{THANKS} file lists people who have helped by reporting bugs, taking care of the infrastructure, providing artwork and themes, making suggestions, and more---thank you!"
+msgstr "GNU@tie{}Guix ist selbst das Produkt kollektiver Arbeit mit Beiträgen durch eine Vielzahl von Leuten. Siehe die Datei @file{AUTHORS} in Guix für mehr Informationen, wer diese wunderbaren Menschen sind. In der Datei @file{THANKS} finden Sie eine Liste der Leute, die uns geholfen haben, indem Sie Fehler gemeldet, sich um unsere Infrastruktur gekümmert, künstlerische Arbeit und schön gestaltete Themen beigesteuert, Vorschläge gemacht und noch vieles mehr getan haben — vielen Dank!"
+
+#. type: Plain text
+#: doc/guix-cookbook.texi:1986
+msgid "This document includes adapted sections from articles that have previously been published on the Guix blog at @uref{https://guix.gnu.org/blog}."
+msgstr "Dieses Dokument enthält angepasste Abschnitte aus Einträgen, die zuvor auf dem Blog von Guix unter @uref{https://guix.gnu.org/blog} veröffentlicht wurden."
+
+#. type: cindex
+#: doc/guix-cookbook.texi:1991
+#, no-wrap
+msgid "license, GNU Free Documentation License"
+msgstr "Lizenz, GNU-Lizenz für freie Dokumentation"
+
+#. type: include
+#: doc/guix-cookbook.texi:1992
+#, no-wrap
+msgid "fdl-1.3.texi"
+msgstr "fdl-1.3.texi"
+
+#~ msgid "Learn more about build systems in"
+#~ msgstr "Sie erfahren mehr über Erstellungssysteme in"
+
+#~ msgid "@uref{https://www.gnu.org/software/guix/manual/en/html_node/Build-Systems.html#Build-Systems, the manual, section 4.2 Build systems},"
+#~ msgstr "@uref{https://guix.gnu.org/manual/de/html_node/Erstellungssysteme.html#Erstellungssysteme, dem Handbuch, Abschnitt 6.3 Erstellungssysteme},"
diff --git a/po/doc/local.mk b/po/doc/local.mk
index f1a52615c1..27b9e1f3b5 100644
--- a/po/doc/local.mk
+++ b/po/doc/local.mk
@@ -23,7 +23,8 @@ DOC_PO_FILES=					\
   %D%/guix-manual.ru.po				\
   %D%/guix-manual.zh_CN.po
 
-DOC_COOKBOOK_PO_FILES=
+DOC_COOKBOOK_PO_FILES=					\
+  %D%/guix-manual.de.po
 
 EXTRA_DIST = \
   %D%/guix-manual.pot \
diff --git a/tests/ui.scm b/tests/ui.scm
index d8573e88d8..05eace6721 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -227,6 +227,10 @@ Second line" 24))
   (expt 2 40)
   (size->number "1T"))
 
+(test-equal "size->number, 1.M"
+  (expt 2 20)
+  (size->number "1.M"))
+
 (test-assert "size->number, invalid unit"
   (catch 'quit
     (lambda ()