summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorJakub Kądziołka <kuba@kadziolka.net>2020-07-23 21:43:06 +0200
committerJakub Kądziołka <kuba@kadziolka.net>2020-07-23 21:43:06 +0200
commitd726b954baaeff876ce9728e00920fa45f529f9a (patch)
tree4b767b7586a1082dd2691bc33c3e45ace044e6e5 /gnu
parent9a74a7db8626bc139307d115f5cec2648f5273ad (diff)
parente165a2492d73d37c8b95d6970d453b9d88911ee6 (diff)
downloadguix-d726b954baaeff876ce9728e00920fa45f529f9a.tar.gz
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/ruby.scm
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/hurd-boot.scm20
-rw-r--r--gnu/build/image.scm31
-rw-r--r--gnu/ci.scm71
-rw-r--r--gnu/image.scm2
-rw-r--r--gnu/installer.scm3
-rw-r--r--gnu/local.mk74
-rw-r--r--gnu/machine/ssh.scm1
-rw-r--r--gnu/packages/ada.scm4
-rw-r--r--gnu/packages/admin.scm272
-rw-r--r--gnu/packages/aidc.scm4
-rw-r--r--gnu/packages/algebra.scm93
-rw-r--r--gnu/packages/android.scm4
-rw-r--r--gnu/packages/animation.scm2
-rw-r--r--gnu/packages/antivirus.scm4
-rw-r--r--gnu/packages/arcan.scm6
-rw-r--r--gnu/packages/assembly.scm142
-rw-r--r--gnu/packages/astronomy.scm8
-rw-r--r--gnu/packages/audio.scm228
-rw-r--r--gnu/packages/authentication.scm2
-rw-r--r--gnu/packages/avr.scm2
-rw-r--r--gnu/packages/axoloti.scm6
-rw-r--r--gnu/packages/backup.scm33
-rw-r--r--gnu/packages/base.scm8
-rw-r--r--gnu/packages/bash.scm57
-rw-r--r--gnu/packages/benchmark.scm8
-rw-r--r--gnu/packages/bioconductor.scm77
-rw-r--r--gnu/packages/bioinformatics.scm442
-rw-r--r--gnu/packages/bittorrent.scm94
-rw-r--r--gnu/packages/boost.scm4
-rw-r--r--gnu/packages/bootloaders.scm19
-rw-r--r--gnu/packages/build-tools.scm14
-rw-r--r--gnu/packages/busybox.scm15
-rw-r--r--gnu/packages/c.scm47
-rw-r--r--gnu/packages/calendar.scm9
-rw-r--r--gnu/packages/ccache.scm4
-rw-r--r--gnu/packages/cdrom.scm4
-rw-r--r--gnu/packages/check.scm100
-rw-r--r--gnu/packages/chemistry.scm4
-rw-r--r--gnu/packages/chez.scm14
-rw-r--r--gnu/packages/chromium.scm441
-rw-r--r--gnu/packages/ci.scm8
-rw-r--r--gnu/packages/clojure.scm10
-rw-r--r--gnu/packages/cluster.scm98
-rw-r--r--gnu/packages/code.scm56
-rw-r--r--gnu/packages/commencement.scm26
-rw-r--r--gnu/packages/compression.scm116
-rw-r--r--gnu/packages/compton.scm4
-rw-r--r--gnu/packages/coq.scm8
-rw-r--r--gnu/packages/cpp.scm52
-rw-r--r--gnu/packages/cran.scm756
-rw-r--r--gnu/packages/crates-io.scm4948
-rw-r--r--gnu/packages/cross-base.scm2
-rw-r--r--gnu/packages/crypto.scm65
-rw-r--r--gnu/packages/cryptsetup.scm6
-rw-r--r--gnu/packages/cups.scm2
-rw-r--r--gnu/packages/curl.scm59
-rw-r--r--gnu/packages/databases.scm99
-rw-r--r--gnu/packages/datastructures.scm24
-rw-r--r--gnu/packages/dav.scm10
-rw-r--r--gnu/packages/debian.scm49
-rw-r--r--gnu/packages/debug.scm14
-rw-r--r--gnu/packages/diffoscope.scm30
-rw-r--r--gnu/packages/digest.scm17
-rw-r--r--gnu/packages/disk.scm19
-rw-r--r--gnu/packages/display-managers.scm34
-rw-r--r--gnu/packages/distributed.scm2
-rw-r--r--gnu/packages/django.scm273
-rw-r--r--gnu/packages/dlang.scm18
-rw-r--r--gnu/packages/dns.scm52
-rw-r--r--gnu/packages/docker.scm32
-rw-r--r--gnu/packages/documentation.scm4
-rw-r--r--gnu/packages/education.scm13
-rw-r--r--gnu/packages/efi.scm2
-rw-r--r--gnu/packages/elixir.scm6
-rw-r--r--gnu/packages/emacs-xyz.scm1893
-rw-r--r--gnu/packages/embedded.scm20
-rw-r--r--gnu/packages/emulators.scm291
-rw-r--r--gnu/packages/engineering.scm24
-rw-r--r--gnu/packages/erlang.scm2
-rw-r--r--gnu/packages/fabric-management.scm2
-rw-r--r--gnu/packages/file-systems.scm97
-rw-r--r--gnu/packages/finance.scm43
-rw-r--r--gnu/packages/firmware.scm23
-rw-r--r--gnu/packages/flashing-tools.scm12
-rw-r--r--gnu/packages/fonts.scm107
-rw-r--r--gnu/packages/fontutils.scm28
-rw-r--r--gnu/packages/fpga.scm6
-rw-r--r--gnu/packages/freedesktop.scm17
-rw-r--r--gnu/packages/game-development.scm231
-rw-r--r--gnu/packages/games.scm1003
-rw-r--r--gnu/packages/gcc.scm156
-rw-r--r--gnu/packages/gd.scm6
-rw-r--r--gnu/packages/gdb.scm50
-rw-r--r--gnu/packages/genealogy.scm2
-rw-r--r--gnu/packages/genimage.scm2
-rw-r--r--gnu/packages/geo.scm161
-rw-r--r--gnu/packages/gimp.scm4
-rw-r--r--gnu/packages/gl.scm12
-rw-r--r--gnu/packages/glib.scm6
-rw-r--r--gnu/packages/gnome-xyz.scm16
-rw-r--r--gnu/packages/gnome.scm267
-rw-r--r--gnu/packages/gnunet.scm23
-rw-r--r--gnu/packages/gnustep.scm36
-rw-r--r--gnu/packages/gnuzilla.scm28
-rw-r--r--gnu/packages/golang.scm290
-rw-r--r--gnu/packages/gpodder.scm2
-rw-r--r--gnu/packages/gps.scm4
-rw-r--r--gnu/packages/graph.scm84
-rw-r--r--gnu/packages/graphics.scm27
-rw-r--r--gnu/packages/graphviz.scm2
-rw-r--r--gnu/packages/groff.scm2
-rw-r--r--gnu/packages/groovy.scm2
-rw-r--r--gnu/packages/gtk.scm4
-rw-r--r--gnu/packages/guile-xyz.scm358
-rw-r--r--gnu/packages/guile.scm10
-rw-r--r--gnu/packages/hardware.scm4
-rw-r--r--gnu/packages/haskell-apps.scm36
-rw-r--r--gnu/packages/haskell-check.scm2
-rw-r--r--gnu/packages/haskell-web.scm12
-rw-r--r--gnu/packages/haskell-xyz.scm47
-rw-r--r--gnu/packages/hexedit.scm2
-rw-r--r--gnu/packages/hurd.scm34
-rw-r--r--gnu/packages/i2p.scm2
-rw-r--r--gnu/packages/ibus.scm164
-rw-r--r--gnu/packages/icu4c.scm75
-rw-r--r--gnu/packages/image-processing.scm46
-rw-r--r--gnu/packages/image-viewers.scm123
-rw-r--r--gnu/packages/image.scm81
-rw-r--r--gnu/packages/ipfs.scm6
-rw-r--r--gnu/packages/irc.scm9
-rw-r--r--gnu/packages/jami.scm20
-rw-r--r--gnu/packages/java-compression.scm32
-rw-r--r--gnu/packages/java-graphics.scm2
-rw-r--r--gnu/packages/java-maths.scm2
-rw-r--r--gnu/packages/java.scm1676
-rw-r--r--gnu/packages/javascript.scm4
-rw-r--r--gnu/packages/jrnl.scm2
-rw-r--r--gnu/packages/julia.scm4
-rw-r--r--gnu/packages/jupyter.scm2
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/kodi.scm10
-rw-r--r--gnu/packages/language.scm2
-rw-r--r--gnu/packages/lean.scm12
-rw-r--r--gnu/packages/lego.scm2
-rw-r--r--gnu/packages/less.scm2
-rw-r--r--gnu/packages/libffi.scm2
-rw-r--r--gnu/packages/libreoffice.scm5
-rw-r--r--gnu/packages/libusb.scm16
-rw-r--r--gnu/packages/linux.scm297
-rw-r--r--gnu/packages/lirc.scm5
-rw-r--r--gnu/packages/lisp-xyz.scm1539
-rw-r--r--gnu/packages/lisp.scm13
-rw-r--r--gnu/packages/llvm.scm101
-rw-r--r--gnu/packages/logging.scm9
-rw-r--r--gnu/packages/lolcode.scm2
-rw-r--r--gnu/packages/lsof.scm4
-rw-r--r--gnu/packages/lua.scm177
-rw-r--r--gnu/packages/lxde.scm16
-rw-r--r--gnu/packages/lxqt.scm209
-rw-r--r--gnu/packages/machine-learning.scm158
-rw-r--r--gnu/packages/mail.scm664
-rw-r--r--gnu/packages/man.scm4
-rw-r--r--gnu/packages/markup.scm6
-rw-r--r--gnu/packages/mastodon.scm4
-rw-r--r--gnu/packages/mate.scm8
-rw-r--r--gnu/packages/maths.scm94
-rw-r--r--gnu/packages/maven-parent-pom.scm545
-rw-r--r--gnu/packages/maven.scm2452
-rw-r--r--gnu/packages/mc.scm4
-rw-r--r--gnu/packages/mercury.scm251
-rw-r--r--gnu/packages/mes.scm4
-rw-r--r--gnu/packages/messaging.scm62
-rw-r--r--gnu/packages/monitoring.scm19
-rw-r--r--gnu/packages/mp3.scm5
-rw-r--r--gnu/packages/mpd.scm22
-rw-r--r--gnu/packages/music.scm432
-rw-r--r--gnu/packages/ncdu.scm11
-rw-r--r--gnu/packages/networking.scm152
-rw-r--r--gnu/packages/node-xyz.scm2
-rw-r--r--gnu/packages/ntp.scm16
-rw-r--r--gnu/packages/ocaml.scm87
-rw-r--r--gnu/packages/ocr.scm2
-rw-r--r--gnu/packages/onc-rpc.scm2
-rw-r--r--gnu/packages/opencl.scm10
-rw-r--r--gnu/packages/opencog.scm12
-rw-r--r--gnu/packages/openkinect.scm1
-rw-r--r--gnu/packages/openstack.scm2
-rw-r--r--gnu/packages/package-management.scm33
-rw-r--r--gnu/packages/pantheon.scm69
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/password-utils.scm72
-rw-r--r--gnu/packages/patches/ecl-16-format-directive-limit.patch83
-rw-r--r--gnu/packages/patches/ecl-16-ignore-stderr-write-error.patch17
-rw-r--r--gnu/packages/patches/ecl-16-libffi.patch16
-rw-r--r--gnu/packages/patches/emacs-exwm-fix-fullscreen-states.patch39
-rw-r--r--gnu/packages/patches/emacs-telega-patch-server-functions.patch31
-rw-r--r--gnu/packages/patches/flint-ldconfig.patch26
-rw-r--r--gnu/packages/patches/ganeti-deterministic-manual.patch16
-rw-r--r--gnu/packages/patches/ganeti-disable-version-symlinks.patch136
-rw-r--r--gnu/packages/patches/ganeti-drbd-compat.patch166
-rw-r--r--gnu/packages/patches/ganeti-haskell-pythondir.patch66
-rw-r--r--gnu/packages/patches/ganeti-os-disk-size.patch17
-rw-r--r--gnu/packages/patches/ganeti-preserve-PYTHONPATH.patch21
-rw-r--r--gnu/packages/patches/ganeti-shepherd-master-failover.patch18
-rw-r--r--gnu/packages/patches/ganeti-shepherd-support.patch87
-rw-r--r--gnu/packages/patches/gash-utils-ls-test.patch25
-rw-r--r--gnu/packages/patches/gdb-hurd.patch69
-rw-r--r--gnu/packages/patches/grub-cross-system-i686.patch96
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/ilmbase-fix-test-arm.patch60
-rw-r--r--gnu/packages/patches/intel-xed-fix-nondeterminism.patch113
-rw-r--r--gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch31
-rw-r--r--gnu/packages/patches/libreoffice-poppler-compat.patch19
-rw-r--r--gnu/packages/patches/libvnc-CVE-2018-20750.patch44
-rw-r--r--gnu/packages/patches/libvnc-CVE-2019-15681.patch23
-rw-r--r--gnu/packages/patches/linbox-fix-pkgconfig.patch23
-rw-r--r--gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch192
-rw-r--r--gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch97
-rw-r--r--gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch113
-rw-r--r--gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch177
-rw-r--r--gnu/packages/patches/opendht-fix-jami.patch33
-rw-r--r--gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch358
-rw-r--r--gnu/packages/patches/python-aionotify-0.2.0-py3.8.patch48
-rw-r--r--gnu/packages/patches/python-tinycss2-flake8-compat.patch36
-rw-r--r--gnu/packages/patches/qtbase-absolute-runpath.patch17
-rw-r--r--gnu/packages/patches/ruby-rubocop-break-dependency-cycle.patch101
-rw-r--r--gnu/packages/patches/rust-1.45-linker-locale.patch14
-rw-r--r--gnu/packages/patches/sqlite-hurd.patch58
-rw-r--r--gnu/packages/patches/sssd-fix-samba.patch50
-rw-r--r--gnu/packages/patches/tao-add-missing-headers.patch102
-rw-r--r--gnu/packages/patches/tao-fix-parser-types.patch26
-rw-r--r--gnu/packages/patches/transmission-CVE-2018-10756.patch71
-rw-r--r--gnu/packages/patches/u-boot-DT-for-Pinebook-Pro.patch1132
-rw-r--r--gnu/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch29
-rw-r--r--gnu/packages/patches/u-boot-gpio-keys-binding-cons.patch37
-rw-r--r--gnu/packages/patches/u-boot-leds-common-binding-con.patch115
-rw-r--r--gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch14
-rw-r--r--gnu/packages/patches/u-boot-support-Pinebook-Pro-laptop.patch367
-rw-r--r--gnu/packages/patches/u-boot-video-rockchip-fix-build.patch48
-rw-r--r--gnu/packages/patches/ungoogled-chromium-system-nspr.patch120
-rw-r--r--gnu/packages/patches/widelands-system-wide_minizip.patch153
-rw-r--r--gnu/packages/patches/x265-arm-flags.patch38
-rw-r--r--gnu/packages/patches/xpra-4.0.1-systemd-run.patch34
-rw-r--r--gnu/packages/patchutils.scm2
-rw-r--r--gnu/packages/pdf.scm10
-rw-r--r--gnu/packages/perl6.scm22
-rw-r--r--gnu/packages/phabricator.scm4
-rw-r--r--gnu/packages/photo.scm133
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/plotutils.scm4
-rw-r--r--gnu/packages/popt.scm2
-rw-r--r--gnu/packages/presentation.scm90
-rw-r--r--gnu/packages/pretty-print.scm12
-rw-r--r--gnu/packages/printers.scm4
-rw-r--r--gnu/packages/prolog.scm24
-rw-r--r--gnu/packages/protobuf.scm111
-rw-r--r--gnu/packages/pulseaudio.scm6
-rw-r--r--gnu/packages/python-check.scm192
-rw-r--r--gnu/packages/python-compression.scm23
-rw-r--r--gnu/packages/python-crypto.scm41
-rw-r--r--gnu/packages/python-science.scm165
-rw-r--r--gnu/packages/python-web.scm466
-rw-r--r--gnu/packages/python-xyz.scm1231
-rw-r--r--gnu/packages/python.scm23
-rw-r--r--gnu/packages/qt.scm26
-rw-r--r--gnu/packages/radio.scm48
-rw-r--r--gnu/packages/rails.scm4
-rw-r--r--gnu/packages/rdf.scm2
-rw-r--r--gnu/packages/rednotebook.scm2
-rw-r--r--gnu/packages/rpc.scm6
-rw-r--r--gnu/packages/rsync.scm2
-rw-r--r--gnu/packages/ruby.scm2525
-rw-r--r--gnu/packages/rust-apps.scm49
-rw-r--r--gnu/packages/rust.scm171
-rw-r--r--gnu/packages/sagemath.scm80
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/screen.scm2
-rw-r--r--gnu/packages/security-token.scm8
-rw-r--r--gnu/packages/selinux.scm4
-rw-r--r--gnu/packages/sequoia.scm42
-rw-r--r--gnu/packages/serialization.scm10
-rw-r--r--gnu/packages/shells.scm60
-rw-r--r--gnu/packages/shellutils.scm12
-rw-r--r--gnu/packages/simh.scm2
-rw-r--r--gnu/packages/skarnet.scm4
-rw-r--r--gnu/packages/sml.scm8
-rw-r--r--gnu/packages/sqlite.scm19
-rw-r--r--gnu/packages/ssh.scm90
-rw-r--r--gnu/packages/sssd.scm3
-rw-r--r--gnu/packages/statistics.scm176
-rw-r--r--gnu/packages/stenography.scm65
-rw-r--r--gnu/packages/storage.scm9
-rw-r--r--gnu/packages/suckless.scm4
-rw-r--r--gnu/packages/sync.scm8
-rw-r--r--gnu/packages/syncthing.scm30
-rw-r--r--gnu/packages/syndication.scm6
-rw-r--r--gnu/packages/synergy.scm19
-rw-r--r--gnu/packages/telephony.scm18
-rw-r--r--gnu/packages/terminals.scm24
-rw-r--r--gnu/packages/tex.scm41
-rw-r--r--gnu/packages/texinfo.scm2
-rw-r--r--gnu/packages/text-editors.scm8
-rw-r--r--gnu/packages/textutils.scm16
-rw-r--r--gnu/packages/time.scm9
-rw-r--r--gnu/packages/tls.scm49
-rw-r--r--gnu/packages/tmux.scm96
-rw-r--r--gnu/packages/tor.scm38
-rw-r--r--gnu/packages/toys.scm2
-rw-r--r--gnu/packages/usb-modeswitch.scm9
-rw-r--r--gnu/packages/version-control.scm28
-rw-r--r--gnu/packages/video.scm266
-rw-r--r--gnu/packages/vim.scm81
-rw-r--r--gnu/packages/virtualization.scm545
-rw-r--r--gnu/packages/vlang.scm116
-rw-r--r--gnu/packages/vnc.scm19
-rw-r--r--gnu/packages/vpn.scm18
-rw-r--r--gnu/packages/vulkan.scm45
-rw-r--r--gnu/packages/web-browsers.scm411
-rw-r--r--gnu/packages/web.scm67
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wine.scm35
-rw-r--r--gnu/packages/wireservice.scm10
-rw-r--r--gnu/packages/wm.scm39
-rw-r--r--gnu/packages/wxwidgets.scm2
-rw-r--r--gnu/packages/xdisorg.scm91
-rw-r--r--gnu/packages/xfce.scm4
-rw-r--r--gnu/packages/xiph.scm8
-rw-r--r--gnu/packages/xml.scm16
-rw-r--r--gnu/packages/xorg.scm227
-rw-r--r--gnu/services.scm58
-rw-r--r--gnu/services/base.scm4
-rw-r--r--gnu/services/ganeti.scm1109
-rw-r--r--gnu/services/networking.scm35
-rw-r--r--gnu/services/nix.scm92
-rw-r--r--gnu/services/science.scm57
-rw-r--r--gnu/services/virtualization.scm12
-rw-r--r--gnu/services/web.scm34
-rw-r--r--gnu/system.scm99
-rw-r--r--gnu/system/hurd.scm2
-rw-r--r--gnu/system/image.scm100
-rw-r--r--gnu/system/images/hurd.scm89
-rw-r--r--gnu/system/mapped-devices.scm3
-rw-r--r--gnu/system/vm.scm1
-rw-r--r--gnu/tests/docker.scm6
-rw-r--r--gnu/tests/ganeti.scm270
-rw-r--r--gnu/tests/install.scm19
-rw-r--r--gnu/tests/monitoring.scm2
-rw-r--r--gnu/tests/networking.scm17
-rw-r--r--gnu/tests/package-management.scm130
-rw-r--r--gnu/tests/web.scm73
350 files changed, 30221 insertions, 9893 deletions
diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm
index aea2ac3307..adc8b4ce16 100644
--- a/gnu/build/hurd-boot.scm
+++ b/gnu/build/hurd-boot.scm
@@ -191,7 +191,8 @@ set."
                                   "10.0.2.15" ;the default QEMU guest IP
                                   "--netmask" "255.255.255.0"
                                   "--gateway" "10.0.2.2"
-                                  "--ipv6" "/servers/socket/16"))))
+                                  "--ipv6" "/servers/socket/16"))
+      ("proc"                    ("/hurd/procfs" "--stat-mode=444"))))
 
   (define devices
     '(("dev/full"    ("/hurd/null"     "--full")            #o666)
@@ -232,17 +233,22 @@ set."
                                                             #o666)))
 
   (for-each scope-set-translator servers)
-  (mkdir* (scope "dev/vcs/1"))
-  (mkdir* (scope "dev/vcs/2"))
-  (mkdir* (scope "dev/vcs/2"))
-  (rename-file (scope "/dev/console") (scope "/dev/console-"))
+  (mkdir* "dev/vcs/1")
+  (mkdir* "dev/vcs/2")
+  (mkdir* "dev/vcs/2")
+  (rename-file (scope "dev/console") (scope "dev/console-"))
   (for-each scope-set-translator devices)
 
   (false-if-EEXIST (symlink "/dev/random" (scope "dev/urandom")))
-  (mkdir* (scope "dev/fd"))
+  (mkdir* "dev/fd")
   (false-if-EEXIST (symlink "/dev/fd/0" (scope "dev/stdin")))
   (false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout")))
-  (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr"))))
+  (false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))
+
+  ;; Make sure /etc/mtab is a symlink to /proc/mounts.
+  (false-if-exception (delete-file (scope "etc/mtab")))
+  (mkdir* (scope "etc"))
+  (symlink "/proc/mounts" (scope "etc/mtab")))
 
 
 (define* (boot-hurd-system #:key (on-error 'debug))
diff --git a/gnu/build/image.scm b/gnu/build/image.scm
index e8df5866a7..d8efa73f16 100644
--- a/gnu/build/image.scm
+++ b/gnu/build/image.scm
@@ -77,7 +77,7 @@ take the partition metadata size into account, take a 25% margin."
         (uuid (partition-uuid partition))
         (journal-options "lazy_itable_init=1,lazy_journal_init=1"))
     (apply invoke
-           `("mke2fs" "-t" ,fs "-d" ,root
+           `("fakeroot" "mke2fs" "-t" ,fs "-d" ,root
              "-L" ,label "-U" ,(uuid->string uuid)
              "-E" ,(format #f "root_owner=~a:~a,~a"
                            owner-uid owner-gid journal-options)
@@ -93,7 +93,8 @@ take the partition metadata size into account, take a 25% margin."
   "Handle the creation of VFAT partition images.  See 'make-partition-image'."
   (let ((size (partition-size partition))
         (label (partition-label partition)))
-    (invoke "mkdosfs" "-n" label "-C" target "-F" "16" "-S" "1024"
+    (invoke "fakeroot" "mkdosfs" "-n" label "-C" target
+            "-F" "16" "-S" "1024"
             (size-in-kib
              (if (eq? size 'guess)
                  (estimate-partition-size root)
@@ -130,20 +131,23 @@ given CONFIG file."
 (define* (register-closure prefix closure
                            #:key
                            (deduplicate? #t) (reset-timestamps? #t)
-                           (schema (sql-schema)))
+                           (schema (sql-schema))
+                           (wal-mode? #t))
   "Register CLOSURE in PREFIX, where PREFIX is the directory name of the
 target store and CLOSURE is the name of a file containing a reference graph as
 produced by #:references-graphs..  As a side effect, if RESET-TIMESTAMPS? is
 true, reset timestamps on store files and, if DEDUPLICATE? is true,
-deduplicates files common to CLOSURE and the rest of PREFIX."
+deduplicates files common to CLOSURE and the rest of PREFIX.  Pass WAL-MODE?
+to call-with-database."
   (let ((items (call-with-input-file closure read-reference-graph)))
     (parameterize ((sql-schema schema))
       (with-database (store-database-file #:prefix prefix) db
-        (register-items db items
-                        #:prefix prefix
-                        #:deduplicate? deduplicate?
-                        #:reset-timestamps? reset-timestamps?
-                        #:registration-time %epoch)))))
+       #:wal-mode? wal-mode?
+       (register-items db items
+                       #:prefix prefix
+                       #:deduplicate? deduplicate?
+                       #:reset-timestamps? reset-timestamps?
+                       #:registration-time %epoch)))))
 
 (define* (initialize-efi-partition root
                                    #:key
@@ -163,14 +167,16 @@ deduplicates files common to CLOSURE and the rest of PREFIX."
                                     (register-closures? #t)
                                     system-directory
                                     make-device-nodes
+                                    (wal-mode? #t)
                                     #:allow-other-keys)
   "Initialize the given ROOT directory. Use BOOTCFG and BOOTCFG-LOCATION to
 install the bootloader configuration.
 
 If REGISTER-CLOSURES? is true, register REFERENCES-GRAPHS in the store.  If
 DEDUPLICATE? is true, then also deduplicate files common to CLOSURES and the
-rest of the store when registering the closures. SYSTEM-DIRECTORY is the name
-of the directory of the 'system' derivation."
+rest of the store when registering the closures.  SYSTEM-DIRECTORY is the name
+of the directory of the 'system' derivation.  Pass WAL-MODE? to
+register-closure."
   (populate-root-file-system system-directory root)
   (populate-store references-graphs root)
 
@@ -183,7 +189,8 @@ of the directory of the 'system' derivation."
                 (register-closure root
                                   closure
                                   #:reset-timestamps? #t
-                                  #:deduplicate? deduplicate?))
+                                  #:deduplicate? deduplicate?
+                                  #:wal-mode? wal-mode?))
               references-graphs))
 
   (when bootloader-installer
diff --git a/gnu/ci.scm b/gnu/ci.scm
index fa67168e22..af0bb66775 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -53,6 +53,7 @@
   #:use-module (gnu system image)
   #:use-module (gnu system vm)
   #:use-module (gnu system install)
+  #:use-module (gnu system images hurd)
   #:use-module (gnu tests)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
@@ -185,18 +186,21 @@ SYSTEM."
               (remove (either from-32-to-64? same? pointless?)
                       %cross-targets)))
 
-(define %guixsd-supported-systems
-  '("x86_64-linux" "i686-linux" "armhf-linux"))
+;; Architectures that are able to build or cross-build Guix System images.
+;; This does not mean that other architectures are not supported, only that
+;; they are often not fast enough to support Guix System images building.
+(define %guix-system-supported-systems
+  '("x86_64-linux" "i686-linux"))
 
-(define %u-boot-systems
-  '("armhf-linux"))
+(define %guix-system-images
+  (list hurd-barebones-disk-image))
 
-(define (qemu-jobs store system)
-  "Return a list of jobs that build QEMU images for SYSTEM."
+(define (image-jobs store system)
+  "Return a list of jobs that build images for SYSTEM."
   (define (->alist drv)
     `((derivation . ,(derivation-file-name drv))
-      (description . "Stand-alone QEMU image of the GNU system")
-      (long-description . "This is a demo stand-alone QEMU image of the GNU
+      (description . "Stand-alone image of the GNU system")
+      (long-description . "This is a demo stand-alone image of the GNU
 system.")
       (license . ,(license-name gpl3+))
       (max-silent-time . 600)
@@ -211,29 +215,32 @@ system.")
                    (parameterize ((%graft? #f))
                      (->alist drv))))))
 
+  (define (build-image image)
+    (run-with-store store
+      (mbegin %store-monad
+        (set-guile-for-build (default-guile))
+        (lower-object (system-image image)))))
+
   (define MiB
     (expt 2 20))
 
-  (if (member system %guixsd-supported-systems)
-      (list (->job 'usb-image
-                   (run-with-store store
-                     (mbegin %store-monad
-                       (set-guile-for-build (default-guile))
-                       (lower-object
-                        (system-image
-                         (image
-                          (inherit efi-disk-image)
-                          (size (* 1500 MiB))
-                          (operating-system installation-os)))))))
-            (->job 'iso9660-image
-                   (run-with-store store
-                     (mbegin %store-monad
-                       (set-guile-for-build (default-guile))
-                       (lower-object
-                        (system-image
-                         (image
-                          (inherit iso9660-image)
-                          (operating-system installation-os))))))))
+  (if (member system %guix-system-supported-systems)
+      `(,(->job 'usb-image
+                (build-image
+                 (image
+                  (inherit efi-disk-image)
+                  (operating-system installation-os))))
+        ,(->job 'iso9660-image
+                (build-image
+                 (image
+                  (inherit iso9660-image)
+                  (operating-system installation-os))))
+        ;; Only cross-compile Guix System images from x86_64-linux for now.
+        ,@(if (string=? system "x86_64-linux")
+              (map (lambda (image)
+                     (->job (image-name image) (build-image image)))
+                   %guix-system-images)
+              '()))
       '()))
 
 (define channel-build-system
@@ -305,11 +312,7 @@ system.")
                                 "." system))))
       (cons name (test->thunk test))))
 
-  (if (and (member system %guixsd-supported-systems)
-
-           ;; XXX: Our build farm has too few ARMv7 machines and they are very
-           ;; slow, so skip system tests there.
-           (not (string=? system "armhf-linux")))
+  (if (member system %guix-system-supported-systems)
       ;; Override the value of 'current-guix' used by system tests.  Using a
       ;; channel instance makes tests that rely on 'current-guix' less
       ;; expensive.  It also makes sure we get a valid Guix package when this
@@ -486,7 +489,7 @@ Return #f if no such checkout is found."
                                   (package->job store package
                                                 system))))
                        (append (filter-map job all)
-                               (qemu-jobs store system)
+                               (image-jobs store system)
                                (system-test-jobs store system
                                                  #:source source
                                                  #:commit commit)
diff --git a/gnu/image.scm b/gnu/image.scm
index 19b466527b..dc66f2c533 100644
--- a/gnu/image.scm
+++ b/gnu/image.scm
@@ -67,6 +67,8 @@
 (define-record-type* <image>
   image make-image
   image?
+  (name               image-name ;symbol
+                      (default #f))
   (format             image-format) ;symbol
   (target             image-target
                       (default #f))
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 79113cb0ef..2c7315bde0 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -440,5 +440,6 @@ selected keymap."
        ;; some reason, unicode support is not correctly installed
        ;; when calling this in 'installer-builder'.
        (setenv "LANG" "en_US.UTF-8")
-       (execl #$(program-file "installer-real" installer-builder)
+       (execl #$(program-file "installer-real" installer-builder
+                              #:guile guile-3.0-latest)
               "installer-real"))))
diff --git a/gnu/local.mk b/gnu/local.mk
index 5a57e60a6a..edb4e69895 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1,6 +1,6 @@
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
-# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr>
+# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Andreas Enge <andreas@enge.fr>
 # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
 # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
@@ -24,7 +24,7 @@
 # Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
 # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
-# Copyright © 2019 Brett Gilio <brettg@gnu.org>
+# Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 # Copyright © 2019 Amin Bandali <bandali@gnu.org>
 # Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
 # Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -359,9 +359,11 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/maths.scm			\
   %D%/packages/matrix.scm			\
   %D%/packages/maven.scm			\
+  %D%/packages/maven-parent-pom.scm		\
   %D%/packages/mc.scm				\
   %D%/packages/mcrypt.scm			\
   %D%/packages/medical.scm			\
+  %D%/packages/mercury.scm			\
   %D%/packages/mes.scm				\
   %D%/packages/messaging.scm			\
   %D%/packages/mingw.scm			\
@@ -435,6 +437,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pth.scm				\
   %D%/packages/pulseaudio.scm			\
   %D%/packages/pumpio.scm			\
+  %D%/packages/presentation.scm		\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
   %D%/packages/pure.scm				\
@@ -504,6 +507,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/stalonetray.scm			\
   %D%/packages/statistics.scm			\
   %D%/packages/stb.scm				\
+  %D%/packages/stenography.scm			\
   %D%/packages/storage.scm			\
   %D%/packages/suckless.scm			\
   %D%/packages/swig.scm				\
@@ -538,6 +542,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/vim.scm				\
   %D%/packages/virtualization.scm		\
   %D%/packages/visidata.scm			\
+  %D%/packages/vlang.scm			\
   %D%/packages/vnc.scm				\
   %D%/packages/vpn.scm				\
   %D%/packages/vulkan.scm			\
@@ -583,6 +588,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/docker.scm			\
   %D%/services/authentication.scm		\
   %D%/services/games.scm			\
+  %D%/services/ganeti.scm			\
   %D%/services/getmail.scm				\
   %D%/services/guix.scm			\
   %D%/services/hurd.scm				\
@@ -598,6 +604,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/nix.scm				\
   %D%/services/nfs.scm			\
   %D%/services/pam-mount.scm			\
+  %D%/services/science.scm			\
   %D%/services/security-token.scm		\
   %D%/services/shepherd.scm			\
   %D%/services/sound.scm			\
@@ -631,9 +638,9 @@ GNU_SYSTEM_MODULES =				\
   %D%/system/uuid.scm				\
   %D%/system/vm.scm				\
 						\
+  %D%/system/images/hurd.scm			\
+						\
   %D%/machine.scm				\
-  %D%/machine/digital-ocean.scm			\
-  %D%/machine/ssh.scm				\
 						\
   %D%/build/accounts.scm			\
   %D%/build/activation.scm			\
@@ -658,6 +665,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests/desktop.scm				\
   %D%/tests/dict.scm				\
   %D%/tests/docker.scm				\
+  %D%/tests/ganeti.scm				\
   %D%/tests/guix.scm				\
   %D%/tests/monitoring.scm                      \
   %D%/tests/nfs.scm				\
@@ -667,6 +675,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests/mail.scm				\
   %D%/tests/messaging.scm			\
   %D%/tests/networking.scm			\
+  %D%/tests/package-management.scm		\
   %D%/tests/reconfigure.scm			\
   %D%/tests/rsync.scm				\
   %D%/tests/security-token.scm			\
@@ -711,6 +720,14 @@ INSTALLER_MODULES =                             \
   %D%/installer/newt/welcome.scm		\
   %D%/installer/newt/wifi.scm
 
+if HAVE_GUILE_SSH
+
+GNU_SYSTEM_MODULES +=         			\
+  %D%/machine/digital-ocean.scm			\
+  %D%/machine/ssh.scm
+
+endif HAVE_GUILE_SSH
+
 # Always ship the installer modules but compile them only when
 # ENABLE_INSTALLER is true.
 if ENABLE_INSTALLER
@@ -882,6 +899,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/dstat-skip-devices-without-io.patch	\
   %D%/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch	\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
+  %D%/packages/patches/ecl-16-format-directive-limit.patch	\
+  %D%/packages/patches/ecl-16-ignore-stderr-write-error.patch	\
+  %D%/packages/patches/ecl-16-libffi.patch			\
   %D%/packages/patches/eigen-stabilise-sparseqr-test.patch	\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
@@ -890,6 +910,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/elm-compiler-fix-map-key.patch		\
   %D%/packages/patches/emacs27-exec-path.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
+  %D%/packages/patches/emacs-exwm-fix-fullscreen-states.patch	\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
   %D%/packages/patches/emacs-json-reformat-fix-tests.patch	\
   %D%/packages/patches/emacs-highlight-stages-add-gexp.patch	\
@@ -897,6 +918,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-libgit-use-system-libgit2.patch    \
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
+  %D%/packages/patches/emacs-telega-patch-server-functions.patch	\
   %D%/packages/patches/emacs-telega-test-env.patch		\
   %D%/packages/patches/emacs-undohist-ignored.patch	\
   %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch	\
@@ -926,13 +948,21 @@ dist_patch_DATA =						\
   %D%/packages/patches/findutils-localstatedir.patch		\
   %D%/packages/patches/findutils-test-rwlock-threads.patch	\
   %D%/packages/patches/flann-cmake-3.11.patch			\
-  %D%/packages/patches/flint-ldconfig.patch			\
   %D%/packages/patches/foobillard++-pkg-config.patch		\
   %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch	\
   %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch	\
   %D%/packages/patches/fontconfig-hurd-path-max.patch		\
   %D%/packages/patches/freeimage-unbundle.patch		\
   %D%/packages/patches/fuse-overlapping-headers.patch				\
+  %D%/packages/patches/ganeti-deterministic-manual.patch	\
+  %D%/packages/patches/ganeti-disable-version-symlinks.patch	\
+  %D%/packages/patches/ganeti-drbd-compat.patch			\
+  %D%/packages/patches/ganeti-haskell-pythondir.patch		\
+  %D%/packages/patches/ganeti-os-disk-size.patch		\
+  %D%/packages/patches/ganeti-preserve-PYTHONPATH.patch		\
+  %D%/packages/patches/ganeti-shepherd-master-failover.patch	\
+  %D%/packages/patches/ganeti-shepherd-support.patch		\
+  %D%/packages/patches/gash-utils-ls-test.patch			\
   %D%/packages/patches/gawk-shell.patch				\
   %D%/packages/patches/gcc-arm-bug-71399.patch			\
   %D%/packages/patches/gcc-arm-link-spec-fix.patch		\
@@ -970,6 +1000,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
   %D%/packages/patches/gd-fix-tests-on-i686.patch		\
   %D%/packages/patches/gd-brect-bounds.patch			\
+  %D%/packages/patches/gdb-hurd.patch				\
   %D%/packages/patches/gdm-default-session.patch		\
   %D%/packages/patches/geoclue-config.patch			\
   %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch	\
@@ -1046,6 +1077,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/grocsvs-dont-use-admiral.patch		\
   %D%/packages/patches/gromacs-tinyxml2.patch			\
   %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch	\
+  %D%/packages/patches/grub-cross-system-i686.patch		\
   %D%/packages/patches/grub-efi-fat-serial-number.patch		\
   %D%/packages/patches/grub-setup-root.patch			\
   %D%/packages/patches/grub-verifiers-Blocklist-fallout-cleanup.patch \
@@ -1101,14 +1133,15 @@ dist_patch_DATA =						\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
   %D%/packages/patches/ilmbase-fix-tests.patch			\
-  %D%/packages/patches/ilmbase-fix-test-arm.patch		\
   %D%/packages/patches/inetutils-hurd.patch			\
   %D%/packages/patches/inkscape-poppler-0.76.patch		\
+  %D%/packages/patches/intel-xed-fix-nondeterminism.patch	\
   %D%/packages/patches/intltool-perl-compatibility.patch	\
   %D%/packages/patches/iputils-libcap-compat.patch		\
   %D%/packages/patches/irrlicht-use-system-libs.patch		\
   %D%/packages/patches/isl-0.11.1-aarch64-support.patch	\
   %D%/packages/patches/jacal-fix-texinfo.patch			\
+  %D%/packages/patches/jamvm-2.0.0-disable-branch-patching.patch	\
   %D%/packages/patches/jamvm-arm.patch				\
   %D%/packages/patches/java-apache-ivy-port-to-latest-bouncycastle.patch	\
   %D%/packages/patches/java-commons-collections-fix-java8.patch \
@@ -1193,7 +1226,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch		\
   %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch	\
   %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch	\
-  %D%/packages/patches/libreoffice-poppler-compat.patch		\
   %D%/packages/patches/libsndfile-armhf-type-checks.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch	\
   %D%/packages/patches/libsndfile-CVE-2017-8362.patch		\
@@ -1211,8 +1243,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libutils-add-includes.patch		\
   %D%/packages/patches/libutils-remove-damaging-includes.patch	\
   %D%/packages/patches/libvdpau-va-gl-unbundle.patch		\
-  %D%/packages/patches/libvnc-CVE-2018-20750.patch		\
-  %D%/packages/patches/libvnc-CVE-2019-15681.patch		\
   %D%/packages/patches/libvpx-CVE-2016-2818.patch		\
   %D%/packages/patches/libxslt-generated-ids.patch		\
   %D%/packages/patches/libxt-guix-search-paths.patch		\
@@ -1221,6 +1251,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/lierolibre-newer-libconfig.patch		\
   %D%/packages/patches/lierolibre-remove-arch-warning.patch	\
   %D%/packages/patches/lierolibre-try-building-other-arch.patch	\
+  %D%/packages/patches/linbox-fix-pkgconfig.patch		\
   %D%/packages/patches/linkchecker-tests-require-network.patch	\
   %D%/packages/patches/linphoneqt-tabbutton.patch		\
   %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \
@@ -1228,6 +1259,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
   %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch	\
+  %D%/packages/patches/llvm-9-fix-bitcast-miscompilation.patch	\
+  %D%/packages/patches/llvm-9-fix-lpad-miscompilation.patch	\
+  %D%/packages/patches/llvm-9-fix-scev-miscompilation.patch	\
   %D%/packages/patches/lm-sensors-hwmon-attrs.patch		\
   %D%/packages/patches/lrcalc-includes.patch    		\
   %D%/packages/patches/lrzip-CVE-2017-8842.patch		\
@@ -1245,6 +1279,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/mars-install.patch			\
   %D%/packages/patches/mars-sfml-2.3.patch			\
   %D%/packages/patches/maxima-defsystem-mkdir.patch		\
+  %D%/packages/patches/maven-enforcer-api-fix-old-dependencies.patch	\
   %D%/packages/patches/maven-generate-component-xml.patch		\
   %D%/packages/patches/maven-generate-javax-inject-named.patch		\
   %D%/packages/patches/mcrypt-CVE-2012-4409.patch			\
@@ -1321,6 +1356,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch	\
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch		\
   %D%/packages/patches/opencv-rgbd-aarch64-test-fix.patch	\
+  %D%/packages/patches/opendht-fix-jami.patch			\
   %D%/packages/patches/openfoam-4.1-cleanup.patch			\
   %D%/packages/patches/openjdk-10-idlj-reproducibility.patch	\
   %D%/packages/patches/openmpi-mtl-priorities.patch		\
@@ -1344,12 +1380,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/pam-mount-luks2-support.patch		\
   %D%/packages/patches/pango-skip-libthai-test.patch		\
   %D%/packages/patches/pciutils-hurd-configure.patch		\
+  %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch		\
   %D%/packages/patches/sdl-pango-api_additions.patch		\
   %D%/packages/patches/sdl-pango-blit_overflow.patch		\
   %D%/packages/patches/sdl-pango-fillrect_crash.patch		\
   %D%/packages/patches/sdl-pango-header-guard.patch		\
   %D%/packages/patches/sdl-pango-matrix_declarations.patch	\
   %D%/packages/patches/sdl-pango-sans-serif.patch		\
+  %D%/packages/patches/sqlite-hurd.patch			\
   %D%/packages/patches/patchutils-test-perms.patch		\
   %D%/packages/patches/patch-hurd-path-max.patch		\
   %D%/packages/patches/perl-autosplit-default-time.patch	\
@@ -1412,6 +1450,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3.8-fix-tests.patch		\
   %D%/packages/patches/python-CVE-2018-14647.patch		\
   %D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch	\
+  %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch	\
   %D%/packages/patches/python-alembic-exceptions-cause.patch	\
   %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch	\
   %D%/packages/patches/python-axolotl-AES-fix.patch		\
@@ -1441,6 +1480,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch	\
   %D%/packages/patches/python-slugify-depend-on-unidecode.patch	\
   %D%/packages/patches/python2-subprocess32-disable-input-test.patch	\
+  %D%/packages/patches/python-tinycss2-flake8-compat.patch	\
   %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
   %D%/packages/patches/python-waitress-fix-tests.patch		\
@@ -1448,6 +1488,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/qemu-glibc-2.27.patch 			\
   %D%/packages/patches/qrcodegen-cpp-make-install.patch		\
   %D%/packages/patches/qt4-ldflags.patch			\
+  %D%/packages/patches/qtbase-absolute-runpath.patch		\
   %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch	\
   %D%/packages/patches/qtbase-use-TZDIR.patch			\
   %D%/packages/patches/qtscript-disable-tests.patch		\
@@ -1473,11 +1514,13 @@ dist_patch_DATA =						\
   %D%/packages/patches/racket-store-checksum-override.patch	\
   %D%/packages/patches/retroarch-disable-online-updater.patch	\
   %D%/packages/patches/ruby-rack-ignore-failing-test.patch	\
+  %D%/packages/patches/ruby-rubocop-break-dependency-cycle.patch\
   %D%/packages/patches/ruby-sanitize-system-libxml.patch	\
   %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\
   %D%/packages/patches/runc-CVE-2019-5736.patch			\
   %D%/packages/patches/rust-1.19-mrustc.patch			\
   %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
+  %D%/packages/patches/rust-1.45-linker-locale.patch		\
   %D%/packages/patches/rust-bootstrap-stage0-test.patch		\
   %D%/packages/patches/rust-coresimd-doctest.patch		\
   %D%/packages/patches/rust-nettle-disable-vendor.patch		 \
@@ -1505,6 +1548,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/slim-display.patch			\
   %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch	\
   %D%/packages/patches/sooperlooper-build-with-wx-30.patch 	\
+  %D%/packages/patches/sssd-fix-samba.patch			\
   %D%/packages/patches/steghide-fixes.patch			\
   %D%/packages/patches/suitesparse-mongoose-cmake.patch		\
   %D%/packages/patches/superlu-dist-awpm-grid.patch		\
@@ -1520,6 +1564,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/t1lib-CVE-2011-0764.patch		\
   %D%/packages/patches/t1lib-CVE-2011-1552+.patch		\
   %D%/packages/patches/t4k-common-libpng16.patch		\
+  %D%/packages/patches/tao-add-missing-headers.patch		\
+  %D%/packages/patches/tao-fix-parser-types.patch		\
   %D%/packages/patches/tar-remove-wholesparse-check.patch	\
   %D%/packages/patches/tar-skip-unreliable-tests.patch		\
   %D%/packages/patches/tcc-boot-0.9.27.patch			\
@@ -1540,7 +1586,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/tipp10-fix-compiling.patch		\
   %D%/packages/patches/tipp10-remove-license-code.patch		\
   %D%/packages/patches/tk-find-library.patch			\
-  %D%/packages/patches/transmission-CVE-2018-10756.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
   %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
   %D%/packages/patches/tomb-fix-errors-on-open.patch		\
@@ -1548,14 +1593,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-bcg729.patch			\
   %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch	\
-  %D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch		\
-  %D%/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch	\
-  %D%/packages/patches/u-boot-gpio-keys-binding-cons.patch	\
-  %D%/packages/patches/u-boot-leds-common-binding-con.patch	\
-  %D%/packages/patches/u-boot-support-Pinebook-Pro-laptop.patch	\
-  %D%/packages/patches/u-boot-video-rockchip-fix-build.patch	\
   %D%/packages/patches/ucx-tcp-iface-ioctl.patch		\
   %D%/packages/patches/udiskie-no-appindicator.patch		\
+  %D%/packages/patches/ungoogled-chromium-system-nspr.patch	\
   %D%/packages/patches/unzip-CVE-2014-8139.patch		\
   %D%/packages/patches/unzip-CVE-2014-8140.patch		\
   %D%/packages/patches/unzip-CVE-2014-8141.patch		\
@@ -1594,6 +1634,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
   %D%/packages/patches/wicd-urwid-1.3.patch			\
   %D%/packages/patches/wicd-wpa2-ttls.patch			\
+  %D%/packages/patches/widelands-system-wide_minizip.patch	\
   %D%/packages/patches/wmctrl-64-fix.patch			\
   %D%/packages/patches/wmfire-update-for-new-gdk-versions.patch	\
   %D%/packages/patches/wordnet-CVE-2008-2149.patch			\
@@ -1614,6 +1655,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
   %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
   %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
+  %D%/packages/patches/xpra-4.0.1-systemd-run.patch	\
   %D%/packages/patches/xsane-fix-memory-leak.patch		\
   %D%/packages/patches/xsane-fix-pdf-floats.patch		\
   %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 7194181681..4148639292 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -37,6 +37,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (gcrypt pk-crypto)
+  #:use-module (ice-9 format)
   #:use-module (ice-9 match)
   #:use-module (ice-9 textual-ports)
   #:use-module (srfi srfi-1)
diff --git a/gnu/packages/ada.scm b/gnu/packages/ada.scm
index a8c2bdc9a9..e58b0d7754 100644
--- a/gnu/packages/ada.scm
+++ b/gnu/packages/ada.scm
@@ -38,7 +38,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/AdaCore/langkit.git")
+                      (url "https://github.com/AdaCore/langkit")
                       (commit commit)))
                 (sha256
                  (base32
@@ -70,7 +70,7 @@ Ada library with bindings for the C and Python programming languages.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/AdaCore/libadalang.git")
+                      (url "https://github.com/AdaCore/libadalang")
                       (commit commit)))
                 (sha256
                  (base32
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index de2f6534f8..c0e7831d5b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2,7 +2,7 @@
 ;;; 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>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
@@ -85,6 +85,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -124,6 +125,7 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages terminals)
@@ -145,7 +147,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/nomius/ktsuss.git")
+         (url "https://github.com/nomius/ktsuss")
          (commit version)))
        (sha256
         (base32 "0q9931f9hp47v1n8scli4bdg2rkjpf5jf8v7jj2gdn83aia1r2hz"))
@@ -218,7 +220,7 @@ usual file attributes can be checked for inconsistencies.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Xfennec/progress.git")
+             (url "https://github.com/Xfennec/progress")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1cnb4ixlhshn139mj5sr42k5m6gjjbyqvkn1324c47niwrgp7dqm"))
@@ -1364,7 +1366,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.9.1")
+    (version "1.9.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -1374,7 +1376,7 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "1zxd6hxwhxqrm876wsn9bfajbfc4hc6l9ivzj5rjg80hzv71ch99"))
+                "05432672iilb7s52j9l9xzrlambb1wg3k7qvf5973i41y40x563w"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1486,7 +1488,7 @@ commands and their arguments.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Duncaen/OpenDoas.git")
+                    (url "https://github.com/Duncaen/OpenDoas")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1863,13 +1865,13 @@ development, not the kernel implementation of ACPI.")
 (define-public s-tui
   (package
     (name "s-tui")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "s-tui" version))
        (sha256
-        (base32 "0r5yhlsi5xiy7ii1w4kqkaxz9069v5bbfwi3x3xnxhk51yjfgr8n"))))
+        (base32 "0xkfdaz5np21311ffdvhks58155qby8j8scbcixhvjd913pj66qx"))))
     (build-system python-build-system)
     (inputs
      `(("python-psutil" ,python-psutil)
@@ -1914,7 +1916,7 @@ system is under heavy load.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dharple/detox.git")
+                    (url "https://github.com/dharple/detox")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2104,7 +2106,7 @@ degradation and failure.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/adrianlopezroche/fdupes.git")
+             (url "https://github.com/adrianlopezroche/fdupes")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2163,13 +2165,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.9.9")
+    (version "2.9.11")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "1l99vwkl48iwr8ffd1ihqia995mz8h8hwk4akm4w0cgiifp88gg8"))))
+        (base32 "1c9ayh61qwasgncmlw7rjx5r4g5n2cpg1d5blgn53zg7xhrx1yc8"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -2356,7 +2358,7 @@ lookup to YAML Mode.  You could enable the mode with @code{(add-hook
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/opsengine/cpulimit.git")
+             (url "https://github.com/opsengine/cpulimit")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2395,7 +2397,7 @@ limits.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wting/autojump.git")
+             (url "https://github.com/wting/autojump")
              (commit (string-append "release-v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2441,7 +2443,7 @@ frequently used directories by typing only a small pattern.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/clvv/fasd.git")
+                    (url "https://github.com/clvv/fasd")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2673,7 +2675,7 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dagwieers/dstat.git")
+             (url "https://github.com/dagwieers/dstat")
              (commit (string-append "v" version))))
        (file-name (git-file-name "dstat" version))
        (sha256
@@ -2725,7 +2727,7 @@ throughput (in the same interval).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nvbn/thefuck.git")
+             (url "https://github.com/nvbn/thefuck")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2801,7 +2803,7 @@ produce uniform output across heterogeneous networks.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/valr/cbatticon.git")
+             (url "https://github.com/valr/cbatticon")
              (commit version)))
        (sha256
         (base32 "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr"))
@@ -2837,7 +2839,7 @@ the status of your battery in the system tray.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/TrilbyWhite/interrobang.git")
+               (url "https://github.com/TrilbyWhite/interrobang")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2913,7 +2915,7 @@ Kerberos and Heimdal and FAST is supported with recent MIT Kerberos.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/linux-sunxi/sunxi-tools.git")
+             (url "https://github.com/linux-sunxi/sunxi-tools")
              (commit (string-append "v" version))))
        (sha256
         (base32 "04f3jqg8ww4jxsf9c6ddcdgy2xbhkyp0b3l5f1hvvbv94p81rjxd"))
@@ -3018,7 +3020,7 @@ in order to be able to find it.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/aureliojargas/sedsed.git")
+             (url "https://github.com/aureliojargas/sedsed")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3251,17 +3253,105 @@ generate those nifty terminal theme information and ASCII distribution logos in
 everyone's screenshots nowadays.")
     (license license:gpl3)))
 
+(define-public ufetch
+  (let ((commit "98b622023e03fe24dbc137e9a68104dfe1fbd04a")
+        (revision "1"))
+    (package
+      (name "ufetch")
+      (version (git-version "0.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://gitlab.com/jschx/ufetch.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "09c4zmikza16xpydinnqbi3hmcibfrrn10wij7j0j1wv1pj2sl2l"))))
+      (build-system trivial-build-system)
+      (inputs
+       `(("bash" ,bash)
+         ("tput" ,ncurses)))
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let* ((source (assoc-ref %build-inputs "source"))
+                  (output (assoc-ref %outputs "out"))
+                  (bindir (string-append output "/bin"))
+                  (docdir (string-append output "/share/doc/ufetch-" ,version))
+                  (tput (string-append (assoc-ref %build-inputs "tput") "/bin/tput")))
+             (install-file (string-append source "/LICENSE") docdir)
+             (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") "/bin"))
+             (mkdir-p bindir)
+             (for-each (lambda (src)
+                         (let ((dst (string-append bindir "/" (basename src))))
+                           (copy-file src dst)
+                           (patch-shebang dst)
+                           (substitute* dst (("tput") tput))))
+                       (find-files source "ufetch-[[:alpha:]]*$"))
+             ;; Note: the `ufetch` we create below will only work if run under
+             ;; the Guix System.  I.e. a user trying to run `ufetch` on a
+             ;; foreign distro will not get great results.  The `screenfetch`
+             ;; program does actual runtime detection of the operating system,
+             ;; and would be a better choice in such a situation.
+             (symlink "ufetch-guix" (string-append bindir "/ufetch"))))))
+      (home-page "https://gitlab.com/jschx/ufetch")
+      (synopsis "Tiny system info")
+      (description "This package provides a tiny system info utility.")
+      (license license:isc))))
+
+(define-public pfetch
+  (let ((commit "e18a0959ab98b963744755ec4687e59dc11db3c5")
+        (revision "0"))
+    (package
+      (name "pfetch")
+      (version (git-version "0.7.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/dylanaraps/pfetch")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1md40av6i3xvvwig5jzhy4kf3s5sgxxk35r0vcyrjd8qyndk927l"))))
+      (build-system trivial-build-system)
+      (inputs `(("bash" ,bash)))
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let* ((source (lambda (f)
+                            (string-append (assoc-ref %build-inputs "source") "/" f)))
+                  (output (assoc-ref %outputs "out"))
+                  (docdir (string-append output "/share/doc/pfetch-" ,version)))
+             (install-file (source "LICENSE.md") docdir)
+             (install-file (source "README.md") docdir)
+             (install-file (source "pfetch") (string-append output "/bin"))
+             (patch-shebang
+              (string-append output "/bin/pfetch")
+              (list (string-append (assoc-ref %build-inputs "bash") "/bin")))
+             #t))))
+      (home-page "https://github.com/dylanaraps/pfetch")
+      (synopsis "System information tool")
+      (description "This package provides a simple, configurable system
+information tool.")
+      (license license:expat))))
+
 (define-public nnn
   (package
     (name "nnn")
-    (version "3.2")
+    (version "3.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
                            version "/nnn-v" version ".tar.gz"))
        (sha256
-        (base32 "1zflz7yj5wzdnl0728g8qrld2z6dqn7sblbmkjvyqlv1fwjd1fsf"))))
+        (base32 "1jiaygylwrlz6rlls1q69xw10j6ypr96yshsbzisg0adk37lbchn"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
@@ -3333,7 +3423,7 @@ on systems running the Linux kernel.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/robertdavidgraham/masscan.git")
+             (url "https://github.com/robertdavidgraham/masscan")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3444,7 +3534,7 @@ launch daemons into the relevant nodes.")
               ;; We use git checkout to avoid github auto-generated tarballs
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hpc/Spindle.git")
+                    (url "https://github.com/hpc/Spindle")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3472,7 +3562,7 @@ Python loading in HPC environments.")
   (let ((real-name "inxi"))
     (package
       (name "inxi-minimal")
-      (version "3.1.03-1")
+      (version "3.1.04-1")
       (source
        (origin
          (method git-fetch)
@@ -3481,7 +3571,7 @@ Python loading in HPC environments.")
                (commit version)))
          (file-name (git-file-name real-name version))
          (sha256
-          (base32 "0539hvlq021wxhbwzdp7qliiq1jgw60mxlwrwx0z2x8qi1zqdzg6"))))
+          (base32 "1mirnrrqfjyl2r7fwnpjlk37i5hf8f7lxv2yxcbdfjf2b3dfbpvl"))))
       (build-system trivial-build-system)
       (inputs
        `(("bash" ,bash-minimal)
@@ -3655,7 +3745,7 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pwr/Solaar.git")
+                    (url "https://github.com/pwr/Solaar")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3671,10 +3761,7 @@ support forum.  It runs with the @code{/exec} command in most IRC clients.")
               (("'--prefix' in sys\\.argv")
                "len([x.startswith('--prefix=') for x in sys.argv]) > 0"))
              #t))
-         (replace 'build
-           (lambda _
-             (invoke "python" "setup.py" "build")))
-         (add-before 'check 'setenv-PATH
+         (add-before 'build 'setenv-PATH
            (lambda _
              (setenv "PYTHONPATH" (string-append "lib:" (getenv "PYTHONPATH")))
              #t)))))
@@ -3863,3 +3950,124 @@ It supports mounting local filesystems of any kind the normal mount utility
 supports.  It can also mount encrypted LUKS volumes using the password
 supplied by the user when logging in.")
     (license (list license:gpl2+ license:lgpl2.1+))))
+
+(define-public jc
+  (package
+    (name "jc")
+    (version "1.11.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/kellyjonbrazil/jc")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rkckbgm04ql4r48wjgljfiqvsz36n99yqcpcyna8lvlm8h4nmwa"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-xmltodict" ,python-xmltodict)
+       ("python-pygments" ,python-pygments)))
+    (home-page "https://github.com/kellyjonbrazil/jc")
+    (synopsis "Convert the output of command-line tools to JSON")
+    (description "@code{jc} JSONifies the output of many CLI tools and
+file-types for easier parsing in scripts.")
+    (license license:expat)))
+
+(define-public jtbl
+  (package
+    (name "jtbl")
+    (version "1.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/kellyjonbrazil/jtbl")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1zzd7rd63xva50f22d1rfja4r302aizrafarhwm67vv181swvdya"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python-tabulate" ,python-tabulate)))
+    (home-page "https://github.com/kellyjonbrazil/jtbl")
+    (synopsis "Command-line tool to print JSON data as a table in the terminal")
+    (description "@code{jtbl} accepts piped JSON data from stdin and outputs a
+text table representation to stdout.")
+    (license license:expat)))
+
+(define-public hosts
+  (package
+    (name "hosts")
+    (version "3.6.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/xwmx/hosts")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ni4z89kxzgwm26hhx908g04f2h0fypy7lgfa0rvsz8d0wslgcsn"))))
+    (build-system trivial-build-system)
+    (inputs
+     `(("bats" ,bats) ;for test
+       ("awk" ,gawk)
+       ("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("diffutils" ,diffutils)
+       ("grep" ,grep)
+       ("ncurses" ,ncurses) ;tput
+       ("sed" ,sed)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         ;; copy source
+         (copy-recursively (assoc-ref %build-inputs "source") ".")
+         ;; patch-shebang phase
+         (setenv "PATH"
+                 (string-append (assoc-ref %build-inputs "bash") "/bin"
+                                ":" (assoc-ref %build-inputs "awk") "/bin"
+                                ":" (assoc-ref %build-inputs "coreutils") "/bin"
+                                ":" (assoc-ref %build-inputs "diffutils") "/bin"
+                                ":" (assoc-ref %build-inputs "grep") "/bin"
+                                ":" (assoc-ref %build-inputs "ncurses") "/bin"
+                                ":" (assoc-ref %build-inputs "sed") "/bin"
+                                ":" "/run/setuid-programs"
+                                ":" (getenv "PATH")))
+         (substitute* "hosts"
+           (("#!/usr/bin/env bash")
+            (string-append "#!" (which "bash")
+                           "\nPATH=" (getenv "PATH"))))
+         ;; check phase
+         (setenv "TERM" "linux") ;set to tty for test
+         (invoke (string-append (assoc-ref %build-inputs "bats") "/bin/bats")
+                 "test")
+         ;; install phase
+         (install-file "hosts" (string-append %output "/bin"))
+         (let ((bash-completion
+                (string-append %output "/etc/bash_completion.d")))
+           (mkdir-p bash-completion)
+           (copy-file "etc/hosts-completion.bash"
+                      (string-append bash-completion "/hosts")))
+         (let ((zsh-completion
+                (string-append %output "/share/zsh/site-functions")))
+           (mkdir-p zsh-completion)
+           (copy-file "etc/hosts-completion.zsh"
+                      (string-append zsh-completion "/_hosts")))
+         (let ((doc (string-append %output "/share/doc/" ,name "-" ,version)))
+           (mkdir-p doc)
+           (install-file "LICENSE" doc)
+           (install-file "README.md" doc))
+         #t)))
+    (home-page "https://github.com/xwmx/hosts/")
+    (synopsis "Script for editing a foreign distro's @file{/etc/hosts} file")
+    (description "Hosts is a command line program for managing
+@file{/etc/hosts} entries.  On Guix System, @file{/etc/hosts} is managed from
+the system configuration; hosts only works when using the Guix package manager
+on a foreign distro.  @command{hosts} works with existing hosts files and
+entries, providing commands to add, remove, comment, and search.")
+    (license license:expat)))
diff --git a/gnu/packages/aidc.scm b/gnu/packages/aidc.scm
index 5648f5a9ec..944ea048bf 100644
--- a/gnu/packages/aidc.scm
+++ b/gnu/packages/aidc.scm
@@ -91,7 +91,7 @@ characters, and is highly robust.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dmtx/libdmtx.git")
+             (url "https://github.com/dmtx/libdmtx")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -163,7 +163,7 @@ Python as well as GUI widgets for GTK and Qt.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/nayuki/QR-Code-generator.git")
+                     (url "https://github.com/nayuki/QR-Code-generator")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (patches (search-patches "qrcodegen-cpp-make-install.patch"))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index b78e6ef304..0da33a0156 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages java)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
@@ -153,7 +155,7 @@ line applications.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fplll/fplll.git")
+                    (url "https://github.com/fplll/fplll")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -203,7 +205,7 @@ the real span of the lattice.")
        ;; Github instead.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fplll/fpylll.git")
+             (url "https://github.com/fplll/fpylll")
              (commit (string-append version "dev"))))
        (file-name (git-file-name name version))
        (sha256
@@ -271,7 +273,7 @@ PARI is also available as a C library to allow for faster computations.")
 (define-public gp2c
   (package
    (name "gp2c")
-   (version "0.0.11pl3")
+   (version "0.0.11pl4")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -279,7 +281,7 @@ PARI is also available as a C library to allow for faster computations.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "0yymbrgyjw500hqgmkj5m4nmscd7c9rs9w2c96lxgrcyab8krhrm"))))
+                "1cnnh7diqc97q76q5pyhpbljbhc0sz8mlrbqgiwi0sjkgh8iqsj0"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))
    (inputs `(("pari-gp" ,pari-gp)))
@@ -349,7 +351,7 @@ precision.")
 (define-public giac
   (package
     (name "giac")
-    (version "1.5.0-87")
+    (version "1.6.0-7")
     (source
      (origin
        (method url-fetch)
@@ -361,7 +363,7 @@ precision.")
                            "~parisse/debian/dists/stable/main/source/"
                            "giac_" version ".tar.gz"))
        (sha256
-        (base32 "1d0h1yb7qvh9x7wwv9yrzmcp712f49w1iljkxp4y6g9pzsmg1mmv"))))
+        (base32 "1pvgp137zcl0rbhdn1j41xxfml7fp771a7x4ph8qrhhlx0hxzn3p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((ice-9 ftw)
@@ -401,7 +403,7 @@ precision.")
                (delete-file (string-append out "/bin/xcasnew"))
                #t))))))
     (inputs
-     ;;; TODO: Add libnauty.
+;;; TODO: Add libnauty.
      `(("fltk" ,fltk)
        ("glpk" ,glpk)
        ("gmp" ,gmp)
@@ -438,16 +440,17 @@ or text interfaces) or as a C++ library.")
 (define-public flint
   (package
    (name "flint")
-   (version "2.5.2")
+   (version "2.6.0")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "http://flintlib.org/flint-"
                   version ".tar.gz"))
             (sha256 (base32
-                     "11syazv1a8rrnac3wj3hnyhhflpqcmq02q8pqk2m6g2k6h0gxwfb"))
-            (patches (search-patches "flint-ldconfig.patch"))))
+                     "0h08a71kn8347zsqjamqnmrxjpsnnzpmhvxb6d2xmfrcs6nyv2ch"))))
    (build-system gnu-build-system)
+   (inputs
+    `(("ntl" ,ntl)))
    (propagated-inputs
     `(("gmp" ,gmp)
       ("mpfr" ,mpfr))) ; header files from both are included by flint/arith.h
@@ -455,17 +458,24 @@ or text interfaces) or as a C++ library.")
     `(#:parallel-tests? #f ; seems to be necessary on arm
       #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'newer-c++
+           (lambda _
+             (substitute* "configure"
+               (("-ansi") ""))
+             #t))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
                    (gmp (assoc-ref inputs "gmp"))
-                   (mpfr (assoc-ref inputs "mpfr")))
+                   (mpfr (assoc-ref inputs "mpfr"))
+                   (ntl (assoc-ref inputs "ntl")))
                ;; do not pass "--enable-fast-install", which makes the
                ;; homebrew configure process fail
                (invoke "./configure"
                        (string-append "--prefix=" out)
                        (string-append "--with-gmp=" gmp)
-                       (string-append "--with-mpfr=" mpfr))
+                       (string-append "--with-mpfr=" mpfr)
+                       (string-append "--with-ntl=" ntl))
                #t))))))
    (synopsis "Fast library for number theory")
    (description
@@ -485,16 +495,16 @@ fast arithmetic.")
 (define-public arb
   (package
     (name "arb")
-    (version "2.17.0")
+    (version "2.18.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fredrik-johansson/arb.git")
+                    (url "https://github.com/fredrik-johansson/arb")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "05lpy3hkl5f8ik19aw40cqydrb932xaf2n8hbq9ib5dnk7f010p1"))))
+                "15fx3dcbzgwddw9p1nysmx0dbh058afv5m8cj5pdjkcmcl7kw7z9"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("flint" ,flint)))               ; flint.h is included by arf.h
@@ -533,7 +543,7 @@ real and complex numbers, with automatic, rigorous error control.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fredrik-johansson/python-flint.git")
+                    (url "https://github.com/fredrik-johansson/python-flint")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -726,7 +736,7 @@ syntax is similar to that of C, so basic usage is familiar.  It also includes
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/extemporelang/kiss_fft.git")
+                    (url "https://github.com/extemporelang/kiss_fft")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -832,7 +842,7 @@ cosine/ sine transforms or DCT/DST).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vkostyukov/la4j.git")
+                    (url "https://github.com/vkostyukov/la4j")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -946,6 +956,46 @@ minimization and curve fitting.  It is mature code, based on decades-old
 algorithms from the FORTRAN library MINPACK.")
     (license license:bsd-2)))
 
+(define-public symengine
+  (package
+    (name "symengine")
+    (version "0.6.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/symengine/symengine")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "129iv9maabmb42ylfdv0l0g94mcbf3y4q3np175008rcqdr8z6h1"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       ;; These are the suggested build options in the README.
+       '("-DCMAKE_BUILD_TYPE=Release"
+         "-DWITH_GMP=on"
+         "-DWITH_MPFR=on"
+         "-DWITH_MPC=on"
+         "-DINTEGER_CLASS=flint"
+         "-DWITH_LLVM=on"
+         "-DWITH_SYMENGINE_THREAD_SAFE=on"
+         "-DBUILD_SHARED_LIBS=on")))    ;also build libsymengine
+    (native-inputs
+     `(("llvm" ,llvm)))
+    (inputs
+     `(("flint" ,flint)
+       ("gmp" ,gmp)
+       ("mpc" ,mpc)
+       ("mpfr" ,mpfr)))
+    (home-page "https://github.com/symengine/symengine")
+    (synopsis "Fast symbolic manipulation library")
+    (description
+     "SymEngine is a standalone fast C++ symbolic manipulation library.
+Optional thin wrappers allow usage of the library from other languages.")
+    (license (list license:expat        ;SymEngine
+                   license:bsd-3))))    ;3rd party code
+
 (define-public eigen
   (package
     (name "eigen")
@@ -1033,7 +1083,7 @@ features, and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/QuantStack/xtensor.git")
+                    (url "https://github.com/QuantStack/xtensor")
                     (commit version)))
               (sha256
                (base32
@@ -1314,14 +1364,15 @@ algebra, such as the row echelon form.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "10j6dspbsq7d2l4q3y0c1l1xwmaqqba2fxg59q5bhgk9h5d7q571"))))
+                "10j6dspbsq7d2l4q3y0c1l1xwmaqqba2fxg59q5bhgk9h5d7q571"))
+              (patches (search-patches "linbox-fix-pkgconfig.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
-    (inputs
+    (propagated-inputs
      `(("fflas-ffpack" ,fflas-ffpack)))
     (synopsis "C++ library for linear algebra over exact rings")
     (description
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 9ee7d28687..0fb4330d3e 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -65,7 +65,7 @@
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/daym/android-make-stub.git")
+            (url "https://github.com/daym/android-make-stub")
             (commit (string-append "v" version))))
       (file-name (string-append "android-make-stub-"
                                 version "-checkout"))
@@ -99,7 +99,7 @@ use their packages mostly unmodified in our Android NDK build system.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/google/googletest.git")
+              (url "https://github.com/google/googletest")
               (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 0357ac1190..e041592dbd 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -201,7 +201,7 @@ contains the graphical user interface for synfig.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/LostMoho/Papagayo.git")
+                      (url "https://github.com/LostMoho/Papagayo")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/antivirus.scm b/gnu/packages/antivirus.scm
index 367ebe70dd..c7bf911ae7 100644
--- a/gnu/packages/antivirus.scm
+++ b/gnu/packages/antivirus.scm
@@ -44,14 +44,14 @@
 (define-public clamav
   (package
     (name "clamav")
-    (version "0.102.3")
+    (version "0.102.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.clamav.net/downloads/production/"
                                   "clamav-" version ".tar.gz"))
               (sha256
                (base32
-                "14q6vi178ih60yz4ja33b6181va1dcj8fyscnmxfx2crav250c7d"))
+                "06rrzyrhnr0rswryijpbbzywr6387rv8qjq8sb8cl3h2d1m45ggf"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/arcan.scm b/gnu/packages/arcan.scm
index e3f8b60aea..a84bf0d8dd 100644
--- a/gnu/packages/arcan.scm
+++ b/gnu/packages/arcan.scm
@@ -59,7 +59,7 @@
                 (method git-fetch)
                 (file-name (git-file-name name version))
                 (uri (git-reference
-                      (url "https://github.com/letoram/arcan.git")
+                      (url "https://github.com/letoram/arcan")
                       (commit commit)))
                 (sha256
                  (base32 "1pd0avlzc2rig1hd37zbhc7r2s6fjzdhshfg9l9cfzibl7caclyw"))))
@@ -145,7 +145,7 @@
                             (method git-fetch)
                             (file-name "arcan-openal-0.5.4")
                             (uri (git-reference
-                                  (url "https://github.com/letoram/openal.git")
+                                  (url "https://github.com/letoram/openal")
                                   (commit "1c7302c580964fee9ee9e1d89ff56d24f934bdef")))
                             (sha256
                              (base32
@@ -195,7 +195,7 @@ engine programmable using Lua.")
          (method git-fetch)
          (file-name (git-file-name name version))
          (uri (git-reference
-               (url "https://github.com/letoram/xarcan.git")
+               (url "https://github.com/letoram/xarcan")
                (commit commit)))
          (sha256
           (base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym"))))
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index c9582bc596..6587dc5aa2 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2019 Andy Tai <atai@atai.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +48,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages shells)
   #:use-module (gnu packages xml)
   #:use-module ((guix utils)
                 #:select (%current-system)))
@@ -259,16 +261,16 @@ runtime")
 (define-public rgbds
   (package
     (name "rgbds")
-    (version "0.4.0")
+    (version "0.4.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rednex/rgbds.git")
+                    (url "https://github.com/rednex/rgbds")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "15680964nlsa83nqgxk7knxajn98lddz2hg6jnn8ffmnms5wdam7"))))
+                "05djzl3h18zg2z5p2a881wjbmgikzkhf67cgk00frhw4v05sq0lf"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -306,21 +308,21 @@ package for the Game Boy and Game Boy Color.  It consists of:
 (define-public wla-dx
   (package
     (name "wla-dx")
-    (version "9.10")
+    (version "9.11")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vhelin/wla-dx.git")
+                    (url "https://github.com/vhelin/wla-dx")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "022isf7s9q5i0j4xj69zpp0lgw8p9n37sn7ii25v68r15zaahk2w"))))
+                "0i8pxvyaih79pqnyvqyqd9rwdid91pna76cap0k1n5zhg8xswf2f"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("sphinx" ,python-sphinx)))      ; to generate man pages
     (arguments
-     `(#:tests? #f)) ; no tests
+     `(#:tests? #f))                    ; no tests
     (home-page "https://github.com/vhelin/wla-dx")
     (synopsis "Assemblers for various processors")
     (description "WLA DX is a set of tools to assemble assembly files to
@@ -371,3 +373,129 @@ It understands mnemonics and generates code for NMOS 6502s (such
 as 6502A, 6504, 6507, 6510, 7501, 8500, 8501, 8502 ...),
  CMOS 6502s (65C02 and Rockwell R65C02) and the 65816.")
     (license license:gpl2)))
+
+(define-public armips
+  (package
+    (name "armips")
+    (version "0.11.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Kingcom/armips")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1c4dhjkvynqn9xm2vcvwzymk7yg8h25alnawkz4z1dnn1z1k3r9g"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (invoke "./armipstests" "../source/Tests")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "armips" (string-append (assoc-ref outputs "out")
+                                                   "/bin"))
+             #t)))))
+    (home-page "https://github.com/Kingcom/armips")
+    (synopsis "Assembler for various ARM and MIPS platforms")
+    (description
+     "armips is an assembler with full support for the MIPS R3000, MIPS R4000,
+Allegrex and RSP instruction sets, partial support for the EmotionEngine
+instruction set, as well as complete support for the ARM7 and ARM9 instruction
+sets, both THUMB and ARM mode.")
+    (license license:expat)))
+
+(define-public intel-xed
+  (package
+    (name "intel-xed")
+    (version "11.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/intelxed/xed")
+             (commit version)))
+       (sha256 (base32 "1jffayski2gpd54vaska7fmiwnnia8v3cka4nfyzjgl8xsky9v2s"))
+       (file-name (git-file-name name version))
+       (patches (search-patches "intel-xed-fix-nondeterminism.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("python-wrapper" ,python-wrapper)
+       ("tcsh" ,tcsh)
+       ;; As of the time of writing this comment, mbuild does not exist in the
+       ;; Python Package Index and seems to only be used by intel-xed, so we
+       ;; opt to include it here instead of packaging separately.  Note also
+       ;; that the git repository contains no version tags, so we directly
+       ;; reference the "version" variable from setup.py instead.
+       ("mbuild"
+        ,(let ((name "mbuild")
+               (version "0.2496"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/intelxed/mbuild.git")
+                   (commit "5304b94361fccd830c0e2417535a866b79c1c297")))
+             (sha256
+              (base32
+               "0r3avc3035aklqxcnc14rlmmwpj3jp09vbcbwynhvvmcp8srl7dl"))
+             (file-name (git-file-name name version)))))))
+    (outputs '("out" "lib"))
+    (arguments
+     `(#:phases
+       ;; Upstream uses the custom Python build tool `mbuild', so we munge
+       ;; gnu-build-system to fit.  The build process for this package is
+       ;; documented at https://intelxed.github.io/build-manual/.
+       (let* ((build-dir "build")
+              (kit-dir "kit"))
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'build
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((mbuild (assoc-ref inputs "mbuild")))
+                 (setenv "PYTHONPATH" (string-append
+                                       (getenv "PYTHONPATH") ":" mbuild))
+                 (invoke "./mfile.py"
+                         (string-append "--build-dir=" build-dir)
+                         (string-append "--install-dir=" kit-dir)
+                         "examples"
+                         "doc"
+                         "install"))))
+           (replace 'check
+             (lambda _
+               ;; Skip broken test group `tests/tests-avx512pf'.
+               (invoke "tests/run-cmd.py"
+                       (string-append "--build-dir=" kit-dir "/bin")
+                       "--tests" "tests/tests-base"
+                       "--tests" "tests/tests-avx512"
+                       "--tests" "tests/tests-cet"
+                       "--tests" "tests/tests-via"
+                       "--tests" "tests/tests-syntax"
+                       "--tests" "tests/tests-xop")))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lib (assoc-ref outputs "lib")))
+                 (copy-recursively (string-append kit-dir "/bin")
+                                   (string-append out "/bin"))
+                 (copy-recursively (string-append kit-dir "/include")
+                                   (string-append lib "/include"))
+                 (copy-recursively (string-append kit-dir "/lib")
+                                   (string-append lib "/lib"))
+                 #t)))))))
+    (home-page "https://intelxed.github.io/")
+    (synopsis "Encoder and decoder for x86 (IA32 and Intel64) instructions")
+    (description "The Intel X86 Encoder Decoder (XED) is a software library and
+for encoding and decoding X86 (IA32 and Intel64) instructions.  The decoder
+takes sequences of 1-15 bytes along with machine mode information and produces
+a data structure describing the opcode, operands, and flags.  The encoder takes
+a similar data structure and produces a sequence of 1 to 15 bytes.  Disassembly
+is essentially a printing pass on the data structure.
+
+The library and development files are under the @code{lib} output, with a
+family of command line utility wrappers in the default output.  Each of the cli
+tools is named like @code{xed*}.  Documentation for the cli tools is sparse, so
+this is a case where ``the code is the documentation.''")
+    (license license:asl2.0)))
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 5b4590945d..72368f12f1 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -159,7 +159,7 @@ programs for the manipulation and analysis of astronomical data.")
 (define-public stellarium
   (package
     (name "stellarium")
-    (version "0.20.1")
+    (version "0.20.2")
     (source
      (origin
        (method url-fetch)
@@ -167,7 +167,7 @@ programs for the manipulation and analysis of astronomical data.")
                            "/releases/download/v" version
                            "/stellarium-" version ".tar.gz"))
        (sha256
-        (base32 "034jkrdaaamvbrkfwi3qcl6h8hwfnw2nvf7a82faj55rskcpnkhm"))))
+        (base32 "16symz212vjvhfabh39a68qf7d0rm574c6djlibj2qd1q9jgj3j0"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -178,7 +178,7 @@ programs for the manipulation and analysis of astronomical data.")
        ("zlib" ,zlib)))
     (native-inputs
      `(("gettext" ,gettext-minimal)     ; xgettext is used at compile time
-       ("perl" ,perl)                   ; For pod2man
+       ("perl" ,perl)                   ; for pod2man
        ("qtbase" ,qtbase)               ; Qt MOC is needed at compile time
        ("qttools" ,qttools)))
     (arguments
@@ -191,7 +191,7 @@ programs for the manipulation and analysis of astronomical data.")
        #:phases (modify-phases %standard-phases
                   (add-before 'check 'set-offscreen-display
                     (lambda _
-                      ;; make Qt render "offscreen", required for tests
+                      ;; Make Qt render "offscreen", required for tests.
                       (setenv "QT_QPA_PLATFORM" "offscreen")
                       (setenv "HOME" "/tmp")
                       #t)))))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 74ef7111c3..dfef3a81e7 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -70,6 +70,7 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnunet) ; libmicrohttpd
@@ -395,17 +396,17 @@ engineers, musicians, soundtrack editors and composers.")
 (define-public audacity
   (package
     (name "audacity")
-    (version "2.3.3")
+    (version "2.4.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/audacity/audacity.git")
+             (url "https://github.com/audacity/audacity")
              (commit (string-append "Audacity-" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk"))
+         "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn"))
        (patches (search-patches "audacity-build-with-system-portaudio.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -718,7 +719,7 @@ tools (analyzer, mono/stereo tools, crossovers).")
              ;; Actually https://github.com/moddevices/caps-lv2.git, but it's
              ;; missing fixes for newer glibc, so using the origin of a pull
              ;; request regarding this issue:
-             (url "https://github.com/jujudusud/caps-lv2.git")
+             (url "https://github.com/jujudusud/caps-lv2")
              (commit "9c9478b7fbd8f9714f552ebe2a6866398b0babfb")))
        (file-name (git-file-name name version))
        (sha256
@@ -754,7 +755,7 @@ generators of mostly elementary and occasionally exotic nature.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ssj71/infamousPlugins.git")
+                    (url "https://github.com/ssj71/infamousPlugins")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -793,7 +794,7 @@ envelope follower, distortion effects, tape effects and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/swh/ladspa.git")
+                    (url "https://github.com/swh/ladspa")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -823,7 +824,7 @@ envelope follower, distortion effects, tape effects and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/swh/lv2.git")
+                    (url "https://github.com/swh/lv2")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -861,6 +862,76 @@ flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
     (license license:gpl3+)))
 
+(define-public tao
+  (package
+    (name "tao")
+    (version "1.0-beta-10May2006")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/taopm/Tao/"
+                                  "tao-" version "/"
+                                  "tao-" version ".tar.gz"))
+              (sha256
+               (base32
+                "156py3g6mmglldfd0j76bn7n242hdwf49diaprjpj7crp8vgf2pz"))
+              (patches
+               (search-patches "tao-add-missing-headers.patch"
+                               "tao-fix-parser-types.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "configure"
+                    (("SHELL=/bin/sh") ""))
+                  #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("TAO_RELEASE=-beta")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-references
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "user-scripts/tao.in"
+               (("taoparse")
+                (string-append (assoc-ref outputs "out") "/bin/taoparse"))
+               (("grep") (which "grep"))
+               (("sed -f \\$distdir/user-scripts/")
+                (string-append (which "sed") " -f $distdir/"))
+               (("distdir=.*")
+                (string-append "distdir="
+                               (assoc-ref outputs "out") "/share/tao")))
+             #t))
+         (add-after 'install 'install-extra-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share/tao/"))
+                    (inc (string-append out "/include/tao/")))
+               (mkdir-p share)
+               (mkdir-p inc)
+               (install-file "user-scripts/error.parse" share)
+               (copy-recursively "examples" (string-append share "examples"))
+               (for-each (lambda (file) (install-file file inc))
+                         (find-files "include" "\\.h"))
+               #t))))))
+    (inputs
+     `(("audiofile" ,audiofile)
+       ("libxi" ,libxi)
+       ("libxmu" ,libxmu)
+       ("mesa" ,mesa)
+       ("glut" ,freeglut)
+       ("flex" ,flex)
+       ("bison" ,bison)
+       ("sed" ,sed)
+       ("grep" ,grep)))
+    (home-page "http://taopm.sourceforge.net/")
+    (synopsis "Sound Synthesis with Physical Models")
+    (description "Tao is a software package for sound synthesis using physical
+models.  It provides a virtual acoustic material constructed from masses and
+springs which can be used as the basis for building quite complex virtual
+musical instruments.  Tao comes with a synthesis language for creating and
+playing instruments and a C++ API for those who would like to use it as an
+object library.")
+    (license license:gpl2+)))
+
 (define-public csound
   (package
     (name "csound")
@@ -869,7 +940,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/csound/csound.git")
+             (url "https://github.com/csound/csound")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1259,7 +1330,7 @@ follower.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/FluidSynth/fluidsynth.git")
+                    (url "https://github.com/FluidSynth/fluidsynth")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1339,7 +1410,7 @@ PS, and DAB+.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/grame-cncm/faust.git")
+                    (url "https://github.com/grame-cncm/faust")
                     (commit (string-append "v"
                                            (string-map (lambda (c)
                                                          (if (char=? c #\.) #\- c))
@@ -1619,15 +1690,16 @@ especially for creating reverb effects.  It supports impulse responses with 1,
   (package
     (name "jack")
     (version "0.125.0")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "http://jackaudio.org/downloads/jack-audio-connection-kit-"
-                   version
-                   ".tar.gz"))
-             (sha256
-              (base32
-               "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
+    (source
+     (origin
+       (method url-fetch)
+       ;; jackaudio.org/downloads/jack-audio-connection-kit-0.125.0.tar.gz
+       ;; no longer exists (404).  Use an unofficial mirror.
+       (uri (string-append "https://crux.ster.zone/downloads/"
+                           "jack-audio-connection-kit/"
+                           "jack-audio-connection-kit-" version ".tar.gz"))
+       (sha256
+        (base32 "0i6l25dmfk2ji2lrakqq9icnwjxklgcjzzk65dmsff91z2zva5rm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -1647,7 +1719,7 @@ especially for creating reverb effects.  It supports impulse responses with 1,
        ("bdb" ,bdb)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://jackaudio.org/")
+    (home-page "https://jackaudio.org/")
     (synopsis "JACK audio connection kit")
     (description
      "JACK is a low-latency audio server.  It can connect a number of
@@ -2023,21 +2095,21 @@ significantly faster and have minimal dependencies.")
     (version "1.18.0")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://lv2plug.in/spec/lv2-"
+             (uri (string-append "https://lv2plug.in/spec/lv2-"
                                  version ".tar.bz2"))
              (sha256
               (base32
                "0gs7401xz23q9vajqr31aa2db8dvssgyh5zrvr4ipa6wig7yb8wh"))))
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f  ; no check target
+     `(#:tests? #f                      ; no check target
        #:configure-flags '("--no-plugins")))
     (inputs
      ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
      `(("libsndfile" ,libsndfile)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://lv2plug.in/")
+    (home-page "https://lv2plug.in/")
     (synopsis "LV2 audio plugin specification")
     (description
      "LV2 is an open specification for audio plugins and host applications.
@@ -2100,7 +2172,7 @@ software.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/lvtk/lvtk.git")
+                   (url "https://github.com/lvtk/lvtk")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -2302,7 +2374,7 @@ into various outputs and to start, stop and configure jackd")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/orouits/qjackrcd.git")
+                    (url "https://github.com/orouits/qjackrcd")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2337,7 +2409,7 @@ background file post-processing.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/supercollider/supercollider.git")
+                    (url "https://github.com/supercollider/supercollider")
                     (commit (string-append "Version-" version))
                     ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
                     (recursive? #t)))
@@ -3084,7 +3156,7 @@ synthesizer written in C++.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Themaister/RSound.git")
+             (url "https://github.com/Themaister/RSound")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3123,7 +3195,7 @@ with a much different focus than most other audio daemons.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/johnhldavis/xjackfreak.git")
+                    (url "https://github.com/johnhldavis/xjackfreak")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3203,7 +3275,7 @@ engine.")
 (define-public zita-resampler
   (package
     (name "zita-resampler")
-    (version "1.3.0")
+    (version "1.6.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3213,26 +3285,28 @@ engine.")
               (snippet
                ;; Don't optimize for a specific processor architecture.
                '(begin
-                  (substitute* '("apps/Makefile" "libs/Makefile")
+                  (substitute* '("apps/Makefile" "source/Makefile")
                     (("^CXXFLAGS \\+= -march=native") ""))
                   #t))
               (modules '((guix build utils)))
               (sha256
                (base32
-                "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
+                "1my5k2dh2dkvjp6xjnf9qy6i7s28z13kw1n9pwa4a2cpwbzawfr3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no "check" target
-       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "SUFFIX="))
        #:phases
        (modify-phases %standard-phases
          (add-after
           'unpack 'patch-makefile-and-enter-directory
           (lambda _
-            (substitute* "libs/Makefile"
+            (substitute* "source/Makefile"
               (("ldconfig") "true")
               (("^LIBDIR =.*") "LIBDIR = lib\n"))
-            (chdir "libs")
+            (chdir "source")
             #t))
          (add-after
           'install 'install-symlink
@@ -3254,7 +3328,7 @@ provide high-quality sample rate conversion.")
 (define-public zita-alsa-pcmi
   (package
     (name "zita-alsa-pcmi")
-    (version "0.2.0")
+    (version "0.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -3263,19 +3337,21 @@ provide high-quality sample rate conversion.")
                     version ".tar.bz2"))
               (sha256
                (base32
-                "1rgv332g82rrrlm4vdam6p2pyrisxbi7b3izfaa0pcjglafsy7j9"))))
+                "12d7vdg74yh21w69qi0wg57iz4876j94qbiq09bvscih6xz9y78s"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no "check" target
-       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "SUFFIX="))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-makefile-and-enter-directory
            (lambda _
-             (substitute* "libs/Makefile"
+             (substitute* "source/Makefile"
                (("ldconfig") "true")
                (("^LIBDIR =.*") "LIBDIR = lib\n"))
-             (chdir "libs")
+             (chdir "source")
              #t))
          (add-after 'install 'install-symlink
            (lambda _
@@ -3304,7 +3380,7 @@ point audio data.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/svend/cuetools.git")
+                   (url "https://github.com/svend/cuetools")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -3354,7 +3430,7 @@ use them split WAVE data into multiple files.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/foo86/dcadec.git")
+                    (url "https://github.com/foo86/dcadec")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3432,7 +3508,7 @@ loudness of audio and video files to the same level.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/irungentoo/filter_audio.git")
+               (url "https://github.com/irungentoo/filter_audio")
                (commit commit)))
          (file-name (string-append name "-" version "-checkout"))
          (sha256
@@ -3541,7 +3617,7 @@ mixers.")
               ;; bootstrapped build system.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Arkq/bluez-alsa.git")
+                    (url "https://github.com/Arkq/bluez-alsa")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3586,14 +3662,14 @@ on the ALSA software PCM plugin.")
 (define-public snd
   (package
     (name "snd")
-    (version "20.4")
+    (version "20.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ccrma-ftp.stanford.edu/pub/Lisp/"
                                   "snd-" version ".tar.gz"))
               (sha256
                (base32
-                "0irdizlng2s3akmxdbfxcbd93bbjz9543nh7fisszim6v0ks59d9"))))
+                "1frg64q2d8cia6v7jia7kahzx0apwdl0z252mzlbwqdz5960nv90"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -3650,7 +3726,7 @@ the Snd sources), Ruby, or Forth.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lucianodato/noise-repellent.git")
+                    (url "https://github.com/lucianodato/noise-repellent")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3695,7 +3771,7 @@ the following features:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dpayne/cli-visualizer.git")
+             (url "https://github.com/dpayne/cli-visualizer")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3740,7 +3816,7 @@ representations.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/karlstav/cava.git")
+                    (url "https://github.com/karlstav/cava")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3893,7 +3969,7 @@ library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FNA-XNA/FAudio.git")
+             (url "https://github.com/FNA-XNA/FAudio")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3998,6 +4074,45 @@ stream to one or more IceCast and/or ShoutCast servers.")
     (home-page "https://x42.github.io/libltc/")
     (license license:lgpl3+)))
 
+(define-public ttaenc
+  (package
+    (name "ttaenc")
+    (version "3.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/tta/"
+                           "tta/ttaenc-src"
+                           "/ttaenc-" version "-src.tgz"))
+       (sha256
+        (base32
+         "1iixpr4b89g9g1hwn8ak8k8iflcww3r5f09a117qdidc2nqcijdj"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no tests
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "INSDIR=" (assoc-ref %outputs "out") "/bin"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure
+         (add-before 'install 'make-bindir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))
+               #t))))))
+    (synopsis "TTA lossless audio encoder")
+    (description
+     "TTA performs lossless compression on multichannel 8,16 and 24 bits
+data of the Wav audio files.  Being lossless means that no data-
+quality is lost in the compression - when uncompressed, the data will
+be identical to the original.  The compression ratios of TTA depend on
+the type of music file being compressed, but the compression size
+will generally range between 30% - 70% of the original.  TTA format
+supports both of ID3v1/v2 and APEv2 tags.")
+    (home-page "http://tausoft.org/")
+    (license license:gpl2+)))
+
 (define-public redkite
   (package
     (name "redkite")
@@ -4030,18 +4145,18 @@ as is the case with audio plugins.")
 (define-public carla
   (package
     (name "carla")
-    (version "2.0.0")
+    (version "2.1.1")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/falkTX/Carla.git")
+         (url "https://github.com/falkTX/Carla")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0fqgncqlr86n38yy7pa118mswfacmfczj7w9xx6c6k0jav3wk29k"))))
+         "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no "check" target
@@ -4072,6 +4187,7 @@ as is the case with audio plugins.")
        ("file" ,file)
        ("liblo" ,liblo)
        ("libsndfile" ,libsndfile)
+       ("gtk2" ,gtk+-2)   ;needed for bridging GTK2 plugins in GTK3 hosts
        ("gtk+" ,gtk+)
        ("python-pyliblo" ,python-pyliblo)
        ("python-pyqt" ,python-pyqt)
@@ -4143,7 +4259,7 @@ in the package.")
 (define-public libaudec
   (package
     (name "libaudec")
-    (version "0.2")
+    (version "0.2.2")
     (source
       (origin
         (method git-fetch)
@@ -4153,7 +4269,7 @@ in the package.")
         (file-name (git-file-name name version))
         (sha256
           (base32
-            "0lfydvs92b0hr72z71ci3yi356rjzi162pgms8dphgg18bz8dazv"))))
+            "04mpmfmqc43asw0m3zxhb6jj4qms7x4jw7mx4xb1d3lh16xllniz"))))
    (build-system meson-build-system)
    (arguments
     `(#:configure-flags `("-Denable_tests=true -Denable_ffmpeg=true")))
@@ -4287,7 +4403,7 @@ minimum.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/drowe67/codec2.git")
+             (url "https://github.com/drowe67/codec2")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4320,7 +4436,7 @@ digital radio.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Ableton/link.git")
+                    (url "https://github.com/Ableton/link")
                     (commit (string-append "Link-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm
index d995ef7e85..b3ff912c8f 100644
--- a/gnu/packages/authentication.scm
+++ b/gnu/packages/authentication.scm
@@ -101,7 +101,7 @@ and the time-based @dfn{TOTP} algorithm (RFC6238).")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Yubico/yubico-pam.git")
+                      (url "https://github.com/Yubico/yubico-pam")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index f8884bb6cb..76af6fdef1 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -176,7 +176,7 @@ C++.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ryansuchocki/microscheme.git")
+             (url "https://github.com/ryansuchocki/microscheme")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1r3ng4pw1s9yy1h5rafra1rq19d3vmb5pzbpcz1913wz22qdd976"))
diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm
index 94d3d818c5..ba49a9d0f0 100644
--- a/gnu/packages/axoloti.scm
+++ b/gnu/packages/axoloti.scm
@@ -71,7 +71,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/axoloti/axoloti.git")
+             (url "https://github.com/axoloti/axoloti")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -367,7 +367,7 @@ patcher application.")))
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/axoloti/axoloti.git")
+             (url "https://github.com/axoloti/axoloti")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -607,7 +607,7 @@ patcher application.")))
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/JohannesTaelman/elfloader.git")
+                   (url "https://github.com/JohannesTaelman/elfloader")
                    (commit commit)))
              (file-name (git-file-name "elfloader" commit))
              (sha256
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 74acd791ac..7a1fd142bf 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -146,7 +146,7 @@ spying and/or modification by the server.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Parchive/par2cmdline.git")
+                    (url "https://github.com/Parchive/par2cmdline")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -310,7 +310,7 @@ random access nor for in-place modification.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/miekg/rdup.git")
+             (url "https://github.com/miekg/rdup")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -404,23 +404,24 @@ errors.")
 (define-public rdiff-backup
   (package
     (name "rdiff-backup")
-    (version "1.2.8")
+    (version "2.0.3")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://savannah/rdiff-backup/rdiff-backup-"
-                           version ".tar.gz"))
+       (uri (string-append "https://github.com/rdiff-backup/rdiff-backup/releases/"
+                           "download/v" version "/rdiff-backup-" version ".tar.gz"))
        (sha256
         (base32
-         "1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d"))))
+         "1qfmvwwb942srhg6gw77ncy4z5z54b4wfz8bpd5bpml8hp1d5qh4"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
     (inputs
-     `(("python" ,python-2)
-       ("librsync" ,librsync-0.9)))
+     `(("python" ,python)
+       ("librsync" ,librsync)))
     (arguments
-     `(#:python ,python-2
-       #:tests? #f))
-    (home-page "https://www.nongnu.org/rdiff-backup/")
+     `(#:tests? #f))                    ; Tests require root/sudo
+    (home-page "https://rdiff-backup.net/")
     (synopsis "Local/remote mirroring+incremental backup")
     (description
      "Rdiff-backup backs up one directory to another, possibly over a network.
@@ -999,7 +1000,7 @@ precious backup space.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/zbackup/zbackup.git")
+             (url "https://github.com/zbackup/zbackup")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1053,12 +1054,12 @@ is format-agnostic, so you can feed virtually any files to it.")
        ("util-linux" ,util-linux "lib")
        ("e2fsprogs" ,e2fsprogs)))
     (home-page "https://dump.sourceforge.io/")
-    (synopsis "Ext2/3/4 filesystem dump/restore utilities")
-    (description "Dump examines files in a filesystem, determines which ones
+    (synopsis "Ext2/3/4 file system dump/restore utilities")
+    (description "Dump examines files in a file system, determines which ones
 need to be backed up, and copies those files to a specified disk, tape or
 other storage medium.  Subsequent incremental backups can then be layered on
 top of the full backup.  The restore command performs the inverse function of
-dump; it can restore a full backup of a filesystem.  Single files and
+dump; it can restore a full backup of a file system.  Single files and
 directory subtrees may also be restored from full or partial backups in
 interractive mode.")
     (license license:bsd-3)))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index e2c4408edd..10b7361b38 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -357,6 +357,7 @@ used to apply commands with arbitrarily long arguments.")
               (list (string-append "XFAIL_TESTS=tests/misc/env-S.pl"
                                    " tests/misc/kill.sh"
                                    " tests/misc/nice.sh"
+                                   " tests/misc/pwd-long.sh"
                                    " tests/split/fail.sh"
                                    " test-fdutimensat"
                                    " test-futimens"
@@ -574,8 +575,8 @@ included.")
 ;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream).
 ;; Keep this version around until the patch is updated.
 (define-public binutils-2.33
-  (package/inherit
-   binutils
+  (package
+   (inherit binutils)
    (version "2.33.1")
    (source (origin
              (inherit (package-source binutils))
@@ -590,8 +591,7 @@ included.")
    (properties '())))
 
 (define-public binutils-gold
-  (package
-    (inherit binutils)
+  (package/inherit binutils+documentation
     (name "binutils-gold")
     (arguments
      `(#:phases
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 3ba8a13e40..47ca625d9a 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 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 © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -24,11 +24,13 @@
 (define-module (gnu packages bash)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages guile)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -37,6 +39,7 @@
   #:use-module (guix monads)
   #:use-module (guix store)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:autoload   (guix gnupg) (gnupg-verify*)
   #:autoload   (guix base32) (bytevector->nix-base32-string)
 
@@ -327,7 +330,7 @@ completion for many common commands.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/illusori/bash-tap.git")
+             (url "https://github.com/illusori/bash-tap")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -362,3 +365,53 @@ for Bash shell scripts and functions.  Along with the Test::More-style testing
 helpers it provides helper functions for mocking commands and in-process output
 capturing.")
     (license expat)))
+
+(define-public bats
+  (package
+    (name "bats")
+    (version "1.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/bats-core/bats-core")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0f59zh4d4pa1a7ybs5zl6h0csbqqv11lbnq0jl1dgwm1s6p49bsq"))))
+    (inputs
+     `(("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("guile" ,guile-3.0) ;for wrap-script
+       ("grep" ,grep)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (copy-recursively (assoc-ref %build-inputs "source") ".")
+         (setenv "PATH"
+                 (string-append (assoc-ref %build-inputs "bash") "/bin"
+                                ":" (assoc-ref %build-inputs "coreutils") "/bin"
+                                ":" (assoc-ref %build-inputs "grep") "/bin"
+                                ":" (assoc-ref %build-inputs "guile") "/bin"
+                                ":" (getenv "PATH")))
+         (for-each (lambda (file) (patch-shebang file)) (find-files "."))
+         (substitute* "bin/bats"
+           (("export BATS_ROOT" line)
+            (string-append "BATS_ROOT=\"${BATS_ROOT:-" %output "/libexec/bats-core}\"\n"
+                           line)))
+         ;; Install phase
+         (invoke "./install.sh" %output)
+         (wrap-script (string-append %output "/bin/bats")
+                      (list "PATH" 'prefix (string-split (getenv "PATH")
+                                                         #\:))))))
+    (build-system trivial-build-system)
+    (home-page "https://github.com/bats-core/bats-core/")
+    (synopsis "Bash Automated Testing System")
+    (description
+     "Bats is a @acronym{TAP, Test Anything Protocol}-compliant testing
+framework for Bash.  It provides a simple way to verify that the UNIX programs
+you write behave as expected.  Bats is most useful when testing software written
+in Bash, but you can use it to test any UNIX program.")
+    (license expat)))
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 0ac1833487..5bd16ad7be 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -46,14 +46,14 @@
 (define-public fio
   (package
     (name "fio")
-    (version "3.20")
+    (version "3.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mwqafn81a9pxy2kw9rl4p3r2brhg2ckwrcwzy0q4gffxgn3k9c7"))))
+                "0np1scxqfpd6fcnnnfyn8xdsh6lc5pyq3vk1jm1zk7sa58fvccd4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
@@ -131,7 +131,7 @@ is to write a job file matching the I/O load one wants to simulate.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/intel/mpi-benchmarks.git")
+                    (url "https://github.com/intel/mpi-benchmarks")
                     (commit (string-append "IMB-v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -217,7 +217,7 @@ This can give a much better understanding of the command's performance.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/google/benchmark.git")
+                    (url "https://github.com/google/benchmark")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index a8ed2707ac..b191c8b4ae 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -1396,14 +1396,14 @@ the Human Protein Atlas project.")
 (define-public r-regioner
   (package
     (name "r-regioner")
-    (version "1.20.0")
+    (version "1.20.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "regioneR" version))
        (sha256
         (base32
-         "10i21gxv0n7lrflhj5ja672xjizy1i4y4iq3pmjgbf0dpy1lxsih"))))
+         "0bzjwzj5mvb49wgvs3gd3jfpm7s0zfkca763i65i7m994lgvz33c"))))
     (properties `((upstream-name . "regioneR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -1587,7 +1587,7 @@ Affymetrix (CEL files) and NimbleGen arrays (XYS files).")
        ("r-reshape2" ,r-reshape2)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
-    (home-page "http://github.com/jdstorey/qvalue")
+    (home-page "https://github.com/StoreyLab/qvalue")
     (synopsis "Q-value estimation for false discovery rate control")
     (description
      "This package takes a list of p-values resulting from the simultaneous
@@ -2934,7 +2934,7 @@ qPCR data, but could be used with other types as well.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cole-trapnell-lab/monocle3.git")
+             (url "https://github.com/cole-trapnell-lab/monocle3")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5119,14 +5119,14 @@ that arising from 16s metagenomic surveys.")
 (define-public r-wiggleplotr
   (package
     (name "r-wiggleplotr")
-    (version "1.12.0")
+    (version "1.12.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "wiggleplotr" version))
        (sha256
         (base32
-         "15l8f7ls2mwhsw68sr1k4r19hmdzjriibr5hpnfbanzj5x6yhdjq"))))
+         "1wknigh1md3w4h68caqlpq945maipdkpmw10hc2rlx4nbbpcnawp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -5781,14 +5781,14 @@ annotations.")
 (define-public r-rsubread
   (package
     (name "r-rsubread")
-    (version "2.2.2")
+    (version "2.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rsubread" version))
        (sha256
         (base32
-         "1wgilpaw70dwg0zilx5i1pmi4j8wri6wi2ha1d3bapfhlwc6igml"))))
+         "0yznfqgp5cbz68n3rrfvm752267da16kl538zdrb1g1aw9zdfqc6"))))
     (properties `((upstream-name . "Rsubread")))
     (build-system r-build-system)
     (inputs `(("zlib" ,zlib)))
@@ -6248,14 +6248,14 @@ sequential way to mimic the manual gating strategy.")
 (define-public r-cytoml
   (package
     (name "r-cytoml")
-    (version "2.0.0")
+    (version "2.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "CytoML" version))
        (sha256
         (base32
-         "0zpq2j4y9i5lls1kj2w4spl8qjp3076idsr2a2rjvy1fykzlp01q"))))
+         "174brv027mm90lydfg6hnhazwh8jy4vf6ial4hpsfalwa5jrz55n"))))
     (properties `((upstream-name . "CytoML")))
     (build-system r-build-system)
     (inputs
@@ -6286,6 +6286,7 @@ sequential way to mimic the manual gating strategy.")
        ("r-runit" ,r-runit)
        ("r-tibble" ,r-tibble)
        ("r-xml" ,r-xml)
+       ("r-xml2" ,r-xml2)
        ("r-yaml" ,r-yaml)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
@@ -6373,14 +6374,14 @@ delete entire rows with missing data.")
 (define-public r-depecher
   (package
     (name "r-depecher")
-    (version "1.4.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DepecheR" version))
        (sha256
         (base32
-         "0nmx04qybzf6nhfngmdxwpbbz9x32v34mbnpg8jq7a2cgchzsj9s"))))
+         "0dscfl6wxpl5538jzkrwisdwbr873d38rzd19vl6z5br71jvpv3v"))))
     (properties `((upstream-name . "DepecheR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6455,14 +6456,14 @@ genes in the gene-set that are ranked above the leading edge).")
 (define-public r-cicero
   (package
     (name "r-cicero")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "cicero" version))
        (sha256
         (base32
-         "0n78lf5hz6zzl550dbf4imis43pv91zicfff8y4lspckljhz9z75"))))
+         "0nf9yqg5krj26n4n82iyx3rsr84d46b17i9zfk35sh12l4xssbii"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -6482,6 +6483,7 @@ genes in the gene-set that are ranked above the leading edge).")
        ("r-plyr" ,r-plyr)
        ("r-reshape2" ,r-reshape2)
        ("r-s4vectors" ,r-s4vectors)
+       ("r-stringi" ,r-stringi)
        ("r-stringr" ,r-stringr)
        ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)
@@ -6507,7 +6509,7 @@ accessibility data.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cole-trapnell-lab/cicero-release.git")
+               (url "https://github.com/cole-trapnell-lab/cicero-release")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6528,7 +6530,7 @@ accessibility data.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/aertslab/cisTopic.git")
+               (url "https://github.com/aertslab/cisTopic")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6673,14 +6675,14 @@ metrics, with methods for objects produced by the @code{methylumi} and
 (define-public r-gdsfmt
   (package
     (name "r-gdsfmt")
-    (version "1.24.0")
+    (version "1.24.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "gdsfmt" version))
        (sha256
         (base32
-         "00hggma0i15w03xi9jr02v2593jbqkcxyfcvpp7mdzrshn99m9p6"))
+         "0ipf60wylbhvwk9q3mbnak0f1n6k7spfh90s1c1c0b47ryxsri67"))
        (modules '((guix build utils)))
        ;; Remove bundled sources of zlib, lz4, and xz.  Don't attempt to build
        ;; them and link with system libraries instead.
@@ -7046,14 +7048,14 @@ arrays based on fast wavelet-based functional models.")
 (define-public r-variancepartition
   (package
     (name "r-variancepartition")
-    (version "1.18.0")
+    (version "1.18.2")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "variancePartition" version))
        (sha256
         (base32
-         "1rn655qq7dshbk1dd41n7y2hfz8498jxd2j4rk7p8hrikd3s32dm"))))
+         "19bhkb8vd44m3nkznw075fx3y2p3a1bsazbhcfiqw9n4190k9bgv"))))
     (properties
      `((upstream-name . "variancePartition")))
     (build-system r-build-system)
@@ -7185,21 +7187,20 @@ using whole genome sequencing data.")
 (define-public r-activepathways
   (package
     (name "r-activepathways")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ActivePathways" version))
        (sha256
         (base32
-         "1xb0d1svmzw404pv8ja6wr4773k7x2lxkrzrayilvzqbfzj1wx20"))))
+         "1hxy760x141ykrpqdbfldq4ggj1svj3lsrpwi4rb2x7r4lna937l"))))
     (properties
      `((upstream-name . "ActivePathways")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-metap" ,r-metap)))
+       ("r-ggplot2" ,r-ggplot2)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://cran.r-project.org/web/packages/ActivePathways/")
@@ -8087,3 +8088,31 @@ metrics, such as the elbow method and Horn's parallel analysis, which has
 relevance for data reduction in single-cell RNA-seq (scRNA-seq) and high
 dimensional mass cytometry data.")
     (license license:gpl3)))
+
+(define-public r-rgreat
+  (package
+    (name "r-rgreat")
+    (version "1.20.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "rGREAT" version))
+       (sha256
+        (base32
+         "0n8dw9ibb2klsczcxvvinpi9l53w8cs436i0c8w2jmramayl593v"))))
+    (properties `((upstream-name . "rGREAT")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-genomicranges" ,r-genomicranges)
+       ("r-getoptlong" ,r-getoptlong)
+       ("r-iranges" ,r-iranges)
+       ("r-rcurl" ,r-rcurl)
+       ("r-rjson" ,r-rjson)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/jokergoo/rGREAT")
+    (synopsis "Client for GREAT analysis")
+    (description
+     "This package makes GREAT (Genomic Regions Enrichment of Annotations
+Tool) analysis automatic by constructing a HTTP POST request according to
+user's input and automatically retrieving results from GREAT web server.")
+    (license license:expat)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 95f8b16db3..681919df3d 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -17,6 +17,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@
   #:use-module (guix build-system ruby)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system trivial)
+  #:use-module (guix deprecation)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages algebra)
@@ -187,7 +189,7 @@ structure of the predicted RNA.")
               (method git-fetch)
               ;; BamM is not available on pypi.
               (uri (git-reference
-                    (url "https://github.com/Ecogenomics/BamM.git")
+                    (url "https://github.com/Ecogenomics/BamM")
                     (commit version)
                     (recursive? #t)))
               (file-name (git-file-name name version))
@@ -281,7 +283,7 @@ instance, it implements several methods to assess contig-wise read coverage.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pezmaster31/bamtools.git")
+                    (url "https://github.com/pezmaster31/bamtools")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -359,7 +361,7 @@ transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bedops/bedops.git")
+                    (url "https://github.com/bedops/bedops")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -482,7 +484,7 @@ BED, GFF/GTF, VCF.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/PacificBiosciences/pbbam.git")
+                    (url "https://github.com/PacificBiosciences/pbbam")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -538,7 +540,7 @@ Non-PacBio BAMs will cause exceptions to be thrown.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/PacificBiosciences/blasr_libcpp.git")
+                    (url "https://github.com/PacificBiosciences/blasr_libcpp")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -600,7 +602,7 @@ hdf and alignment.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/PacificBiosciences/blasr.git")
+                    (url "https://github.com/PacificBiosciences/blasr")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -691,7 +693,7 @@ provides the Ribotaper pipeline.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ratschlab/RiboDiff.git")
+             (url "https://github.com/ratschlab/RiboDiff")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -735,7 +737,7 @@ independently with transcriptional regulation.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lh3/bioawk.git")
+                    (url "https://github.com/lh3/bioawk")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -898,7 +900,7 @@ Python.")
        ;; Use GitHub as source because PyPI distribution does not contain
        ;; test data: https://github.com/biocore/biom-format/issues/693
        (uri (git-reference
-             (url "https://github.com/biocore/biom-format.git")
+             (url "https://github.com/biocore/biom-format")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -941,7 +943,9 @@ Python.")
        ("python-future" ,python-future)
        ("python-click" ,python-click)
        ("python-h5py" ,python-h5py)
-       ("python-pandas" ,python-pandas)))
+       ;; FIXME: Upgrade to pandas 1.0 when
+       ;; https://github.com/biocore/biom-format/issues/837 is resolved.
+       ("python-pandas" ,python-pandas-0.25)))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)
@@ -1323,15 +1327,15 @@ package provides command line tools using the Bio++ library.")
 (define-public blast+
   (package
     (name "blast+")
-    (version "2.7.1")
+    (version "2.10.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/"
+                    "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/"
                     version "/ncbi-blast-" version "+-src.tar.gz"))
               (sha256
                (base32
-                "1jlq0afxxgczpp35k6mxh8mn4jzq7vqcnaixk166sfj10wq8v9qh"))
+                "11kvrrl0mcwww6530r55hccpg3x3msmhr3051fwnjbq8rzg2j1qi"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1563,7 +1567,7 @@ errors at the end of reads.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/BenLangmead/bowtie2.git")
+                    (url "https://github.com/BenLangmead/bowtie2")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1779,7 +1783,7 @@ and more accurate.  BWA-MEM also has better performance than BWA-backtrack for
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pkerpedjiev/bwa-pssm.git")
+                    (url "https://github.com/pkerpedjiev/bwa-pssm")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1809,7 +1813,7 @@ well as many of the command line options.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brentp/bwa-meth.git")
+                    (url "https://github.com/brentp/bwa-meth")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1883,7 +1887,7 @@ multiple sequence alignments.")
               (method git-fetch)
               ;; Test data is missing on PyPi.
               (uri (git-reference
-                    (url "https://github.com/pysam-developers/pysam.git")
+                    (url "https://github.com/pysam-developers/pysam")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2032,7 +2036,7 @@ high-throughput sequencing data – with an emphasis on simplicity.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mhammell-laboratory/tetoolkit.git")
+                    (url "https://github.com/mhammell-laboratory/tetoolkit")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2149,7 +2153,7 @@ databases.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/YeoLab/clipper.git")
+                    (url "https://github.com/YeoLab/clipper")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2406,12 +2410,18 @@ interval trees with associated meta-data.  It is primarily used by the
     (name "python-deeptools")
     (version "3.4.3")
     (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "deepTools" version))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/deeptools/deepTools")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1azgjniss5ff6a90nicdjkxyjwqmi3gzfn09gra42hwlz19hipxb"))))
+                "0l09vyynz6s6w7fnyd94rpys4a6aja6kp4gli64pngdxdz3md1nl"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)))
     (propagated-inputs
      `(("python-matplotlib" ,python-matplotlib)
        ("python-numpy" ,python-numpy)
@@ -2421,7 +2431,7 @@ interval trees with associated meta-data.  It is primarily used by the
        ("python-pysam" ,python-pysam)
        ("python-scipy" ,python-scipy)
        ("python-deeptoolsintervals" ,python-deeptoolsintervals)
-       ("python-plotly" ,python-plotly)))
+       ("python-plotly" ,python-plotly-2.4.1)))
     (home-page "https://pypi.org/project/deepTools/")
     (synopsis "Useful tools for exploring deep sequencing data")
     (description "This package addresses the challenge of handling large amounts
@@ -2436,6 +2446,8 @@ annotations of the genome.")
     ;; remainder of the code is licensed under the MIT license.
     (license (list license:bsd-3 license:expat))))
 
+(define-deprecated deeptools python-deeptools)
+
 (define-public cutadapt
   (package
     (name "cutadapt")
@@ -2468,7 +2480,7 @@ other types of unwanted sequence from high-throughput sequencing reads.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dpryan79/libBigWig.git")
+                    (url "https://github.com/dpryan79/libBigWig")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2548,7 +2560,7 @@ accessing bigWig files.")
        (method git-fetch)
        ;; Source from GitHub so that tests are included.
        (uri (git-reference
-             (url "https://github.com/jeetsukumaran/DendroPy.git")
+             (url "https://github.com/jeetsukumaran/DendroPy")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2599,51 +2611,6 @@ trees (phylogenies) and characters.")
 with Python.")
     (license license:expat)))
 
-(define-public deeptools
-  (package
-    (name "deeptools")
-    (version "3.1.3")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/deeptools/deepTools.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1vggnf52g6q2vifdl4cyi7s2fnfqq0ky2zrkj5zv2qfzsc3p3siw"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         ;; This phase fails, but it's not needed.
-         (delete 'reset-gzip-timestamps))))
-    (inputs
-     `(("python-plotly" ,python-plotly)
-       ("python-scipy" ,python-scipy)
-       ("python-numpy" ,python-numpy)
-       ("python-numpydoc" ,python-numpydoc)
-       ("python-matplotlib" ,python-matplotlib)
-       ("python-pysam" ,python-pysam)
-       ("python-py2bit" ,python-py2bit)
-       ("python-pybigwig" ,python-pybigwig)))
-    (native-inputs
-     `(("python-mock" ,python-mock)   ;for tests
-       ("python-nose" ,python-nose)   ;for tests
-       ("python-pytz" ,python-pytz))) ;for tests
-    (home-page "https://github.com/deeptools/deepTools")
-    (synopsis "Tools for normalizing and visualizing deep-sequencing data")
-    (description
-     "DeepTools addresses the challenge of handling the large amounts of data
-that are now routinely generated from DNA sequencing centers.  To do so,
-deepTools contains useful modules to process the mapped reads data to create
-coverage files in standard bedGraph and bigWig file formats.  By doing so,
-deepTools allows the creation of normalized coverage files or the comparison
-between two files (for example, treatment and control).  Finally, using such
-normalized and standardized files, multiple visualizations can be created to
-identify enrichments with functional annotations of the genome.")
-    (license license:gpl3+)))
-
 (define-public delly
   (package
     (name "delly")
@@ -2651,7 +2618,7 @@ identify enrichments with functional annotations of the genome.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dellytools/delly.git")
+                    (url "https://github.com/dellytools/delly")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2698,7 +2665,7 @@ accurately delineate genomic rearrangements throughout the genome.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bbuchfink/diamond.git")
+                    (url "https://github.com/bbuchfink/diamond")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2733,7 +2700,7 @@ data and settings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/maaskola/discrover.git")
+             (url "https://github.com/maaskola/discrover")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2806,7 +2773,7 @@ of nucleic acid binding proteins.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DReichLab/EIG.git")
+             (url "https://github.com/DReichLab/EIG")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3050,16 +3017,16 @@ dynamic programming or a variety of heuristics.")
 (define-public express
   (package
     (name "express")
-    (version "1.5.1")
+    (version "1.5.3")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append
-                "http://bio.math.berkeley.edu/eXpress/downloads/express-"
-                version "/express-" version "-src.tgz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/adarob/eXpress")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "03rczxd0gjp2l1jxcmjfmf5j94j77zqyxa6x063zsc585nj40n0c"))))
+                "18nb22n7x820fzjngf4qgyb3mspqkw7xyk7v7s5ps6wfrd8qwscb"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
@@ -3076,6 +3043,12 @@ dynamic programming or a variety of heuristics.")
                (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/\\.\\./bamtools/lib")
                 (string-append (assoc-ref inputs "bamtools") "/lib"))
                (("libprotobuf.a") "libprotobuf.so"))
+             #t))
+         (add-after 'unpack 'remove-update-check
+           (lambda _
+             (substitute* "src/main.cpp"
+               (("#include \"update_check.h\"") "")
+               (("check_version\\(PACKAGE_VERSION\\);") ""))
              #t)))))
     (inputs
      `(("boost" ,boost)
@@ -3099,7 +3072,7 @@ ChIP-Seq, and analysis of metagenomic data.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/dparks1134/ExpressBetaDiversity.git")
+                   (url "https://github.com/dparks1134/ExpressBetaDiversity")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
@@ -3226,7 +3199,7 @@ results.  The FASTX-Toolkit tools perform some of these preprocessing tasks.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/seqan/flexbar.git")
+                    (url "https://github.com/seqan/flexbar")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3369,7 +3342,7 @@ genes in incomplete assemblies or complete genomes.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ctSkennerton/fxtract.git")
+               (url "https://github.com/ctSkennerton/fxtract")
                (commit version)))
          (file-name (git-file-name name version))
          (sha256
@@ -3405,7 +3378,7 @@ genes in incomplete assemblies or complete genomes.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ctSkennerton/util.git")
+                   (url "https://github.com/ctSkennerton/util")
                    (commit util-commit)))
              (file-name (string-append
                          "ctstennerton-util-" util-commit "-checkout"))
@@ -3432,7 +3405,7 @@ comment or quality sections.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/xiangzhou/GEMMA.git")
+                    (url "https://github.com/xiangzhou/GEMMA")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3492,7 +3465,7 @@ association studies (GWAS).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/nboley/grit.git")
+                    (url "https://github.com/nboley/grit")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3717,7 +3690,7 @@ from high-throughput sequencing assays.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/samtools/htsjdk.git")
+                    (url "https://github.com/samtools/htsjdk")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3767,7 +3740,7 @@ manipulating HTS data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/samtools/htsjdk.git")
+                    (url "https://github.com/samtools/htsjdk")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3811,7 +3784,7 @@ manipulating HTS data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/samtools/htsjdk.git")
+                    (url "https://github.com/samtools/htsjdk")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3839,7 +3812,7 @@ manipulating HTS data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/broadinstitute/picard.git")
+                    (url "https://github.com/broadinstitute/picard")
                     (commit version)))
               (file-name (string-append "java-picard-" version "-checkout"))
               (sha256
@@ -3918,7 +3891,7 @@ VCF.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/broadinstitute/picard.git")
+                    (url "https://github.com/broadinstitute/picard")
                     (commit version)))
               (file-name (string-append "java-picard-" version "-checkout"))
               (sha256
@@ -4008,7 +3981,7 @@ VCF.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/broadinstitute/picard.git")
+                    (url "https://github.com/broadinstitute/picard")
                     (commit version)))
               (file-name (string-append "java-picard-" version "-checkout"))
               (sha256
@@ -4205,7 +4178,7 @@ The main functions of FastQC are:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/OpenGene/fastp.git")
+             (url "https://github.com/OpenGene/fastp")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4285,7 +4258,7 @@ data.  It also provides the @command{bgzip}, @command{htsfile}, and
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/nboley/idr.git")
+                    (url "https://github.com/nboley/idr")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -4376,7 +4349,7 @@ command, or queried for specific k-mers with @code{jellyfish query}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dib-lab/khmer.git")
+             (url "https://github.com/dib-lab/khmer")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4484,7 +4457,7 @@ experiments.")
               ;; The PyPi tarball does not contain tests.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/taoliu/MACS.git")
+                    (url "https://github.com/taoliu/MACS")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4607,7 +4580,7 @@ sequences).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/marbl/mash.git")
+                    (url "https://github.com/marbl/mash")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4746,7 +4719,7 @@ probabilistic distances of genome abundance and tetranucleotide frequency.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ctSkennerton/minced.git")
+                    (url "https://github.com/ctSkennerton/minced")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -4888,7 +4861,7 @@ program for nucleotide and protein sequences.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/tjunier/newick_utils.git")
+                      (url "https://github.com/tjunier/newick_utils")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -5026,7 +4999,7 @@ the phenotype as it models the data.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/PacificBiosciences/cDNA_primer.git")
+                      (url "https://github.com/PacificBiosciences/cDNA_primer")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -5247,7 +5220,7 @@ different command-line tools:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hyattpd/Prodigal.git")
+                    (url "https://github.com/hyattpd/Prodigal")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5396,7 +5369,7 @@ extremely diverse sets of genomes.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stamatak/standard-RAxML.git")
+             (url "https://github.com/stamatak/standard-RAxML")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5437,7 +5410,7 @@ phylogenies.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/deweylab/RSEM.git")
+             (url "https://github.com/deweylab/RSEM")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1jlq11d1p8qp64w75yj8cnbbd1a93viq10pzsbwal7vdn8fg13j1"))
@@ -5726,7 +5699,7 @@ viewer.")
                 ;; There are no release tarballs nor tags.
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/wanpinglee/MOSAIK.git")
+                      (url "https://github.com/wanpinglee/MOSAIK")
                       (commit commit)))
                 (file-name (string-append name "-" version))
                 (sha256
@@ -5772,7 +5745,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ncbi/ngs.git")
+                    (url "https://github.com/ncbi/ngs")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5838,7 +5811,7 @@ simultaneously.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ncbi/ncbi-vdb.git")
+                    (url "https://github.com/ncbi/ncbi-vdb")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -6010,7 +5983,7 @@ subsequent visualization, annotation and storage of results.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/chrchang/plink-ng.git")
+             (url "https://github.com/chrchang/plink-ng")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6049,7 +6022,7 @@ subsequent visualization, annotation and storage of results.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/smithlabcode/smithlab_cpp.git")
+                      (url "https://github.com/smithlabcode/smithlab_cpp")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -6198,7 +6171,7 @@ sequence itself can be retrieved from these databases.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ncbi/sra-tools.git")
+             (url "https://github.com/ncbi/sra-tools")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6408,7 +6381,7 @@ is one that takes arguments.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lh3/seqtk.git")
+                    (url "https://github.com/lh3/seqtk")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6444,7 +6417,7 @@ optionally compressed by gzip.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/amplab/snap.git")
+                    (url "https://github.com/amplab/snap")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6486,7 +6459,7 @@ of these reads to align data quickly through a hash-based indexing scheme.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/biocore/sortmerna.git")
+             (url "https://github.com/biocore/sortmerna")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6532,7 +6505,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alexdobin/STAR.git")
+                    (url "https://github.com/alexdobin/STAR")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -6760,7 +6733,7 @@ Cuffdiff or Ballgown programs.")
               ;; The Pypi version does not include tests.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fhcrc/taxtastic.git")
+                    (url "https://github.com/fhcrc/taxtastic")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6885,7 +6858,7 @@ sequence.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hms-dbmi/scde.git")
+                    (url "https://github.com/hms-dbmi/scde")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7013,14 +6986,14 @@ distribution.")
 (define-public r-dexseq
   (package
     (name "r-dexseq")
-    (version "1.34.0")
+    (version "1.34.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DEXSeq" version))
        (sha256
         (base32
-         "1inyxb89hd5bn0sl7a9qbv9d1g40z4v1s9qwxkcsx5c79fl04n1h"))))
+         "1m03awaw06mfv5gszq23k5apsqqzjqa5rcwp20y4xbpl7bywpsyl"))))
     (properties `((upstream-name . "DEXSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7331,7 +7304,7 @@ annotation infrastructure.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/torognes/vsearch.git")
+             (url "https://github.com/torognes/vsearch")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -7532,13 +7505,13 @@ BLAST, KEGG, GenBank, MEDLINE and GO.")
 (define-public r-biocviews
   (package
     (name "r-biocviews")
-    (version "1.56.0")
+    (version "1.56.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biocViews" version))
               (sha256
                (base32
-                "1h4cmfbff79v9xrh271dp3rv0877ris06lmkvc39kqzj7yjsh7c2"))))
+                "0zcx8gha3x3jc0ra6ii6wwq2vfsmffrrnilknbq8h5xjrl55m6ci"))))
     (properties
      `((upstream-name . "biocViews")))
     (build-system r-build-system)
@@ -7716,13 +7689,13 @@ ID and species.  It is used by functions in the GenomeInfoDb package.")
 (define-public r-genomeinfodb
   (package
     (name "r-genomeinfodb")
-    (version "1.24.0")
+    (version "1.24.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomeInfoDb" version))
               (sha256
                (base32
-                "0ab92nq7lvhvhgp512qhiiphpby0b17c666qska6p8a636zzmqiv"))))
+                "1cqs53p4m5q1dr59war72bccphy01ilw4xra24fmngrv4x32rznd"))))
     (properties
      `((upstream-name . "GenomeInfoDb")))
     (build-system r-build-system)
@@ -7921,13 +7894,13 @@ on Bioconductor or which replace R functions.")
 (define-public r-annotationdbi
   (package
     (name "r-annotationdbi")
-    (version "1.50.0")
+    (version "1.50.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "AnnotationDbi" version))
               (sha256
                (base32
-                "10gplxal0qphcn29azv0i6hiim9q45lmhzvhhhsnwfhwpgja7p05"))))
+                "00pd8lsdppxlmx0l65phw0jhsm0qkwjc4wsdxpvgc31iiz9yslbj"))))
     (properties
      `((upstream-name . "AnnotationDbi")))
     (build-system r-build-system)
@@ -7950,13 +7923,13 @@ annotation data packages using SQLite data storage.")
 (define-public r-biomart
   (package
     (name "r-biomart")
-    (version "2.44.0")
+    (version "2.44.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "biomaRt" version))
               (sha256
                (base32
-                "0ag26q9283p9mfz4zx8qnx1w7b7ilmsb8wyx737z9cqy9a0i57wj"))))
+                "0np4nh3gj60mgb6312z7x0z9fg5bhrhw872sp3dzgmqc8q8b84iz"))))
     (properties
      `((upstream-name . "biomaRt")))
     (build-system r-build-system)
@@ -8119,13 +8092,13 @@ array-like objects like @code{DataFrame} objects (typically with Rle columns),
 (define-public r-summarizedexperiment
   (package
     (name "r-summarizedexperiment")
-    (version "1.18.1")
+    (version "1.18.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "SummarizedExperiment" version))
               (sha256
                (base32
-                "07rc79k5dp0dnf4dvsxif995aa9cgfkf13yf84qnwl64k9pf3c2c"))))
+                "1raw5ycigr6gjgzn3kx3jls5hzww10fhnwd8c17c20hmhirf13rw"))))
     (properties
      `((upstream-name . "SummarizedExperiment")))
     (build-system r-build-system)
@@ -8232,13 +8205,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.40.0")
+    (version "1.40.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "09ffsflk2yhhj9ivm028y3qdkvv8idgxpm4il3y9rym7shc8b3f8"))))
+                "0zm7q957g952qyfqmvf27sldsnq6sqd0wlgnqzvmxayg9pxh0l0z"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -8442,7 +8415,7 @@ reference point and sorted by a user defined feature.")
        ("r-seqpattern" ,r-seqpattern)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
-    (home-page "http://bioinformatics.mdc-berlin.de/genomation/")
+    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
     (synopsis "Summary, annotation and visualization of genomic data")
     (description
      "This package provides a package for summary and annotation of genomic
@@ -8475,7 +8448,7 @@ genomic intervals.  In addition, it can use BAM or BigWig files as input.")
     (arguments `(#:substitutable? #f))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
-    (home-page "http://bioinformatics.mdc-berlin.de/genomation/")
+    (home-page "https://bioinformatics.mdc-berlin.de/genomation/")
     (synopsis "Experimental data for use with the genomation package")
     (description
      "This package contains experimental genetic data for use with the
@@ -8559,16 +8532,12 @@ two-dimensional genome scans.")
 (define-public r-qtl2
   (package
     (name "r-qtl2")
-    (version "0.20")
+    (version "0.22-11")
     (source (origin
-      (method git-fetch)
-      ;; Not yet available in cran.
-      (uri (git-reference
-             (url "https://github.com/rqtl/qtl2.git")
-             (commit version)))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32 "0l1asr28q25jzbwrbg5490962sg3y4sjrd0qf09p78ws1aq8vfs0"))))
+              (method url-fetch)
+              (uri (cran-uri "qtl2" version))
+              (sha256
+               (base32 "0dfdzjylqzc92dcszawc8cyinxccjm3p36v9vcq9ma818pqcanmr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)
@@ -8578,11 +8547,12 @@ two-dimensional genome scans.")
        ("r-rsqlite" ,r-rsqlite)
        ("r-yaml" ,r-yaml)))
     (home-page "https://kbroman.org/qtl2/")
-    (synopsis
-     "QTL analysis software for high-dimensional data and complex cross designs")
+    (synopsis "Quantitative Trait Locus Mapping in Experimental Crosses")
     (description
-     "R/qtl2 (aka qtl2) is a reimplementation of the QTL analysis software
-R/qtl, to better handle high-dimensional data and complex cross designs.")
+     "This package provides a set of tools to perform @dfn{Quantitative Trait
+Locus} (QTL) analysis in experimental crosses.  It is a reimplementation of the
+@code{R/qtl} package to better handle high-dimensional data and complex cross
+designs.  Broman et al. (2018) <doi:10.1534/genetics.118.301595>.")
     (license license:gpl3)))
 
 (define-public r-zlibbioc
@@ -8839,7 +8809,7 @@ in SNV base substitution data.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ManuSetty/ChIPKernels.git")
+               (url "https://github.com/ManuSetty/ChIPKernels")
                (commit commit)))
          (file-name (string-append name "-" version))
          (sha256
@@ -8873,7 +8843,7 @@ Sequences.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ManuSetty/SeqGL.git")
+             (url "https://github.com/ManuSetty/SeqGL")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -8923,13 +8893,13 @@ of gene-level counts.")
 (define-public r-rhdf5
   (package
     (name "r-rhdf5")
-    (version "2.32.0")
+    (version "2.32.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "rhdf5" version))
               (sha256
                (base32
-                "097znwl95y2vd6asyqxs62m7binwxqmna7ss0302yl3b0s72skcy"))))
+                "1v6ygi0avh3gmaj2ld2nr7vww4ipw39b5kqci9w27i3ja985lb8j"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rhdf5lib" ,r-rhdf5lib)))
@@ -9049,7 +9019,7 @@ tools for sequence analysis into a seamless whole.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/arq5x/bits.git")
+                      (url "https://github.com/arq5x/bits")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -9095,7 +9065,7 @@ intervals (e.g. genes, sequence alignments).")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/smithlabcode/piranha.git")
+                      (url "https://github.com/smithlabcode/piranha")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -9134,7 +9104,7 @@ intervals (e.g. genes, sequence alignments).")
              (origin
                (method git-fetch)
                (uri (git-reference
-                     (url "https://github.com/smithlabcode/smithlab_cpp.git")
+                     (url "https://github.com/smithlabcode/smithlab_cpp")
                      (commit commit)))
                (file-name (string-append "smithlab_cpp-" commit "-checkout"))
                (sha256
@@ -9187,7 +9157,7 @@ group or two ChIP groups run under different conditions.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ekg/filevercmp.git")
+                      (url "https://github.com/ekg/filevercmp")
                       (commit commit)))
                 (file-name (git-file-name name commit))
                 (sha256
@@ -9264,7 +9234,7 @@ common bioinformatics tools.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vatlab/varianttools.git")
+             (url "https://github.com/vatlab/varianttools")
              ;; There is no tag corresponding to version 3.1.2
              (commit "813ae4a90d25b69abc8a40f4f70441fe09015249")))
        (file-name (git-file-name name version))
@@ -10840,14 +10810,14 @@ provided.")
 (define-public r-hdf5array
   (package
     (name "r-hdf5array")
-    (version "1.16.0")
+    (version "1.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "HDF5Array" version))
        (sha256
         (base32
-         "1g848s0qc6i4ipd7y2s5pk8k1xggk2kfy0gnr8wjjs2gq3914aw4"))))
+         "01767v90nl0499jcicpxngbbs0af5p9c5aasi5va01w3v5bnqddn"))))
     (properties `((upstream-name . "HDF5Array")))
     (build-system r-build-system)
     (inputs
@@ -10870,14 +10840,14 @@ block processing.")
 (define-public r-rhdf5lib
   (package
     (name "r-rhdf5lib")
-    (version "1.10.0")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Rhdf5lib" version))
        (sha256
         (base32
-         "09ylwyk6a8sdrmi1mx7vpycpykqlqylmwa973g6jrcmk0h0qfa4w"))
+         "0f45sqrvzj6x4mckalyp8366hm8v0rrmzklx3xd4gs6l2wallcn9"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -10897,14 +10867,7 @@ block processing.")
              (for-each delete-file '("configure" "configure.ac"))
              ;; Do not make other packages link with the proprietary libsz.
              (substitute* "R/zzz.R"
-               (("'\"%s/libhdf5.a\" \"%s/libsz.a\" -lz'")
-                "'\"%s/libhdf5.a\" \"%s/libhdf5.a\" -lz'")
-               (("'\"%s/libhdf5_cpp.a\" \"%s/libhdf5.a\" \"%s/libsz.a\" -lz'")
-                "'\"%s/libhdf5_cpp.a\" \"%s/libhdf5.a\" \"%s/libhdf5.a\" -lz'")
-               (("'%s/libhdf5_hl.a %s/libhdf5.a %s/libsz.a -lz'")
-                "'%s/libhdf5_hl.a %s/libhdf5.a %s/libhdf5.a -lz'")
-               (("'%s/libhdf5_hl_cpp.a %s/libhdf5_hl.a %s/libhdf5_cpp.a %s/libhdf5.a %s/libsz.a -lz'")
-                "'%s/libhdf5_hl_cpp.a %s/libhdf5_hl.a %s/libhdf5_cpp.a %s/libhdf5.a %s/libhdf5.a -lz'"))
+               ((" \"%s/libsz.a\"") ""))
              (with-directory-excursion "src"
                (invoke "tar" "xvf" (assoc-ref inputs "hdf5-source"))
                (rename-file (string-append "hdf5-" ,(package-version hdf5-1.10))
@@ -11013,13 +10976,13 @@ libraries.")
 (define-public r-scater
   (package
     (name "r-scater")
-    (version "1.16.1")
+    (version "1.16.2")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "scater" version))
               (sha256
                (base32
-                "0pi4mpc3lvskj5biyhc9cskcnz9q2wjmfrz7xdnx8qqd8vpy84g3"))))
+                "1pa5wvgjb30rw1vsjwbnn07ss3sc5n8ck5d7khdby4r2s9177s33"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-beachmat" ,r-beachmat)
@@ -11093,14 +11056,14 @@ variable and significantly correlated genes.")
 (define-public r-delayedmatrixstats
   (package
     (name "r-delayedmatrixstats")
-    (version "1.10.0")
+    (version "1.10.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DelayedMatrixStats" version))
        (sha256
         (base32
-         "0i6gw8058gw9yajya3w9qq6l3p634fq9sv8dh8ifigxz0k9b98r6"))))
+         "046sam0rz42ph0m7jz7v3bck7d3h2mp45gzywh5dvc1qkjq6fdxx"))))
     (properties
      `((upstream-name . "DelayedMatrixStats")))
     (build-system r-build-system)
@@ -11164,7 +11127,7 @@ Maximum Parsimony, distance methods and Hadamard conjugation.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rajewsky-lab/dropbead.git")
+               (url "https://github.com/rajewsky-lab/dropbead")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11194,7 +11157,7 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lomereiter/htslib.git")
+               (url "https://github.com/lomereiter/htslib")
                (commit commit)))
          (file-name (string-append "htslib-" version "-checkout"))
          (sha256
@@ -11213,7 +11176,7 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lomereiter/sambamba.git")
+             (url "https://github.com/lomereiter/sambamba")
              (commit (string-append "v" version))))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
@@ -11262,7 +11225,7 @@ droplet sequencing.  It has been particularly tailored for Drop-seq.")
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/biod/BioD.git")
+                   (url "https://github.com/biod/BioD")
                    (commit commit)))
              (file-name (string-append "biod-"
                                        (string-take commit 9)
@@ -11289,7 +11252,7 @@ sort, markdup, and depth.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/KlugerLab/Ritornello.git")
+                    (url "https://github.com/KlugerLab/Ritornello")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -11335,7 +11298,7 @@ with narrow binding events such as transcription factor ChIP-seq.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FelixKrueger/TrimGalore.git")
+             (url "https://github.com/FelixKrueger/TrimGalore")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11550,7 +11513,7 @@ applications for tackling some common problems in a user-friendly way.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/3DGenomes/TADbit.git")
+                    (url "https://github.com/3DGenomes/TADbit")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -11612,7 +11575,7 @@ models.  TADbit is complemented by TADkit for visualizing 3D models.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ENCODE-DCC/kentUtils.git")
+             (url "https://github.com/ENCODE-DCC/kentUtils")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11728,7 +11691,7 @@ browser.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/aboyle/F-seq.git")
+                      (url "https://github.com/aboyle/F-seq")
                       (commit commit)))
                 (file-name (string-append name "-" version))
                 (sha256
@@ -11786,7 +11749,7 @@ Browser.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FelixKrueger/Bismark.git")
+             (url "https://github.com/FelixKrueger/Bismark")
              (commit version)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
@@ -11938,7 +11901,7 @@ using nucleotide or amino-acid sequence data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pachterlab/kallisto.git")
+                    (url "https://github.com/pachterlab/kallisto")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -11987,7 +11950,7 @@ accurate as existing quantification tools.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Kingsford-Group/libgff.git")
+                    (url "https://github.com/Kingsford-Group/libgff")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -12010,7 +11973,7 @@ dependency like SeqAn.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/kingsfordgroup/sailfish.git")
+                    (url "https://github.com/kingsfordgroup/sailfish")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -12125,7 +12088,7 @@ dependency like SeqAn.")
        ("rapmap" ,(origin
                     (method git-fetch)
                     (uri (git-reference
-                          (url "https://github.com/COMBINE-lab/RapMap.git")
+                          (url "https://github.com/COMBINE-lab/RapMap")
                           (commit (string-append "sf-v" version))))
                     (file-name (string-append "rapmap-sf-v" version "-checkout"))
                     (sha256
@@ -12160,7 +12123,7 @@ file(s) containing your reads.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/COMBINE-lab/staden-io_lib.git")
+                    (url "https://github.com/COMBINE-lab/staden-io_lib")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -12201,7 +12164,7 @@ The following file formats are supported:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/COMBINE-lab/salmon.git")
+                    (url "https://github.com/COMBINE-lab/salmon")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -12314,7 +12277,7 @@ The following file formats are supported:
        ("rapmap" ,(origin
                     (method git-fetch)
                     (uri (git-reference
-                          (url "https://github.com/COMBINE-lab/RapMap.git")
+                          (url "https://github.com/COMBINE-lab/RapMap")
                           (commit (string-append "salmon-v" version))))
                     (file-name (string-append "rapmap-salmon-v" version "-checkout"))
                     (sha256
@@ -12347,7 +12310,7 @@ variational inference.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/linnarsson-lab/loompy.git")
+                    (url "https://github.com/linnarsson-lab/loompy")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -12390,7 +12353,7 @@ single-cell RNA-seq data.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/cmzmasek/forester.git")
+                      (url "https://github.com/cmzmasek/forester")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -12596,7 +12559,7 @@ reading, writing, and exporting phylogenetic trees.")
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://biojava.org")
+    (home-page "https://biojava.org")
     (synopsis "Core libraries of Java framework for processing biological data")
     (description "BioJava is a project dedicated to providing a Java framework
 for processing biological data.  It provides analytical and statistical
@@ -12639,7 +12602,7 @@ This package provides the core libraries.")
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://biojava.org")
+    (home-page "https://biojava.org")
     (synopsis "Biojava interface to the forester phylogenomics library")
     (description "The phylo module provides a biojava interface layer to the
 forester phylogenomics library for constructing phylogenetic trees.")))
@@ -12676,7 +12639,7 @@ forester phylogenomics library for constructing phylogenetic trees.")))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://biojava.org")
+    (home-page "https://biojava.org")
     (synopsis "Biojava API for genetic sequence alignment")
     (description "The alignment module of BioJava provides an API that
 contains
@@ -12733,7 +12696,7 @@ contains
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://biojava.org")
+    (home-page "https://biojava.org")
     (synopsis "Biojava interface to the forester phylogenomics library")
     (description "The phylo module provides a biojava interface layer to the
 forester phylogenomics library for constructing phylogenetic trees.")))
@@ -12770,7 +12733,7 @@ forester phylogenomics library for constructing phylogenetic trees.")))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
-    (home-page "http://biojava.org")
+    (home-page "https://biojava.org")
     (synopsis "Biojava API for genetic sequence alignment")
     (description "The alignment module of BioJava provides an API that
 contains
@@ -12982,7 +12945,7 @@ once.  This package provides tools to perform Drop-seq analyses.")
        ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)
        ("python-wrapper" ,python-wrapper)
        ("python-pyyaml" ,python-pyyaml)))
-    (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for RNA sequencing experiments")
     (description "PiGX RNAseq is an analysis pipeline for preprocessing and
 reporting for RNA sequencing experiments.  It is easy to use and produces high
@@ -13051,7 +13014,7 @@ expression report comparing samples in an easily configurable manner.")
        ("kentutils" ,kentutils)))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
-    (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for ChIP sequencing experiments")
     (description "PiGX ChIPseq is an analysis pipeline for preprocessing, peak
 calling and reporting for ChIP sequencing experiments.  It is easy to use and
@@ -13113,7 +13076,7 @@ in an easily configurable manner.")
        ("trim-galore" ,trim-galore)
        ("cutadapt" ,cutadapt)
        ("samtools" ,samtools)))
-    (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Bisulfite sequencing pipeline from fastq to methylation reports")
     (description "PiGx BSseq is a data processing pipeline for raw fastq read
 data of bisulfite experiments; it produces reports on aggregate methylation
@@ -13177,7 +13140,7 @@ methylation and segmentation.")
        ("r-singlecellexperiment" ,r-singlecellexperiment)
        ("r-stringr" ,r-stringr)
        ("r-yaml" ,r-yaml)))
-    (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipeline for single-cell RNA sequencing experiments")
     (description "PiGX scRNAseq is an analysis pipeline for preprocessing and
 quality control for single cell RNA sequencing experiments.  The inputs are
@@ -13206,7 +13169,7 @@ based methods.")
        ("pigx-chipseq" ,pigx-chipseq)
        ("pigx-rnaseq" ,pigx-rnaseq)
        ("pigx-scrnaseq" ,pigx-scrnaseq)))
-    (home-page "http://bioinformatics.mdc-berlin.de/pigx/")
+    (home-page "https://bioinformatics.mdc-berlin.de/pigx/")
     (synopsis "Analysis pipelines for genomics")
     (description "PiGx is a collection of genomics pipelines.  It includes the
 following pipelines:
@@ -13230,7 +13193,7 @@ HTML reports with interesting findings about your samples.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jsh58/Genrich.git")
+                    (url "https://github.com/jsh58/Genrich")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -13265,7 +13228,7 @@ enrichment.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/splatlab/mantis.git")
+                      (url "https://github.com/splatlab/mantis")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -13332,7 +13295,7 @@ rate speciation and extinction.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/pervouchine/sjcount-full.git")
+                      (url "https://github.com/pervouchine/sjcount-full")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -13437,14 +13400,14 @@ cases include:
    (name "miniasm")
    (version "0.3")
    (source (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://github.com/lh3/miniasm/archive/v"
-                  version ".tar.gz"))
-            (file-name (string-append name "-" version ".tar.gz"))
+            (method git-fetch)
+            (uri (git-reference
+                   (url "https://github.com/lh3/miniasm")
+                   (commit (string-append "v" version))))
+            (file-name (git-file-name name version))
             (sha256
-               (base32
-                "0g89pa98dvh34idv7w1zv12bsbyr3a11c4qb1cdcz68gyda88s4v"))))
+             (base32
+              "04dv5wv8bhsw1imxwyd438bnn9kby7svp44nbcz8lsadzjjci5gs"))))
    (build-system gnu-build-system)
    (inputs
     `(("zlib" ,zlib)))
@@ -13457,7 +13420,8 @@ cases include:
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
               (install-file "miniasm" bin)
-              (install-file "minidot" bin)))))))
+              (install-file "minidot" bin)
+              #t))))))
    (home-page "https://github.com/lh3/miniasm")
    (synopsis "Ultrafast de novo assembly for long noisy reads")
    (description "Miniasm is a very fast OLC-based de novo assembler for noisy
@@ -13476,7 +13440,7 @@ Thus the per-base error rate is similar to the raw input reads.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/BIMSBbioinfo/ciRcus.git")
+             (url "https://github.com/BIMSBbioinfo/ciRcus")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -13522,7 +13486,7 @@ can be calculated, and a number of descriptive plots easily generated.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gpertea/gffread.git")
+               (url "https://github.com/gpertea/gffread")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13556,7 +13520,7 @@ can be calculated, and a number of descriptive plots easily generated.")
              (origin
                (method git-fetch)
                (uri (git-reference
-                     (url "https://github.com/gpertea/gclib.git")
+                     (url "https://github.com/gpertea/gclib")
                      (commit commit)))
                (file-name (git-file-name "gclib" version))
                (sha256
@@ -13583,7 +13547,7 @@ conversions, region filtering, FASTA sequence extraction and more.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/marvin-jens/find_circ.git")
+               (url "https://github.com/marvin-jens/find_circ")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13863,7 +13827,7 @@ bound.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/4dn-dcic/pairix.git")
+             (url "https://github.com/4dn-dcic/pairix")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13962,7 +13926,7 @@ such as Hi-C contact matrices.")
        ;; Version 12 is not available on pypi.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/deeptools/HiCMatrix.git")
+             (url "https://github.com/deeptools/HiCMatrix")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14002,7 +13966,7 @@ the HiCExplorer and pyGenomeTracks packages.")
        ;; The latest version is not available on Pypi.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/deeptools/HiCExplorer.git")
+             (url "https://github.com/deeptools/HiCExplorer")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14151,7 +14115,7 @@ sequencing data.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/renozao/xbioc.git")
+                      (url "https://github.com/renozao/xbioc")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -14184,7 +14148,7 @@ provided by Bioconductor packages.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/shenorrLab/csSAM.git")
+                      (url "https://github.com/shenorrLab/csSAM")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -14215,7 +14179,7 @@ SAM.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/shenorrLab/bseqsc.git")
+                      (url "https://github.com/shenorrLab/bseqsc")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -14263,7 +14227,7 @@ and intra-cell population structure.\" Baron et al. Cell Systems (2016)
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rrwick/Porechop.git")
+               (url "https://github.com/rrwick/Porechop")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14294,7 +14258,7 @@ Barcoding Kit or Rapid Barcoding Kit.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/arq5x/poretools.git")
+               (url "https://github.com/arq5x/poretools")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14355,7 +14319,7 @@ absolute GSEA.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mahmoudibrahim/JAMM.git")
+             (url "https://github.com/mahmoudibrahim/JAMM")
              (commit (string-append "JAMMv" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14555,7 +14519,7 @@ datasets.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rrwick/Filtlong.git")
+               (url "https://github.com/rrwick/Filtlong")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14616,7 +14580,7 @@ choosing which reads pass the filter.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jts/nanopolish.git")
+               (url "https://github.com/jts/nanopolish")
                (commit commit)
                (recursive? #t)))
          (file-name (git-file-name name version))
@@ -14690,7 +14654,7 @@ polymorphisms) and indels with respect to a reference genome and more.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/etal/cnvkit.git")
+             (url "https://github.com/etal/cnvkit")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14726,7 +14690,7 @@ Torrent.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/KlugerLab/pyFIt-SNE.git")
+             (url "https://github.com/KlugerLab/pyFIt-SNE")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14989,7 +14953,7 @@ tools which build on STAR, Arriba does not require to reduce the
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/MikkelSchubert/adapterremoval.git")
+             (url "https://github.com/MikkelSchubert/adapterremoval")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15028,7 +14992,7 @@ sequence for paired-ended data, for which this information is not available.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/matsen/pplacer.git")
+               (url "https://github.com/matsen/pplacer")
                (commit (string-append "v" version))))
          (file-name (git-file-name name version))
          (sha256
@@ -15250,7 +15214,7 @@ on the needs of the user.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ParkerLab/ataqv.git")
+             (url "https://github.com/ParkerLab/ataqv")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15291,7 +15255,7 @@ might be caused by ATAC-seq library prep or sequencing.  The main program,
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kcha/psiplot.git")
+             (url "https://github.com/kcha/psiplot")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15322,7 +15286,7 @@ are generated using @code{ggplot2}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nanoporetech/ont_fast5_api.git")
+             (url "https://github.com/nanoporetech/ont_fast5_api")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15353,7 +15317,7 @@ and reflect the fast5 file schema, and tools to convert between
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/phoenixding/tbsp.git")
+               (url "https://github.com/phoenixding/tbsp")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15665,7 +15629,7 @@ manipulations on VCF files.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ekg/freebayes.git")
+                      (url "https://github.com/ekg/freebayes")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -15783,7 +15747,7 @@ length of a short-read sequencing alignment.")
     (source (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/GregoryFaust/samblaster.git")
+            (url "https://github.com/GregoryFaust/samblaster")
             (commit (string-append "v." version))))
       (file-name (git-file-name name version))
       (sha256
@@ -15820,7 +15784,7 @@ pairs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/velocyto-team/velocyto.R.git")
+               (url "https://github.com/velocyto-team/velocyto.R")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15861,7 +15825,7 @@ patterns.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dpryan79/MethylDackel.git")
+                    (url "https://github.com/dpryan79/MethylDackel")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -15909,7 +15873,7 @@ containing the reference genome as well.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/daler/gffutils.git")
+               (url "https://github.com/daler/gffutils")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index 52160b9025..9cf8e2eb40 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,16 +65,15 @@
 (define-public transmission
   (package
     (name "transmission")
-    (version "2.94")
+    (version "3.00")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://github.com/transmission/transmission-releases/raw/"
-                    "master/transmission-" version ".tar.xz"))
-              (patches (search-patches "transmission-CVE-2018-10756.patch"))
+              (uri (string-append "https://github.com/transmission/transmission"
+                                  "/releases/download/" version "/transmission-"
+                                  version ".tar.xz"))
               (sha256
                (base32
-                "0zbbj7rlm6m7vb64x68a64cwmijhsrwx9l63hbwqs7zr9742qi1m"))))
+                "1wjmn96zrvmk8j1yz2ysmqd7a2x6ilvnwwapcvfzgxs2wwpnai4i"))))
     (build-system glib-or-gtk-build-system)
     (outputs '("out"                      ; library and command-line interface
                "gui"))                    ; graphical user interface
@@ -90,8 +89,7 @@
                    (gui (assoc-ref outputs "gui")))
                (mkdir-p (string-append gui "/bin"))
                (rename-file (string-append out "/bin/transmission-gtk")
-                            (string-append gui
-                                           "/bin/transmission-gtk"))
+                            (string-append gui "/bin/transmission-gtk"))
 
                ;; Move the '.desktop' and icon files as well.
                (mkdir (string-append gui "/share"))
@@ -183,38 +181,36 @@ XML-RPC over SCGI.")
     (license l:gpl2+)))
 
 (define-public tremc
-  (let ((commit "4d50dab7376601daca13f7be6eabc0eaa057c1b0")
-        (revision "0"))
-    (package
-      (name "tremc")
-      (version (git-version "0.9.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/tremc/tremc.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0qpi65n8rv7l9mg8qyqx70z83inkl8v5r5nks65c99lhscdki0w7"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:tests? #f                      ; no test suite
-         #:make-flags
-         (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
-         #:phases
-         (modify-phases %standard-phases
-           ;; The software is just a Python script that must be copied into place.
-           (delete 'configure)
-           (delete 'build))))
-      (inputs
-       `(("python" ,python)))
-      (synopsis "Console client for the Transmission BitTorrent daemon")
-      (description "Tremc is a console client, with a curses interface, for the
+  (package
+    (name "tremc")
+    (version "0.9.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/tremc/tremc")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1fqspp2ckafplahgba54xmx0sjidx1pdzyjaqjhz0ivh98dkx2n5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no test suite
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         ;; The software is just a Python script that must be copied into place.
+         (delete 'configure)
+         (delete 'build))))
+    (inputs
+     `(("python" ,python)))
+    (synopsis "Console client for the Transmission BitTorrent daemon")
+    (description "Tremc is a console client, with a curses interface, for the
 Transmission BitTorrent daemon.")
-      (home-page "https://github.com/tremc/tremc")
-      (license l:gpl3+))))
+    (home-page "https://github.com/tremc/tremc")
+    (license l:gpl3+)))
 
 (define-public transmission-remote-cli
   (package
@@ -223,7 +219,7 @@ Transmission BitTorrent daemon.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fagga/transmission-remote-cli.git")
+                    (url "https://github.com/fagga/transmission-remote-cli")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -347,7 +343,7 @@ downloads, download scheduling, download rate limiting.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Rudde/mktorrent.git")
+                    (url "https://github.com/Rudde/mktorrent")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -379,17 +375,17 @@ and will take advantage of multiple processor cores where possible.")
 (define-public libtorrent-rasterbar
   (package
     (name "libtorrent-rasterbar")
-    (version "1.1.14")
+    (version "1.2.7")
     (source (origin
               (method url-fetch)
               (uri
                (string-append
-                "https://github.com/arvidn/libtorrent/releases/download/libtorrent-"
+                "https://github.com/arvidn/libtorrent/releases/download/libtorrent_"
                 (string-join (string-split version #\.) "_")
                 "/libtorrent-rasterbar-" version ".tar.gz"))
               (sha256
                (base32
-                "0sn3ingmk1lk9p56f9ifgdwhjg0qizcfgv15wyc9s71nm5fya7sc"))))
+                "001g35janbxi20c7jzsf3ii9mkagz4kdsp7f3sz5r0n0cng0c05w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -416,16 +412,16 @@ desktops.")
 (define-public qbittorrent
   (package
     (name "qbittorrent")
-    (version "4.2.1")
+    (version "4.2.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/qbittorrent/qBittorrent.git")
+             (url "https://github.com/qbittorrent/qBittorrent")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bz4l7awkx4qf3gh9c8gj8fab989439zj8qy4x9r36wxdjg5cxil"))))
+        (base32 "1n613ylg6i9gisgk0dbr2kpfasyizrkdjff1r8smd4vri2qrdksn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 9e7c40cd99..6a08b0d6c7 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -288,7 +288,7 @@ across a broad spectrum of applications.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/boostorg/sync.git")
+                      (url "https://github.com/boostorg/sync")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -317,7 +317,7 @@ Boost.Thread.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/boostorg/signals2.git")
+                    (url "https://github.com/boostorg/signals2")
                     (commit (string-append "boost-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index ea80cf020e..769238203c 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
@@ -11,7 +11,6 @@
 ;;; Copyright © 2019 nee <nee@cock.li>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
@@ -97,7 +96,8 @@
              (patches (search-patches
                        "grub-efi-fat-serial-number.patch"
                        "grub-setup-root.patch"
-                       "grub-verifiers-Blocklist-fallout-cleanup.patch"))))
+                       "grub-verifiers-Blocklist-fallout-cleanup.patch"
+                       "grub-cross-system-i686.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -446,7 +446,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
 (define u-boot
   (package
     (name "u-boot")
-    (version "2020.04")
+    (version "2020.07")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -454,7 +454,7 @@ tree binary files.  These are board description files used by Linux and BSD.")
                     "u-boot-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wjkasnz87q86hx93inspdjfjsinmxi87bcvj30c773x0fpjlwzy"))))
+                "0sjzy262x93aaqd6z24ziaq19xjjjk5f577ivf768vmvwsgbzxf1"))))
     (native-inputs
      `(("bc" ,bc)
        ("bison" ,bison)
@@ -885,15 +885,6 @@ to Novena upstream, does not load u-boot.img from the first partition.")
   (let ((base (make-u-boot-package "pinebook-pro-rk3399" "aarch64-linux-gnu")))
     (package
      (inherit base)
-     (source (origin
-              (inherit (package-source u-boot))
-              (patches
-               (search-patches "u-boot-add-boe-nv140fhmn49-display.patch"
-                               "u-boot-gpio-keys-binding-cons.patch"
-                               "u-boot-leds-common-binding-con.patch"
-                               "u-boot-DT-for-Pinebook-Pro.patch"
-                               "u-boot-support-Pinebook-Pro-laptop.patch"
-                               "u-boot-video-rockchip-fix-build.patch"))))
       (arguments
         (substitute-keyword-arguments (package-arguments base)
           ((#:phases phases)
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 11aee07378..7213c1bd0b 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -59,7 +59,7 @@
               ;; do not use auto-generated tarballs
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/matricks/bam.git")
+                    (url "https://github.com/matricks/bam")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -111,8 +111,8 @@ generate such a compilation database.")
     (license license:gpl3+)))
 
 (define-public gn
-  (let ((commit "ec938ddaa276646eb8f1ab33e160c156011d8217")
-        (revision "1736"))            ;as returned by `git describe`, used below
+  (let ((commit "eb997b5ab9c3f1ba6a2c52072785884864a84eae")
+        (revision "1794"))            ;as returned by `git describe`, used below
     (package
       (name "gn")
       (version (git-version "0.0" revision commit))
@@ -122,7 +122,7 @@ generate such a compilation database.")
                 (uri (git-reference (url home-page) (commit commit)))
                 (sha256
                  (base32
-                  "0j1qjwp2biw12s6npzpx4z8nvih7pyn68q6cz2k4700bk9y0d574"))
+                  "1vfkcy34wqhg7wsk7jdzhgnnzwim10wgbxv5bnavxzjcs871i2xa"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -259,7 +259,7 @@ other lower-level build files.")
 (define-public premake5
   (package
     (inherit premake4)
-    (version "5.0.0-alpha14")
+    (version "5.0.0-alpha15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/premake/premake-core/"
@@ -267,11 +267,13 @@ other lower-level build files.")
                                   "/premake-" version "-src.zip"))
               (sha256
                (base32
-                "0236s7bjvxf7x1l5faywmfzjywflpx42ngyhkn0mqqjnh54a97vw"))))
+                "0lyxfyqxyhjqsb3kmx1fyrxinb26i68hb7w7rg8lajczrgkmc3w8"))))
     (arguments
      (substitute-keyword-arguments (package-arguments premake4)
        ((#:phases phases)
         `(modify-phases ,phases
+           (replace 'enter-source
+             (lambda _ (chdir "build/gmake2.unix") #t))
            (replace 'install
              (lambda* (#:key outputs #:allow-other-keys)
                (install-file "../../bin/release/premake5"
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 305a61f40b..0a93c6475e 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -60,7 +60,8 @@
                (("default y") "default n"))
              #t))
          (replace 'configure
-           (lambda _ (invoke "make" "defconfig")))
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "defconfig" make-flags)))
          (add-after 'configure 'dont-install-to-usr
            (lambda _
              (substitute* ".config"
@@ -68,7 +69,7 @@
                 "CONFIG_INSTALL_NO_USR=y"))
              #t))
          (replace 'check
-           (lambda _
+           (lambda* (#:key make-flags #:allow-other-keys)
              (substitute* '("testsuite/du/du-s-works"
                             "testsuite/du/du-works")
                (("/bin") "/etc"))  ; there is no /bin but there is a /etc
@@ -96,17 +97,17 @@
              (delete-file "testsuite/which/which-uses-default-path")
              (rmdir "testsuite/which")
 
-             (invoke "make"
+             (apply invoke "make"
                      ;; "V=1"
                      "SKIP_KNOWN_BUGS=1"
                      "SKIP_INTERNET_TESTS=1"
-                     "check")))
+                     "check" make-flags)))
          (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key outputs make-flags #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-               (invoke "make"
+               (apply invoke "make"
                        (string-append "CONFIG_PREFIX=" out)
-                       "install")))))))
+                       "install" make-flags)))))))
     (native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man)
                      ;; The following are needed by the tests.
                      ("inetutils" ,inetutils)
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index c107a36c6a..25bc78e6bf 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright @ 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -310,7 +311,7 @@ any other grammar rules.")
 (define-public sparse
   (package
     (name "sparse")
-    (version "0.6.1")
+    (version "0.6.2")
     (source (origin
               (method url-fetch)
               (uri
@@ -318,7 +319,7 @@ any other grammar rules.")
                               "sparse-"  version ".tar.xz"))
               (sha256
                (base32
-                "0qavyryxmhd1rf11akgn1nq3r15k11bqa3qajaq36a56r225rc7x"))))
+                "1z11chawwcmf5xxx5v52cj7wrr3warz6q5wlcjvxpif1jbga172i"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (arguments
@@ -350,7 +351,7 @@ releases.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rsyslog/libestr.git")
+             (url "https://github.com/rsyslog/libestr")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -383,7 +384,7 @@ more, like escaping special characters.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rsyslog/libfastjson.git")
+             (url "https://github.com/rsyslog/libfastjson")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -410,7 +411,7 @@ with essential JSON handling functions, sufficiently good JSON support (not
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rsyslog/liblogging.git")
+             (url "https://github.com/rsyslog/liblogging")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -436,3 +437,39 @@ with essential JSON handling functions, sufficiently good JSON support (not
      "Liblogging is an easy to use library for logging.  It offers an enhanced
 replacement for the syslog() call, but retains its ease of use.")
     (license license:bsd-2)))
+
+(define-public unifdef
+  (package
+    (name "unifdef")
+    (version "2.12")
+    (source (origin
+              (method url-fetch)
+              ;; https://dotat.at/prog/unifdef/unifdef-2.12.tar.xz
+              (uri (string-append "https://dotat.at/prog/" name "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "00647bp3m9n01ck6ilw6r24fk4mivmimamvm4hxp5p6wxh10zkj3"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin (delete-file-recursively "FreeBSD")
+                       (delete-file-recursively "win32")
+                       #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (delete 'configure))
+       #:make-flags (list "CC=gcc" (string-append "prefix=" %output))
+       #:tests? #f))                    ;no test suite
+    (native-inputs
+     `(("perl" ,perl)))
+    (home-page "https://dotat.at/prog/unifdef/")
+    (synopsis "Utility to selectively processes conditional C preprocessor")
+    (description "The @command{unifdef} utility selectively processes
+conditional C preprocessor @code{#if} and @code{#ifdef} directives.  It
+removes from a file both the directives and the additional text that they
+delimit, while otherwise leaving the file alone.  It can be useful for
+avoiding distractions when studying code that uses @code{#ifdef} heavily for
+portability.")
+    (license (list license:bsd-2        ;all files except...
+                   license:bsd-3))))    ;...the unidef.1 manual page
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index 71b4827578..53c73c969d 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com
 ;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,7 +64,7 @@
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/HowardHinnant/date.git")
+               (url "https://github.com/HowardHinnant/date")
                (commit "9a0ee2542848ab8625984fc8cdbfb9b5414c0082")))
          (file-name (git-file-name name version))
          (sha256
@@ -195,6 +196,12 @@ data units.")
              "doc/build/man/khal.1"
              (string-append (assoc-ref outputs "out") "/share/man/man1"))
             #t))
+        (add-before 'check 'fix-tests
+          (lambda _
+            ;; Reported upstream: <https://github.com/pimutils/khal/issues/947>.
+            (substitute* "tests/cli_test.py"
+             (("Invalid value for \"\\[ICS\\]\"") "Invalid value for \\'[ICS]\\'"))
+            #t))
         (replace 'check
           (lambda* (#:key inputs #:allow-other-keys)
             ;; The tests require us to choose a timezone.
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm
index fc915965b4..5a1128f44c 100644
--- a/gnu/packages/ccache.scm
+++ b/gnu/packages/ccache.scm
@@ -30,14 +30,14 @@
 (define-public ccache
   (package
     (name "ccache")
-    (version "3.7.9")
+    (version "3.7.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/ccache/ccache/releases/download/v"
                            version "/ccache-" version ".tar.xz"))
        (sha256
-        (base32 "0jzl9idnjd9jq64qd8kny7gfd0ydvz5kyq2yslmigfdz8dsxm4zq"))))
+        (base32 "0s1g0ylrayzax68xlqnxx46f5bhvr2pcm1yzswmj0kcs14404icd"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)     ; for test/run
                      ("which" ,(@ (gnu packages base) which))))
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index ac8dd26af0..6dee19fb29 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -253,7 +253,7 @@ reconstruction capability.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cdrdao/cdrdao.git")
+             (url "https://github.com/cdrdao/cdrdao")
              (commit
               (string-append "rel_" (string-replace-substring version "." "_")))))
        (file-name (git-file-name name version))
@@ -555,7 +555,7 @@ graphical interface.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/lipnitsk/libcue.git")
+                   (url "https://github.com/lipnitsk/libcue")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index f249dbedb0..661ed65e53 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
@@ -33,6 +33,7 @@
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,6 +117,54 @@ source code editors and IDEs.")
               (base32
                "0d22h8xshmbpl9hba9ch3xj8vb9ybm5akpsbbh7yj07fic4h2hj6"))))))
 
+(define-public clitest
+  (package
+    (name "clitest")
+    (version "0.3.0")
+    (home-page "https://github.com/aureliojargas/clitest")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zw5wra9hc717srmcar1wm4i34kyj8c49ny4bb7y3nrvkjp2pdb5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; This package is distributed as a single shell script and comes
+         ;; without a proper build system.
+         (delete 'configure)
+         (delete 'build)
+         (replace 'check
+           (lambda _
+             (substitute* "test.md"
+               ;; One test looks for an error from grep in the form "grep: foo",
+               ;; but our grep returns the absolute file name on errors.  Adjust
+               ;; the test to cope with that.
+               (("sed 's/\\^e\\*grep: \\.\\*/")
+                "sed 's/.*e*grep: .*/"))
+
+             (setenv "HOME" "/tmp")
+             (invoke "./clitest" "test.md")))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (install-file "clitest" (string-append out "/bin"))
+               (install-file "README.md"
+                             (string-append out "/share/doc/clitest-" ,version))
+               #t))))))
+    (native-inputs
+     `(("perl" ,perl)))                 ;for tests
+    (synopsis "Command line test tool")
+    (description
+     "@command{clitest} is a portable shell script that performs automatic
+testing of Unix command lines.")
+    (license license:expat)))
+
 (define-public cunit
   (package
     (name "cunit")
@@ -396,7 +445,7 @@ and it supports a very flexible form of test discovery.")
 (define-public doctest
   (package
     (name "doctest")
-    (version "2.3.8")
+    (version "2.4.0")
     (home-page "https://github.com/onqtam/doctest")
     (source (origin
               (method git-fetch)
@@ -404,7 +453,7 @@ and it supports a very flexible form of test discovery.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "16w907750jnp98vdzkn72lzwy1zyryaqvfi80lbdp398pj23rq65"))))
+                "1yi95saqv8qb3ix6w8d7ffvs7qbwvqmq6wblckhxhicxxdxk85cd"))))
     (build-system cmake-build-system)
     (synopsis "C++ test framework")
     (description
@@ -421,7 +470,7 @@ has been designed to be fast, light and unintrusive.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/go-check/check.git")
+                      (url "https://github.com/go-check/check")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -527,7 +576,7 @@ test coverage and has a web user interface that will refresh automatically.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/google/googletest.git")
+             (url "https://github.com/google/googletest")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -551,7 +600,7 @@ generation.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/google/googletest.git")
+                   (url "https://github.com/google/googletest")
                    (commit (string-append "release-" version))))
              (file-name (git-file-name "googletest" version))
              (sha256
@@ -970,6 +1019,33 @@ supports coverage of subprocesses.")
 (define-public python2-pytest-runner-2
   (package-with-python2 python-pytest-runner-2))
 
+(define-public python-pytest-lazy-fixture
+  (package
+    (name "python-pytest-lazy-fixture")
+    (version "0.6.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pytest-lazy-fixture" version))
+        (sha256
+         (base32 "1b0hmnsxw4s2wf9pks8dg6dfy5cx3zcbzs8517lfccxsfizhqz8f"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; Make the installed plugin discoverable by Pytest.
+             (add-installed-pythonpath inputs outputs)
+             (invoke "pytest" "-vv"))))))
+    (propagated-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/tvorog/pytest-lazy-fixture")
+    (synopsis "Use fixtures in @code{pytest.mark.parametrize}")
+    (description "This plugin helps to use fixtures in
+@code{pytest.mark.parametrize}.")
+    (license license:expat)))
+
 (define-public python-pytest-mock
   (package
     (name "python-pytest-mock")
@@ -1446,7 +1522,7 @@ have failed since the last commit or what tests are currently failing.")))
     (arguments
      ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors.
      '(#:tests? #f))
-    (home-page "http://nedbatchelder.com/code/coverage")
+    (home-page "https://coverage.readthedocs.io")
     (synopsis "Code coverage measurement for Python")
     (description
      "Coverage measures code coverage, typically during test execution.  It
@@ -1524,7 +1600,7 @@ testing frameworks.")
     (propagated-inputs
      `(("python-coverage" ,python-coverage)
        ("python-requests" ,python-requests)))
-    (home-page "http://github.com/codecov/codecov-python")
+    (home-page "https://github.com/codecov/codecov-python")
     (synopsis "Upload code coverage reports to @code{codecov.io}")
     (description
      "Codecov collects code coverage reports from code written in Python, Java,
@@ -1822,13 +1898,13 @@ failures.")
 (define-public python-pytest-flakes
   (package
     (name "python-pytest-flakes")
-    (version "1.0.1")
+    (version "4.0.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pytest-flakes" version))
               (sha256
                (base32
-                "0flag3n33kbhyjrhzmq990rvg4yb8hhhl0i48q9hw0ll89jp28lw"))))
+                "0hyind0gb950v9kfy0v97x66fb33slbqmxhrjvgbvsv0ayzn869l"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1839,7 +1915,7 @@ failures.")
              ;; It's easier to run tests after install.
              ;; Make installed package available for running the tests
              (add-installed-pythonpath inputs outputs)
-             (invoke "py.test" "-vv"))))))
+             (invoke "py.test" "-vv" "-k" "not test_syntax_error"))))))
     (native-inputs
      `(("python-coverage" ,python-coverage)
        ("python-pytest" ,python-pytest)
@@ -2087,7 +2163,7 @@ a fork of pytest-capturelog.")
     (propagated-inputs
      `(("python-coverage" ,python-coverage)
        ("python-nose" ,python-nose)))
-    (home-page "http://github.com/cmheisel/nose-xcover")
+    (home-page "https://github.com/cmheisel/nose-xcover")
     (synopsis "Extends nose.plugins.cover to add Cobertura-style XML reports")
     (description "Nose-xcover is a companion to the built-in
 @code{nose.plugins.cover}.  This plugin will write out an XML coverage report
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 0540dfceb6..ddbf5ca098 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -57,7 +57,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cryos/avogadro.git")
+             (url "https://github.com/cryos/avogadro")
              (commit version)))
        (sha256
         (base32 "0258py3lkba85qhs5ynancinyym61vlp0zaq9yrfs3hhnhpzv9n2"))
@@ -313,7 +313,7 @@ NumPy < 1.9.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/gromacs/tng.git")
+                    (url "https://github.com/gromacs/tng")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index d08363a8dc..b80421d3f7 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -46,7 +46,7 @@
     (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/nanopass/nanopass-framework-scheme.git")
+            (url "https://github.com/nanopass/nanopass-framework-scheme")
             (commit (string-append "v" version))))
       (sha256 (base32 "0lrngdna6w7v9vlp1a873hgwrwsz2p0pgkccswa4smzvdyhgfsri"))
       (file-name (git-file-name "nanopass" version)))))
@@ -56,7 +56,7 @@
     (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/dybvig/stex.git")
+            (url "https://github.com/dybvig/stex")
             (commit (string-append "v" version))))
       (sha256 (base32 "1jiawhhqnsj42hzmlbq5xby3iarhf8vhiqs0kg1a0zg5jsn6cf8n"))
       (file-name (git-file-name "stex" version)))))
@@ -69,7 +69,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cisco/ChezScheme.git")
+             (url "https://github.com/cisco/ChezScheme")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1hagrqdp649n2g0wq2a9gfnz7mjcjakkw7ziplbj3db412bb7kx5"))
@@ -230,7 +230,7 @@ and 32-bit PowerPC architectures.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fedeinthemix/chez-srfi.git")
+             (url "https://github.com/fedeinthemix/chez-srfi")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1vgn984mj2q4w6r2q66h7qklp2hrh85wwh4k9yisga5fi0ps7myf"))
@@ -261,7 +261,7 @@ and 32-bit PowerPC architectures.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/arcfide/ChezWEB.git")
+               (url "https://github.com/arcfide/ChezWEB")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -326,7 +326,7 @@ programming in Scheme.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/arcfide/chez-sockets.git")
+               (url "https://github.com/arcfide/chez-sockets")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -456,7 +456,7 @@ Chez Scheme.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fedeinthemix/chez-irregex.git")
+             (url "https://github.com/fedeinthemix/chez-irregex")
              (commit (string-append "v" version))))
        (sha256
         (base32 "0jh6piylw545j81llay9wfivgpv6lcnwd81gm4w17lkasslir50q"))
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index 9ab7ca1f91..d828c25bc2 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -55,6 +55,7 @@
   #:use-module (gnu packages nss)
   #:use-module (gnu packages pciutils)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
@@ -98,6 +99,7 @@
     "third_party/angle/src/third_party/compiler" ;BSD-2
     "third_party/angle/src/third_party/libXNVCtrl" ;Expat
     "third_party/angle/src/third_party/trace_event" ;BSD-3
+    "third_party/angle/src/third_party/volk" ;Expat
     "third_party/angle/third_party/vulkan-headers" ;ASL2.0
     "third_party/angle/third_party/vulkan-loader" ;ASL2.0
     "third_party/angle/third_party/vulkan-tools" ;ASL2.0
@@ -117,6 +119,7 @@
     ;; XXX: This is a minified version of <https://d3js.org/>.
     "third_party/catapult/tracing/third_party/d3" ;BSD-3
     "third_party/catapult/tracing/third_party/gl-matrix" ;Expat
+    "third_party/catapult/tracing/third_party/jpeg-js" ;ASL2.0
     ;; XXX: Minified version of <https://github.com/Stuk/jszip>.
     "third_party/catapult/tracing/third_party/jszip" ;Expat or GPL3
     "third_party/catapult/tracing/third_party/mannwhitneyu" ;Expat
@@ -135,7 +138,10 @@
     "third_party/dawn" ;ASL2.0
     "third_party/depot_tools/owners.py" ;BSD-3
     "third_party/devtools-frontend" ;BSD-3
+    "third_party/devtools-frontend/src/front_end/third_party/acorn" ;Expat
+    "third_party/devtools-frontend/src/front_end/third_party/codemirror" ;Expat
     "third_party/devtools-frontend/src/front_end/third_party/fabricjs" ;Expat
+    "third_party/devtools-frontend/src/front_end/third_party/lighthouse" ;ASL2.0
     "third_party/devtools-frontend/src/front_end/third_party/wasmparser" ;ASL2.0
     "third_party/devtools-frontend/src/third_party/axe-core" ;MPL2.0
     "third_party/devtools-frontend/src/third_party/pyjson5" ;ASL2.0
@@ -148,6 +154,7 @@
     "third_party/google_input_tools/third_party/closure_library" ;ASL2.0
     "third_party/google_input_tools/third_party/closure_library/third_party/closure" ;Expat
     "third_party/googletest" ;BSD-3
+    "third_party/harfbuzz-ng" ;Expat
     "third_party/hunspell" ;MPL1.1/GPL2+/LGPL2.1+
     "third_party/iccjpeg" ;IJG
     "third_party/inspector_protocol" ;BSD-3
@@ -155,6 +162,7 @@
     "third_party/jstemplate" ;ASL2.0
     "third_party/khronos" ;Expat, SGI
     "third_party/leveldatabase" ;BSD-3
+    "third_party/libavif" ;BSD-2
     "third_party/libXNVCtrl" ;Expat
     "third_party/libaddressinput" ;ASL2.0
     "third_party/libaom" ;BSD-2 or "Alliance for Open Media Patent License 1.0"
@@ -170,7 +178,9 @@
     "third_party/libwebm" ;BSD-3
     "third_party/libxml/chromium" ;BSD-3
     "third_party/libyuv" ;BSD-3
+    "third_party/lottie" ;Expat
     "third_party/lss" ;BSD-3
+    "third_party/mako" ;Expat
     "third_party/markupsafe" ;BSD-3
     "third_party/mesa_headers" ;Expat, SGI
     "third_party/metrics_proto" ;BSD-3
@@ -181,6 +191,7 @@
     "third_party/one_euro_filter" ;BSD-3
     "third_party/openscreen" ;BSD-3
     "third_party/openscreen/src/third_party/tinycbor" ;Expat
+    "third_party/openscreen/src/third_party/mozilla" ;MPL1.1/GPL2+/LGPL2.1+, BSD-3
     "third_party/ots" ;BSD-3
     "third_party/pdfium" ;BSD-3
     "third_party/pdfium/third_party/agg23" ;Expat
@@ -199,6 +210,7 @@
     "third_party/qcms" ;Expat
     "third_party/rnnoise" ;BSD-3
     "third_party/s2cellid" ;ASL2.0
+    "third_party/schema_org" ;CC-BY-SA3.0
     "third_party/skia" ;BSD-3
     "third_party/skia/include/third_party/skcms" ;BSD-3
     "third_party/skia/third_party/skcms" ;BSD-3
@@ -208,14 +220,22 @@
     "third_party/spirv-headers" ;ASL2.0
     "third_party/SPIRV-Tools" ;ASL2.0
     "third_party/sqlite" ;Public domain
+    "third_party/swiftshader" ;ASL2.0
+    "third_party/swiftshader/third_party/astc-encoder" ;ASL2.0
+    "third_party/swiftshader/third_party/llvm-7.0" ;NCSA
+    "third_party/swiftshader/third_party/llvm-subzero" ;NCSA
+    "third_party/swiftshader/third_party/marl" ;ASL2.0
+    "third_party/swiftshader/third_party/subzero" ;NCSA
+    "third_party/swiftshader/third_party/SPIRV-Headers" ;X11-style
     "third_party/usb_ids" ;BSD-3
     "third_party/usrsctp" ;BSD-2
+    "third_party/vulkan_memory_allocator" ;Expat
     "third_party/wayland/wayland_scanner_wrapper.py" ;BSD-3
     "third_party/wayland-protocols" ;Expat
     "third_party/web-animations-js" ;ASL2.0
     "third_party/webdriver" ;ASL2.0
     "third_party/webrtc" ;BSD-3
-    "third_party/webrtc/common_audio/third_party/fft4g" ;Non-copyleft
+    "third_party/webrtc/common_audio/third_party/ooura" ;Non-copyleft
     "third_party/webrtc/common_audio/third_party/spl_sqrt_floor" ;Public domain
     "third_party/webrtc/modules/third_party/fft" ;Non-copyleft
     "third_party/webrtc/modules/third_party/g711" ;Public domain
@@ -226,7 +246,6 @@
     "third_party/widevine/cdm/widevine_cdm_common.h" ;BSD-3
     "third_party/woff2" ;ASL2.0
     "third_party/xdg-utils" ;Expat
-    "third_party/yasm/run_yasm.py" ;BSD-2 or BSD-3
     "third_party/zlib/google" ;BSD-3
     "url/third_party/mozilla" ;BSD-3, MPL1.1/GPL2+/LGPL2.1+
     "v8/src/third_party/siphash" ;Public domain
@@ -235,36 +254,72 @@
     "v8/third_party/inspector_protocol" ;BSD-3
     "v8/third_party/v8/builtins")) ;PSFL
 
-(define* (computed-origin-method gexp-promise hash-algo hash
-                                 #:optional (name "source")
-                                 #:key (system (%current-system))
-                                 (guile (default-guile)))
-  "Return a derivation that executes the G-expression that results
-from forcing GEXP-PROMISE."
-  (mlet %store-monad ((guile (package->derivation guile system)))
-    (gexp->derivation (or name "computed-origin")
-                      (force gexp-promise)
-                      #:graft? #f       ;nothing to graft
-                      #:system system
-                      #:guile-for-build guile)))
-
-(define %chromium-version "81.0.4044.138")
-(define %ungoogled-revision "c2a89fb6b5b559c826796c811741fa8ed3e11de8")
-(define %debian-revision "debian/81.0.4044.92-1")
-(define package-revision "0")
-(define %package-version (string-append %chromium-version "-"
-                                        package-revision "."
-                                        (string-take %ungoogled-revision 7)))
-
-(define %chromium-origin
+(define %blacklisted-files
+  ;; 'third_party/blink/perf_tests/resources/svg/HarveyRayner.svg' carries a
+  ;; nonfree license according to LICENSES in the same directory.  As we don't
+  ;; run the Blink performance tests, just remove everything to save ~24MiB.
+  '("third_party/blink/perf_tests"))
+
+(define (gentoo-patch name revision hash)
   (origin
     (method url-fetch)
-    (uri (string-append "https://commondatastorage.googleapis.com"
-                        "/chromium-browser-official/chromium-"
-                        %chromium-version ".tar.xz"))
-    (sha256
-     (base32
-      "19kpzmqmld0m0nflx13w9flxfal19msnxhzl3lip1jqih65z4y7l"))))
+    (uri (string-append "https://gitweb.gentoo.org/repo/gentoo.git/plain"
+                        "/www-client/chromium/files/" name "?id=" revision))
+    (file-name (string-append "ungoogled-" name))
+    (sha256 (base32 hash))))
+
+;; This repository contains libstdc++ compatibility patches for Chromium.
+(define (chromium-gcc-patchset commit hash)
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/stha09/chromium-patches")
+          (commit commit)))
+    (file-name (git-file-name "chromium-gcc-patches" commit))
+    (sha256 (base32 hash))))
+
+(define (debian-patch name revision hash)
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://salsa.debian.org/chromium-team/chromium/-/raw/"
+                        revision "/debian/patches/" name))
+    (file-name (match (string-split name #\/)
+                 ((category name)
+                  (string-append "ungoogled-chromium-" category "-" name))))
+    (sha256 (base32 hash))))
+
+(define %ungoogled-revision "df199c04ff367da59ce52a23a3f3b305dd3b00c3")
+(define %debian-revision "debian/83.0.4103.116-3")
+(define %gentoo-revision "f3f649046d31ebdbc8c4a302b2384504eff78027")
+
+(define %gentoo-patches
+  ;; This patch is necessary for compatibility with FFmpeg 4.3.
+  (list (gentoo-patch "chromium-84-mediaalloc.patch" %gentoo-revision
+                      "0snxdc4nb8ykzncz62vpsl8hgxpy24m17mycx67i2gckmrpslzzv")))
+
+(define %chromium-gcc-patches
+  (chromium-gcc-patchset
+   "chromium-84-patchset-3"
+   "0l05gx3pn703n47anjwsl5sjcqw8kaxmivf7llax97kj3k6d127v"))
+
+(define %debian-patches
+  (list (debian-patch "system/zlib.patch" %debian-revision
+                      "0bp2vh1cgmwjrn1zkpphkd3bs662s23xwdhy3abm9cfjvwrj117n")
+        (debian-patch "system/jsoncpp.patch" %debian-revision
+                      "0d95brl4a5y5w142yd0rvf59z513h7chsz0vnm034d6lqf22ahwf")
+        (debian-patch "system/openjpeg.patch" %debian-revision
+                      "0zd6v5njx1pc7i0y6mslxvpx5j4cq01mmyx55qcqx8qzkm0gm48j")))
+
+(define %arch-patches
+  (list (origin
+          (method url-fetch)
+          (uri "https://git.archlinux.org/svntogit/packages.git/plain/trunk/\
+chromium-fix-vaapi-on-intel.patch?h=packages/chromium\
+&id=93b5b90621b4827084288197c6e0e09b987b372a")
+          (file-name "ungoogled-chromium-fix-vaapi-on-intel.patch")
+          (sha256
+           (base32
+            "16jbjjf4d9jp52rdrrxx5vm69nx3w0qrijgjpwapnmcif13z55g4")))))
 
 (define %ungoogled-origin
   (origin
@@ -275,145 +330,74 @@ from forcing GEXP-PROMISE."
                               (string-take %ungoogled-revision 7)))
     (sha256
      (base32
-      "0bbr4a2gkgm3ykdgpj8x58sd3dwam6qkifhzfs2997681g7b2v2q"))))
+      "1bqvcq3dj6615198j7cz3ylyyic5zpis06capvl6ybl1na3ainb0"))))
 
-(define %debian-origin
-  (origin
-    (method git-fetch)
-    (uri (git-reference
-          (url "https://salsa.debian.org/chromium-team/chromium.git")
-          (commit %debian-revision)))
-    (file-name (git-file-name "debian-chromium-packaging"
-                              (match (string-split %debian-revision #\/)
-                                ((_ revision) revision)
-                                (_ (string-take %debian-revision 7)))))
-    (sha256
-     (base32
-      "0srgbcqga3l75bfkv3bnmjk416189nazsximvzdx2k5n8v5k4p3m"))))
-
-;; This is a "computed" origin that does the following:
-;; *) Runs the Ungoogled scripts on a pristine Chromium tarball.
-;; *) Applies Debians Chromium patches, for their unbundling and GCC work.
+;; This is a source 'snippet' that does the following:
+;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
+;; *) Runs the ungoogled patch-, domain substitution-, and scrubbing scripts.
 ;; *) Prunes all third_party directories that are not explicitly preserved.
 ;; *) Adjusts "GN" build files such that system libraries are preferred.
-(define ungoogled-chromium-source
-  (let ((chromium-source %chromium-origin)
-        (ungoogled-source %ungoogled-origin)
-        (debian-source %debian-origin))
-    (origin
-      (method computed-origin-method)
-      (file-name (string-append "ungoogled-chromium-" %package-version ".tar.xz"))
-      (sha256 #f)
-      (uri
-       (delay
-         (with-imported-modules '((guix build utils))
-           #~(begin
-               (use-modules (guix build utils)
-                            (ice-9 rdelim)
-                            (srfi srfi-1)
-                            (srfi srfi-26))
-               (let ((chromium-dir    (string-append "chromium-" #$%chromium-version))
-                     (preserved-files (list #$@%preserved-third-party-files)))
-
-                 (set-path-environment-variable
-                  "PATH" '("bin")
-                  (list #+(canonical-package patch)
-                        #+(canonical-package xz)
-                        #+(canonical-package tar)
-                        #+python-wrapper))
-
-                 (copy-recursively #+ungoogled-source "/tmp/ungoogled")
-
-                 (with-directory-excursion "/tmp/ungoogled"
-
-                   (format #t "Unpacking chromium tarball...~%")
-                   (force-output)
-                   (invoke "tar" "xf" #+chromium-source)
-
-                   ;; Ungoogled-Chromium contains a forked subset of the Debian
-                   ;; patches.  Disable those, as we apply newer versions later.
-                   (substitute* "patches/series"
-                     ((".*/debian/.*")
-                      ""))
-
-                   (format #t "Ungooglifying...~%")
-                   (force-output)
-                   (invoke "python" "utils/prune_binaries.py" chromium-dir
-                           "pruning.list")
-                   (invoke "python" "utils/patches.py" "apply"
-                           chromium-dir "patches")
-                   (invoke "python" "utils/domain_substitution.py" "apply" "-r"
-                           "domain_regex.list" "-f" "domain_substitution.list"
-                           "-c" "/tmp/domainscache.tar.gz" chromium-dir)
-
-                   (with-directory-excursion chromium-dir
-
-                     (format #t "Applying Debian patches...~%")
-                     (force-output)
-                     (let* ((debian  #+debian-source)
-                            (patches (string-append debian "/debian/patches"))
-                            (series  (string-append patches "/series")))
-                       (with-input-from-file series
-                         (lambda ()
-                           (let loop ((line (read-line)))
-                             (unless (eof-object? line)
-                               (when (and (> (string-length line) 1)
-                                          (not (string-prefix? "#" line))
-                                          ;; Skip the Debian-specific ones.
-                                          (not (string-prefix? "debianization/" line))
-                                          (not (string-prefix? "buster/" line))
-                                          (not (any (cute string-suffix? <> line)
-                                                    ;; These conflict with Ungoogled.
-                                                    '("widevine-buildflag.patch"
-                                                      "signin.patch"
-                                                      "third-party-cookies.patch"
-
-                                                      ;; Disable workarounds for the
-                                                      ;; Chromium "-lite" tarball.  We
-                                                      ;; use the "full" version and don't
-                                                      ;; need these patches.
-                                                      "closure.patch"
-                                                      "owners.patch"
-
-                                                      ;; XXX: 'fixes/inspector.patch'
-                                                      ;; makes v8 reuse the top-level
-                                                      ;; third_party/inspector_protocol
-                                                      ;; instead of its own bundled copy,
-                                                      ;; but that does not work here for
-                                                      ;; some reason.  Ignore that patch
-                                                      ;; and those that depend on it.
-                                                      "inspector.patch"))))
-                                 (invoke "patch" "--force" "-p1" "--input"
-                                         (string-append patches "/" line)
-                                         "--no-backup-if-mismatch"))
-                               (loop (read-line)))))))
-
-                     (format #t "Pruning third party files...~%")
-                     (force-output)
-                     (apply invoke (string-append #+python-2 "/bin/python")
-                            "build/linux/unbundle/remove_bundled_libraries.py"
-                            "--do-remove" preserved-files)
-
-                     (format #t "Replacing GN files...~%")
-                     (force-output)
-                     (invoke "python" "build/linux/unbundle/replace_gn_files.py"
-                             "--system-libraries" "ffmpeg" "flac" "fontconfig"
-                             "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
-                             "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
-                             "libxslt" "openh264" "opus" "re2" "snappy" "yasm"
-                             "zlib"))
-
-                   (format #t (string-append "Packing new ungoogled tarball ...~%"))
-                   (force-output)
-                   (invoke "tar" "cvfa" #$output
-                           ;; Avoid non-determinism in the archive.
-                           "--mtime=@0"
-                           "--owner=root:0"
-                           "--group=root:0"
-                           "--sort=name"
-                           chromium-dir)
-
-                   #t)))))))))
+(define ungoogled-chromium-snippet
+  ;; Note: delay to cope with cyclic module imports at the top level.
+  (delay
+    #~(begin
+        (let ((chromium-dir (getcwd)))
+          (set-path-environment-variable
+           "PATH" '("bin")
+           (list #+patch #+python-wrapper #+xz))
+
+          ;; Apply patches before running the ungoogled scripts because
+          ;; domain substitution may break some of the patches.
+          (format #t "Applying assorted build fixes...~%")
+          (force-output)
+          (for-each (lambda (patch)
+                      (invoke "patch" "-p1" "--force" "--input"
+                              patch "--no-backup-if-mismatch"))
+                    (append
+                     '#+%gentoo-patches '#+%debian-patches '#+%arch-patches
+                     (find-files #$%chromium-gcc-patches "\\.patch$")
+                     '#+(list (local-file
+                               (search-patch
+                                "ungoogled-chromium-system-nspr.patch")))))
+
+          (with-directory-excursion #+%ungoogled-origin
+            (format #t "Ungooglifying...~%")
+            (force-output)
+            (invoke "python" "utils/prune_binaries.py" chromium-dir
+                    "pruning.list")
+            (invoke "python" "utils/patches.py" "apply"
+                    chromium-dir "patches")
+            (invoke "python" "utils/domain_substitution.py" "apply" "-r"
+                    "domain_regex.list" "-f" "domain_substitution.list"
+                    "-c" "/tmp/domainscache.tar.gz" chromium-dir))
+
+          ;; Run after the ungoogled scripts to avoid interfering with
+          ;; patches or file lists.
+          (format #t "Removing blacklisted files...~%")
+          (force-output)
+          (for-each delete-file-recursively '#$%blacklisted-files)
+
+          (format #t "Pruning third party files...~%")
+          (force-output)
+          (apply invoke (string-append #+python-2 "/bin/python")
+                 "build/linux/unbundle/remove_bundled_libraries.py"
+                 "--do-remove" '#$%preserved-third-party-files)
+
+          (format #t "Replacing GN files...~%")
+          (force-output)
+          (substitute* "tools/generate_shim_headers/generate_shim_headers.py"
+            ;; The "is_official_build" configure option enables certain
+            ;; release optimizations like those used in the commercial
+            ;; Chrome browser.  Unfortunately it also requires using the
+            ;; bundled libraries: lose that restriction.
+            (("#if defined\\(OFFICIAL_BUILD\\)")
+             "#if 0"))
+          (invoke "python" "build/linux/unbundle/replace_gn_files.py"
+                  "--system-libraries" "ffmpeg" "flac" "fontconfig"
+                  "freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
+                  "libjpeg" "libpng" "libvpx" "libwebp" "libxml"
+                  "libxslt" "openh264" "opus" "re2" "snappy" "zlib")
+          #t))))
 
 (define opus+custom
   (package/inherit opus
@@ -427,12 +411,57 @@ from forcing GEXP-PROMISE."
         `(cons "--enable-custom-modes"
                ,flags))))))
 
+;; Chromium still has Python2-only code, so we need this special Python 2
+;; variant of xcb-proto.
+(define xcb-proto/python2
+  (package/inherit
+   xcb-proto
+   (name "python2-xcb-proto")
+   (native-inputs
+    `(("pkg-config" ,pkg-config)
+      ("python" ,python-2)))))
+
+;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need
+;; this trick to make it wrap 'lld'.
+(define (make-lld-wrapper lld)
+  (define lld-as-ld
+    (computed-file "lld-ld"
+                   #~(begin
+                       (mkdir #$output)
+                       (mkdir (string-append #$output "/bin"))
+                       (symlink #$(file-append lld "/bin/lld")
+                                (string-append #$output "/bin/ld")))))
+
+  ;; Create a wrapper for LLD that inserts appropriate -rpath entries.
+  (define lld-wrapper
+    (make-ld-wrapper "lld-wrapper"
+                     #:binutils lld-as-ld))
+
+  ;; Clang looks for an 'ld.lld' executable, so we need to symlink it back.
+  (computed-file "lld-wrapped"
+                 #~(begin
+                     (mkdir #$output)
+                     (mkdir (string-append #$output "/bin"))
+                     (symlink #$(file-append lld-wrapper "/bin/ld")
+                              (string-append #$output "/bin/lld"))
+                     (symlink "lld" (string-append #$output "/bin/ld.lld")))))
+
 (define-public ungoogled-chromium
   (package
     (name "ungoogled-chromium")
-    (version %package-version)
+    (version (string-append "84.0.4147.89-0."
+                            (string-take %ungoogled-revision 7)))
     (synopsis "Graphical web browser")
-    (source ungoogled-chromium-source)
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://commondatastorage.googleapis.com"
+                                  "/chromium-browser-official/chromium-"
+                                  (car (string-split version #\-)) ".tar.xz"))
+              (sha256
+               (base32
+                "0yf6j0459qzr677zsa2apmfz0x0ndlscvwj1a5v40nqjijchv5qp"))
+              (modules '((guix build utils)))
+              (snippet (force ungoogled-chromium-snippet))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -450,13 +479,14 @@ from forcing GEXP-PROMISE."
        ;; directory for an exhaustive list of supported flags.
        ;; (Note: The 'configure' phase will do that for you.)
        (list "is_debug=false"
-             "use_gold=false"
-             "use_lld=false"
+             ;; Use the "official" release optimizations, as opposed to
+             ;; a developer build.
+             "is_official_build=true"
+             (string-append "max_jobs_per_link="
+                            (number->string (parallel-job-count)))
              "clang_use_chrome_plugins=false"
-             "linux_use_bundled_binutils=false"
              "use_custom_libcxx=false"
              "use_sysroot=false"
-             "enable_precompiled_headers=false"
              "goma_dir=\"\""
              "enable_nacl=false"
              "enable_nacl_nonsfi=false"
@@ -472,7 +502,6 @@ from forcing GEXP-PROMISE."
              "enable_remoting=false"
              "enable_reporting=false"
              "enable_service_discovery=false"
-             "enable_swiftshader=false"
              "enable_vr=false"
              "enable_widevine=false"
              ;; Disable type-checking for the Web UI to avoid a Java dependency.
@@ -483,6 +512,9 @@ from forcing GEXP-PROMISE."
              "custom_toolchain=\"//build/toolchain/linux/unbundle:default\""
              "host_toolchain=\"//build/toolchain/linux/unbundle:default\""
 
+             (string-append "xcbproto_path=\""
+                            (assoc-ref %build-inputs "xcb-proto") "/share/xcb\"")
+
              ;; Prefer system libraries.
              "use_system_freetype=true"
              "use_system_harfbuzz=true"
@@ -496,6 +528,11 @@ from forcing GEXP-PROMISE."
              "use_openh264=true"
              "use_pulseaudio=true"
              "link_pulseaudio=true"
+             "icu_use_data_file=false"
+
+             ;; FIXME: Using system protobuf with "is_official_build" causes an
+             ;; invalid opcode and "protoc-gen-plugin: Plugin killed by signal 4".
+             ;;"perfetto_use_system_protobuf=true"
 
              ;; VA-API acceleration is currently only supported on x86_64-linux.
              ,@(if (string-prefix? "x86_64" (or (%current-target-system)
@@ -583,13 +620,10 @@ from forcing GEXP-PROMISE."
              (substitute* "third_party/webrtc/rtc_base/strings/json.h"
                (("#include \"third_party/jsoncpp/") "#include \"json/"))
 
-             (substitute* "gpu/config/gpu_util.cc"
-               (("third_party/vulkan/include/")
-                ""))
-
              (substitute* '("components/viz/common/gpu/vulkan_context_provider.h"
-                            "components/viz/common/resources/resource_format_utils.h")
-               (("third_party/vulkan/include/") ""))
+                            "components/viz/common/resources/resource_format_utils.h"
+                            "gpu/config/gpu_util.cc")
+               (("third_party/vulkan_headers/include/") ""))
 
              (substitute* "third_party/skia/include/gpu/vk/GrVkVulkan.h"
                (("include/third_party/vulkan/") ""))
@@ -622,23 +656,12 @@ from forcing GEXP-PROMISE."
                (substitute* "device/udev_linux/udev1_loader.cc"
                  (("libudev\\.so\\.1")
                   (string-append udev "/lib/libudev.so.1")))
-               (substitute*
-                   '("ui/ozone/platform/x11/gl_ozone_glx.cc"
-                     "ui/ozone/common/egl_util.cc"
-                     "ui/gl/init/gl_initializer_x11.cc"
-                     "third_party/angle/src/libANGLE/renderer/gl/glx/FunctionsGLX.cpp")
-                 (("libGL\\.so\\.1")
-                  (string-append mesa "/lib/libGL.so.1"))
-                 (("libEGL\\.so\\.1")
-                  (string-append mesa "/lib/libEGL.so.1"))
-                 (("libGLESv2\\.so\\.2")
-                  (string-append mesa "/lib/libGLESv2.so.2")))
                #t)))
          (add-before 'configure 'prepare-build-environment
            (lambda* (#:key inputs #:allow-other-keys)
 
              ;; Make sure the right build tools are used.
-             (setenv "AR" "ar") (setenv "NM" "nm")
+             (setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm")
              (setenv "CC" "clang") (setenv "CXX" "clang++")
 
              (setenv "CXXFLAGS"
@@ -649,14 +672,11 @@ from forcing GEXP-PROMISE."
                         ;; Clang plugins or newer versions.
                         "-Wno-unknown-warning-option")))
 
+             (setenv "CFLAGS" "-Wno-unknown-warning-option")
+
              ;; TODO: pre-compile instead. Avoids a race condition.
              (setenv "PYTHONDONTWRITEBYTECODE" "1")
 
-             (substitute*
-                 ;; From Debians 'system/node.patch'.
-                 "third_party/devtools-frontend/src/scripts/devtools_paths.py"
-               (("/usr/bin/nodejs") (which "node")))
-
              ;; XXX: How portable is this.
              (mkdir-p "third_party/node/linux/node-linux-x64")
              (symlink (string-append (assoc-ref inputs "node") "/bin")
@@ -708,7 +728,7 @@ from forcing GEXP-PROMISE."
                     (lib            (string-append out "/lib"))
                     (man            (string-append out "/share/man/man1"))
                     (applications   (string-append out "/share/applications"))
-                    (install-regexp (make-regexp "\\.(bin|pak)$"))
+                    (install-regexp (make-regexp "\\.(bin|pak|so)$"))
                     (locales        (string-append lib "/locales"))
                     (resources      (string-append lib "/resources"))
                     (preferences    (assoc-ref inputs "master-preferences"))
@@ -745,6 +765,10 @@ from forcing GEXP-PROMISE."
                  (symlink "../lib/chromium" exe)
                  (install-file "chromedriver" bin)
 
+                 (for-each (lambda (so)
+                             (install-file so (string-append lib "/swiftshader")))
+                           (find-files "swiftshader" "\\.so$"))
+
                  (wrap-program exe
                    ;; Avoid file manager crash.  See <https://bugs.gnu.org/26593>.
                    `("XDG_DATA_DIRS" ":" prefix (,(string-append gtk+ "/share")))))
@@ -761,14 +785,14 @@ from forcing GEXP-PROMISE."
                #t))))))
     (native-inputs
      `(("bison" ,bison)
-       ("clang" ,clang-9)
+       ("clang" ,clang-10)
        ("gn" ,gn)
        ("gperf" ,gperf)
+       ("ld-wrapper" ,(make-lld-wrapper lld))
        ("ninja" ,ninja)
        ("node" ,node)
        ("pkg-config" ,pkg-config)
        ("which" ,which)
-       ("yasm" ,yasm)
 
        ;; This file contains defaults for new user profiles.
        ("master-preferences" ,(local-file "aux-files/chromium/master-preferences.json"))
@@ -792,7 +816,7 @@ from forcing GEXP-PROMISE."
        ("glib" ,glib)
        ("gtk+" ,gtk+)
        ("harfbuzz" ,harfbuzz)
-       ("icu4c" ,icu4c)
+       ("icu4c" ,icu4c-67)
        ("jsoncpp" ,jsoncpp)
        ("lcms" ,lcms)
        ("libevent" ,libevent)
@@ -832,13 +856,15 @@ from forcing GEXP-PROMISE."
        ("speech-dispatcher" ,speech-dispatcher)
        ("udev" ,eudev)
        ("valgrind" ,valgrind)
-       ("vulkan-headers" ,vulkan-headers)))
+       ("vulkan-headers" ,vulkan-headers)
+       ("xcb-proto" ,xcb-proto/python2)))
 
     ;; Building Chromium takes ... a very long time.  On a single core, a busy
     ;; mid-end x86 system may need more than 24 hours to complete the build.
     (properties '((timeout . 144000)    ;40 hours
                   ;; The linking step may take more than an hour on some hardware.
-                  (max-silent-time . 7200)))
+                  (max-silent-time . 7200)
+                  (cpe-name . "chrome")))
 
     (home-page "https://github.com/Eloston/ungoogled-chromium")
     (description
@@ -867,19 +893,10 @@ disabled in order to protect the users privacy.")
        ,@(package-inputs ungoogled-chromium)))
     (arguments
      (substitute-keyword-arguments (package-arguments ungoogled-chromium)
-       ((#:phases phases)
-        `(modify-phases ,phases
-           (add-after 'unpack 'add-ozone-patch
-             (lambda _
-               ;; Add missing include statement required when using libstdc++,
-               ;; Clang and Ozone.  Fixed in M81.
-               (substitute* "ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc"
-                 (("#include \"base/logging\\.h" all)
-                  (string-append "#include <algorithm>\n" all)))
-               #t))))
        ((#:configure-flags flags)
         `(append (list "use_ozone=true"
                        "ozone_platform_wayland=true"
+                       "ozone_platform_x11=true"
                        "ozone_auto_platforms=false"
                        "ozone_platform=\"wayland\""
                        "use_xkbcommon=true"
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 262396be84..6b6d051fa8 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -47,8 +47,8 @@
   #:use-module (guix build-system gnu))
 
 (define-public cuirass
-  (let ((commit "3db603c1913fe14d260a44b05575a2ead3866b47")
-        (revision "32"))
+  (let ((commit "136a8295e4e09724eccc230c127fb880aa84b57d")
+        (revision "38"))
     (package
       (name "cuirass")
       (version (git-version "0.0.1" revision commit))
@@ -60,7 +60,7 @@
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1q69lgngsvpvcy6ww2a75wndjzymay5xaqmbj78znqmn7ck3fv44"))))
+                  "04fzc2q8cd02dnlrarzlxq0yfi90735s5f6dw7g2k63rbxlhcq8j"))))
       (build-system gnu-build-system)
       (arguments
        '(#:modules ((guix build utils)
@@ -120,7 +120,7 @@
                    `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))
                  #t))))))
       (inputs
-       `(("guile" ,guile-3.0)
+       `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
          ("guile-fibers" ,guile-fibers)
          ("guile-gcrypt" ,guile-gcrypt)
          ("guile-json" ,guile-json-4)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 9a1ceed66c..e66132ab40 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -151,7 +151,7 @@ designs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure/algo.generic.git")
+             (url "https://github.com/clojure/algo.generic")
              (commit (string-append "algo.generic-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -176,7 +176,7 @@ that can be implemented for any data type.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure/algo.monads.git")
+             (url "https://github.com/clojure/algo.monads")
              (commit (string-append "algo.monads-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -205,7 +205,7 @@ defining and using monads and useful monadic functions.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/clojure/core.match.git")
+                      (url "https://github.com/clojure/core.match")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -232,7 +232,7 @@ It supports Clojure 1.5.1 and later as well as ClojureScript.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Engelberg/instaparse.git")
+                      (url "https://github.com/Engelberg/instaparse")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -283,7 +283,7 @@ tree.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure/tools.macro.git")
+             (url "https://github.com/clojure/tools.macro")
              (commit (string-append "tools.macro-" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/cluster.scm b/gnu/packages/cluster.scm
index 296fe94856..5241ed1296 100644
--- a/gnu/packages/cluster.scm
+++ b/gnu/packages/cluster.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,6 +26,8 @@
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
@@ -33,6 +36,101 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tls))
 
+(define-public drbd-utils
+  (package
+    (name "drbd-utils")
+    (version "9.13.1")
+    (source (origin
+              (method url-fetch)
+              ;; Older releases are moved to /archive.  List it first because in
+              ;; practice this URL will be the most current (e.g. time-machine).
+              (uri (list (string-append "https://www.linbit.com/downloads/drbd"
+                                        "/utils/archive/drbd-utils-" version
+                                        ".tar.gz")
+                         (string-append "https://www.linbit.com/downloads/drbd"
+                                        "/utils/drbd-utils-" version ".tar.gz")))
+              (sha256
+               (base32
+                "0di55y0vzaw8jhcgz0fakww03h1gpg4a5q1zklxhjw3dwzjvysnk"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (substitute* "scripts/global_common.conf"
+                    ;; Do not participate in usage count survey by default.
+                    (("usage-count: yes")
+                     "usage-count: no"))
+                  (substitute* "scripts/Makefile.in"
+                    ;; Install the Pacemaker resource agents to the libdir,
+                    ;; regardless of what the OCF specification says...
+                    (("\\$\\(DESTDIR\\)/usr/lib")
+                     "$(DESTDIR)$(LIBDIR)"))
+                  (substitute* "configure"
+                    ;; Use a sensible default udev rules directory.
+                    (("default_udevdir=/lib/udev")
+                     "default_udevdir='${prefix}/lib/udev'"))
+                  #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '(;; Do not install sysv or systemd init scripts.
+                           "--with-initscripttype=none"
+                           ;; Use the pre-built manual pages present in release
+                           ;; tarballs instead of generating them from scratch.
+                           "--with-prebuiltman"
+                           ;; Disable support for DRBD 8.3 as it is only for
+                           ;; Linux-Libre versions < 3.8.  8.4 is the latest
+                           ;; kernel driver as of Linux 5.7.
+                           "--without-83support"
+                           "--sysconfdir=/etc"
+                           "--localstatedir=/var")
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-generated-file-shebangs 'patch-documentation
+           (lambda _
+             ;; The preceding phase misses some Makefiles with unusual file
+             ;; names, so we handle those here.
+             (for-each patch-makefile-SHELL (find-files "documentation/common"
+                                                        "^Makefile"))
+             #t))
+         (add-before 'configure 'use-absolute-/lib/drbd
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; Look for auxiliary executables below exec_prefix instead
+               ;; of assuming /lib/drbd (see TODO comment in the file).
+               (substitute* "user/v9/drbdtool_common.c"
+                 (("\"/lib/drbd\"")
+                  (string-append "\"" out "/lib/drbd\"")))
+               #t)))
+         (add-after 'configure 'adjust-installation-directories
+           (lambda _
+             ;; Do not attempt to create /etc or /var.
+             (substitute* "scripts/Makefile"
+               (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)")
+                "$(DESTDIR)$(prefix)$(sysconfdir)"))
+             (substitute* "user/v84/Makefile"
+               (("\\$\\(DESTDIR\\)\\$\\(localstatedir\\)")
+                "$(DESTDIR)$(prefix)$(localstatedir)")
+               (("\\$\\(DESTDIR\\)/lib/drbd")
+                "$(DESTDIR)$(prefix)/lib/drbd"))
+             (substitute* "user/v9/Makefile"
+               (("\\$\\(DESTDIR\\)\\$\\(localstatedir\\)")
+                "$(DESTDIR)$(prefix)$(localstatedir)")
+               (("\\$\\(DESTDIR\\)\\$\\(DRBD_LIB_DIR\\)")
+                "$(DESTDIR)$(prefix)$(DRBD_LIB_DIR)"))
+             #t)))))
+    (native-inputs
+     `(("clitest" ,clitest)
+       ("flex" ,flex)
+       ("udev" ,eudev)))          ;just to satisfy a configure check
+    (home-page "https://www.linbit.com/drbd/")
+    (synopsis "Replicate block devices between machines")
+    (description
+     "@acronym{DRBD, Distributed Replicated Block Device} is a software-based,
+shared-nothing, replicated storage solution mirroring the content of block
+devices (hard disks, partitions, logical volumes etc.) over any network
+connection.  This package contains the userland utilities.")
+    (license license:gpl2+)))
+
 (define-public keepalived
   (package
     (name "keepalived")
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 6334c97ef2..6229a04deb 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +48,8 @@
   #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages graphviz)
@@ -235,7 +238,7 @@ COCOMO model or user-provided parameters.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/AlDanial/cloc.git")
+             (url "https://github.com/AlDanial/cloc")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -419,7 +422,7 @@ expressions, and its ability to generate emacs-style TAGS files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cameronwhite/withershins.git")
+             (url "https://github.com/cameronwhite/withershins")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -479,7 +482,7 @@ stack traces.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/linux-test-project/lcov.git")
+                      (url "https://github.com/linux-test-project/lcov")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -522,6 +525,47 @@ textual @command{gcov} output to implement the following enhanced
 functionality such as HTML output.")
       (license license:gpl2+))))
 
+(define-public kcov
+  (package
+    (name "kcov")
+    (version "38")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/SimonKagstrom/kcov")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zqg21xwivi16csl6a5wby6679ny01bjaw4am3y4qcgjdyihifp8"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ;no test target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-/bin/bash-references
+           (lambda _
+             (substitute* (find-files "src" ".*\\.cc?$")
+               (("/bin/bash") (which "bash"))
+               (("/bin/sh") (which "sh")))
+             #t)))))
+    (inputs
+     `(("curl" ,curl)
+       ("elfutils" ,elfutils)
+       ("libelf" ,libelf)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("python" ,python)))
+    (home-page "https://github.com/SimonKagstrom/kcov")
+    (synopsis "Code coverage tester for compiled languages, Python and Bash")
+    (description "Kcov is a FreeBSD/Linux/OSX code coverage tester for compiled
+languages, Python and Bash.  Kcov was originally a fork of Bcov, but has since
+evolved to support a large feature set in addition to that of Bcov.
+
+Kcov uses DWARF debugging information for compiled programs to make it
+possible to collect coverage information without special compiler switches.")
+    (license license:gpl2+)))
+
 (define-public rtags
   (package
     (name "rtags")
@@ -530,7 +574,7 @@ functionality such as HTML output.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Andersbakken/rtags.git")
+             (url "https://github.com/Andersbakken/rtags")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (patches (search-patches "rtags-separate-rct.patch"))
@@ -582,7 +626,7 @@ importantly we give you proper follow-symbol and find-references support.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pagekite/Colormake.git")
+             (url "https://github.com/pagekite/Colormake")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -632,7 +676,7 @@ produce colored output.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lindenb/makefile2graph.git")
+             (url "https://github.com/lindenb/makefile2graph")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 5ab4df612a..d38005a5ab 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
+;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -140,7 +141,7 @@ pure Scheme to Tar and decompression in one easy step.")
     (name "gash-boot")
     (source (origin
               (inherit (package-source gash))
-              (modules '())))
+              (snippet #f)))            ;discard snippet for Guile 3.0 support
     (arguments
      `(#:implicit-inputs? #f
        #:tests? #f
@@ -170,6 +171,10 @@ pure Scheme to Tar and decompression in one easy step.")
   (package
     (inherit gash-utils)
     (name "gash-utils-boot")
+    (source (origin
+              (inherit (package-source gash-utils))
+              (patches '())
+              (snippet #f)))            ;discard snippet for Guile 3.0 support
     (arguments
      `(#:implicit-inputs? #f
        #:tests? #f
@@ -3818,14 +3823,17 @@ COREUTILS-FINAL vs. COREUTILS, etc."
        '(#:modules ((guix build union))
          #:builder (begin
                      (use-modules (ice-9 match)
+                                  (srfi srfi-1)
                                   (srfi srfi-26)
                                   (guix build union))
 
                      (let ((out (assoc-ref %outputs "out")))
-
-                       (match %build-inputs
-                         (((names . directories) ...)
-                          (union-build out directories)))
+                       (union-build out
+                                    (filter-map (match-lambda
+                                                  (("libc-debug" . _) #f)
+                                                  (("libc-static" . _) #f)
+                                                  ((_ . directory) directory))
+                                                %build-inputs))
 
                        (union-build (assoc-ref %outputs "debug")
                                     (list (assoc-ref %build-inputs
@@ -3884,6 +3892,14 @@ binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
 (define-public gcc-toolchain-10
   (make-gcc-toolchain gcc-10))
 
+(define-public gdc-toolchain-10
+  (package (inherit (make-gcc-toolchain gdc-10))
+    (synopsis "Complete GCC tool chain for D lang development")
+    (description "This package provides a complete GCC tool chain for
+D lang development to be installed in user profiles.  This includes
+gdc, as well as libc (headers and binaries, plus debugging symbols
+in the @code{debug} output), and binutils.")))
+
 ;; Provide the Fortran toolchain package only for the version of gfortran that
 ;; is used by Guix internally to build Fortran libraries, because combining
 ;; code compiled with different versions can cause problems.
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 8e7578d94d..27c72065c8 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -380,40 +380,63 @@ decompression.")
     (home-page "https://web.archive.org/web/20180801004107/http://www.bzip.org/")))
 
 (define-public lbzip2
-  (package
-    (name "lbzip2")
-    (version "2.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://archive.lbzip2.org/lbzip2-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1sahaqc5bw4i0iyri05syfza4ncf5cml89an033fspn97klmxis6"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 (substitute* (find-files "lib" "\\.c$")
-                   (("#if defined _IO_ftrylockfile")
-                    "#if defined _IO_EOF_SEEN"))
-                 (substitute* "lib/stdio-impl.h"
-                   (("^/\\* BSD stdio derived implementations")
-                    (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n"
-                                   "# define _IO_IN_BACKUP 0x100\n"
-                                   "#endif\n\n"
-                                   "/* BSD stdio derived implementations")))
-                 #t))))
-    (build-system gnu-build-system)
-    (synopsis "Parallel bzip2 compression utility")
-    (description
-     "lbzip2 is a multi-threaded compression utility with support for the
+  ;; The last 2.5 release is 4 years behind the newest commit (from 2018) and
+  ;; may create files that can't even be decompressed by newer bzip2 versions.
+  (let ((commit "b6dc48a7b9bfe6b340ed1f6d72133608ad57144b")
+        (revision "0"))
+    (package
+      (name "lbzip2")
+      (version (git-version "2.5" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kjn/lbzip2")
+               (commit commit)))
+         (sha256
+          (base32 "140xp00dmjsr6c3dwb4dwf0pzlgf159igri321inbinsjiclkngy"))
+         (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'unpack-gnulib
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((gnulib (assoc-ref inputs "gnulib")))
+                 (copy-recursively gnulib "lib")
+                 (setenv "PATH" (string-append "lib:" (getenv "PATH")))
+                 #t)))
+           (delete 'bootstrap)          ; gnulib still has unpatched shebangs
+           (add-after 'patch-source-shebangs 'bootstrap
+             (lambda _
+               (invoke "sh" "build-aux/autogen.sh")
+               #t)))))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("gnulib"
+          ,(let ((commit "2d431ac35c4943a3655c07ba91870d2323321b43"))
+             (origin
+               (method git-fetch)
+               (uri (git-reference
+                     (url "git://git.savannah.gnu.org/gnulib.git")
+                     (commit commit)))
+               (sha256
+                (base32 "1f0xr4w89bqvhzsfcflcagdixidrk41k00k7kpr91w9lazfis4kf"))
+               (file-name (git-file-name "gnulib" commit)))))
+         ("perl" ,perl)))
+      (synopsis "Parallel bzip2 compression utility")
+      (description
+       "lbzip2 is a multi-threaded compression utility with support for the
 bzip2 compressed file format.  lbzip2 can process standard bz2 files in
 parallel.  It uses POSIX threading model (pthreads), which allows it to take
 full advantage of symmetric multiprocessing (SMP) systems.  It has been proven
 to scale linearly, even to over one hundred processor cores.  lbzip2 is fully
 compatible with bzip2 – both at file format and command line level.")
-    (home-page "http://www.lbzip2.org/")
-    (license license:gpl3+)))
+      ;; lbzip2.org now looks fishy.  There is no source code to be found.
+      ;; Reported upstream: <https://github.com/kjn/lbzip2/issues/26>.
+      (home-page "https://github.com/kjn/lbzip2")
+      (license license:gpl3+))))
 
 (define-public pbzip2
   (package
@@ -679,7 +702,7 @@ This package is mostly for compatibility and historical interest.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/raboof/sfArkLib.git")
+                     (url "https://github.com/raboof/sfArkLib")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -715,7 +738,7 @@ with the sfArk algorithm.")
                 ;; commit at this time.
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/raboof/sfarkxtc.git")
+                      (url "https://github.com/raboof/sfarkxtc")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1004,7 +1027,7 @@ smaller than those produced by @code{Xdelta}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jmacd/xdelta.git")
+             (url "https://github.com/jmacd/xdelta")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1078,7 +1101,7 @@ well as bzip2.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/google/snappy.git")
+              (url "https://github.com/google/snappy")
               (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1619,14 +1642,14 @@ recreates the stored directory structure by default.")
 (define-public libzip
   (package
     (name "libzip")
-    (version "1.6.1")
+    (version "1.7.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://libzip.org/download/libzip-" version ".tar.xz"))
               (sha256
                (base32
-                "0h9nsgkw0dk4srsvmz6xy6f9l4h815xn07j8h40l8gqvcxxaqpbh"))))
+                "0ck1dk7zn5qzpgxklg0r26nfsf04xb6c46gsig060hkvvgzp6156"))))
     (native-inputs
      `(("perl" ,perl)))
     (inputs
@@ -1823,7 +1846,7 @@ non-Windows systems without running the actual installer using wine.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/google/brotli.git")
+             (url "https://github.com/google/brotli")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1954,7 +1977,7 @@ download times, and other distribution and storage costs.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/stachenov/quazip.git")
+                    (url "https://github.com/stachenov/quazip")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1987,20 +2010,26 @@ reading from and writing to ZIP archives. ")
 (define-public zutils
   (package
     (name "zutils")
-    ;; Check and remove the lint-hidden-cve property when updating.
-    (version "1.8")
+    (version "1.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://savannah/zutils/zutils-" version ".tar.lz"))
        (sha256
-        (base32 "0dx35mv78fgqgz6sszs05ng8ipz2xy09ry9vpmka2rmy08b7x907"))))
+        (base32 "0y2wm8wqr1wi1b1fv45dn50njv4q81p6ifx0279ji1bq56qkrn2r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
        (list "--sysconfdir=/etc")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'check 'disable-failing-tests
+           ;; XXX https://lists.nongnu.org/archive/html/zutils-bug/2020-07/msg00005.html
+           (lambda _
+             (substitute* "testsuite/check.sh"
+               (("\"\\$\\{ZGREP\\}\" -N -L \"GNU\"") "true")
+               (("\"\\$\\{ZGREP\\}\" -N -L \"nx_pattern\"") "false"))
+             #t))
          (replace 'install
           (lambda* (#:key make-flags outputs #:allow-other-keys)
             (apply invoke "make" "install"
@@ -2010,7 +2039,6 @@ reading from and writing to ZIP archives. ")
     (native-inputs
      ;; Needed to extract the source tarball and run the test suite.
      `(("lzip" ,lzip)))
-    (properties `((lint-hidden-cve . ("CVE-2018-1000637"))))
     (home-page "https://www.nongnu.org/zutils/zutils.html")
     (synopsis "Utilities that transparently operate on compressed files")
     (description
@@ -2114,7 +2142,7 @@ file compression algorithm.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ib/xarchiver.git")
+             (url "https://github.com/ib/xarchiver")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2144,7 +2172,7 @@ archiver is not installed.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/AQUAOSOTech/tarsplitter.git")
+                    (url "https://github.com/AQUAOSOTech/tarsplitter")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2178,7 +2206,7 @@ chunks.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Blosc/c-blosc.git")
+                    (url "https://github.com/Blosc/c-blosc")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm
index 9183348819..940fc83143 100644
--- a/gnu/packages/compton.scm
+++ b/gnu/packages/compton.scm
@@ -50,7 +50,7 @@
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/chjj/compton.git")
+               (url "https://github.com/chjj/compton")
                (commit (string-append "v" upstream-version))))
          (sha256
           (base32
@@ -119,7 +119,7 @@ performance).
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/yshui/picom.git")
+             (url "https://github.com/yshui/picom")
              (commit (string-append "v" version))))
        (sha256
         (base32
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index 13243578b1..166e66c09e 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -51,7 +51,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/coq/coq.git")
+             (url "https://github.com/coq/coq")
              (commit (string-append "V" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -329,7 +329,7 @@ assistant.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/math-comp/math-comp.git")
+             (url "https://github.com/math-comp/math-comp")
              (commit (string-append "mathcomp-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -423,7 +423,7 @@ theorems between the two libraries.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/coq/bignums.git")
+                     (url "https://github.com/coq/bignums")
                      (commit (string-append "V" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -552,7 +552,7 @@ uses Ltac to synthesize the substitution operation.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mattam82/Coq-Equations.git")
+                    (url "https://github.com/mattam82/Coq-Equations")
                     (commit (string-append "v" version "-8.10"))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index a1d82ccbc1..8b4b99d495 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -122,7 +123,7 @@ operating system functions.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/aseba-community/dashel.git")
+             (url "https://github.com/aseba-community/dashel")
              (commit version)))
        (sha256
         (base32 "0anks2l2i2qp0wlzqck1qgpq15a3l6dg8lw2h8s4nsj7f61lffwy"))
@@ -147,7 +148,7 @@ combination of these streams.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/QuantStack/xsimd.git")
+             (url "https://github.com/QuantStack/xsimd")
              (commit version)))
        (sha256
         (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
@@ -167,6 +168,37 @@ accelerated implementation of common mathematical functions operating on
 batches.")
     (license license:bsd-3)))
 
+(define-public chaiscript
+  (package
+    (name "chaiscript")
+    (version "6.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ChaiScript/ChaiScript")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0i1c88rn1wwz8nf3dpapcdkk4w623m3nksfy5yjai10k9irkzy3c"))))
+    (build-system cmake-build-system)
+    (home-page "https://chaiscript.com/")
+    (synopsis "Embedded scripting language designed for C++")
+    (description
+     "ChaiScript is one of the only embedded scripting language designed from
+the ground up to directly target C++ and take advantage of modern C++
+development techniques.  Being a native C++ application, it has some advantages
+over existing embedded scripting languages:
+
+@enumerate
+@item Uses a header-only approach, which makes it easy to integrate with
+existing projects.
+@item Maintains type safety between your C++ application and the user scripts.
+@item Supports a variety of C++ techniques including callbacks, overloaded
+functions, class methods, and stl containers.
+@end enumerate\n")
+    (license license:bsd-3)))
+
 (define-public fifo-map
   (let* ((commit "0dfbf5dacbb15a32c43f912a7e66a54aae39d0f9")
          (revision "0")
@@ -268,7 +300,7 @@ intuitive syntax and trivial integration.")
               (method git-fetch)
               (uri
                (git-reference
-                (url "https://github.com/QuantStack/xtl.git")
+                (url "https://github.com/QuantStack/xtl")
                 (commit version)))
               (sha256
                (base32
@@ -328,7 +360,7 @@ maintained anymore.")
 (define-public gperftools
   (package
     (name "gperftools")
-    (version "2.7")
+    (version "2.8")
     (source
      (origin
        (method git-fetch)
@@ -336,14 +368,14 @@ maintained anymore.")
              (url "https://github.com/gperftools/gperftools")
              (commit (string-append "gperftools-" version))))
        (sha256
-        (base32 "0amvwrzn5qc0b0jpxpy5g6zkmj97zjh4hhjrd130hsg2lwwcwhy1"))
+        (base32 "1rnc53kaxlljgbpsff906vdsry9jl9gcvcnmxgkprwzxq1wipyd0"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
-       ;; For tests:
+       ;; For tests.
        ("perl" ,perl)))
     (home-page "https://github.com/gperftools/gperftools")
     (synopsis "Multi-threaded malloc() and performance analysis tools for C++")
@@ -404,7 +436,7 @@ and make @code{cpplint} usable in wider contexts.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Stiffstream/sobjectizer.git")
+             (url "https://github.com/Stiffstream/sobjectizer")
              (commit (string-append "v." version))))
        (sha256
         (base32 "0jfai7sqxnnjkms38krm7mssj5l79nb3pllkbyj4j581a7l5j6l5"))
@@ -435,7 +467,7 @@ development of concurrent and multithreaded applications in C++.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mobius3/tweeny.git")
+             (url "https://github.com/mobius3/tweeny")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -462,7 +494,7 @@ point and then, after each tween step, plugging back the result.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/abseil/abseil-cpp.git")
+                    (url "https://github.com/abseil/abseil-cpp")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -506,7 +538,7 @@ Google's C++ code base.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/taocpp/PEGTL.git")
+                    (url "https://github.com/taocpp/PEGTL")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index f3c90b073e..5ede11a4e3 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2020 Danjela Lura <danielaluraa@gmail.com>
 ;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
 ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com>
+;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -107,14 +108,14 @@ degree elevation and curve fitting.")
 (define-public r-v8
   (package
     (name "r-v8")
-    (version "3.1.0")
+    (version "3.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "V8" version))
        (sha256
         (base32
-         "0xdljralgwyivdhx2a7kqf3yv4ijl4rdrz2p7p59lj2x5d2qyanf"))))
+         "0z0dwa538lkggawiwrlplz698xznzlgv9fwhdslm7g7gdxyf0xgm"))))
     (properties `((upstream-name . "V8")))
     (build-system r-build-system)
     (arguments
@@ -193,6 +194,26 @@ programming packages such as @code{knitr} and @code{rmarkdown}.")
 the system clipboards.")
     (license license:gpl3)))
 
+(define-public r-zoo
+  (package
+    (name "r-zoo")
+    (version "1.8-8")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "zoo" version))
+              (sha256
+               (base32
+                "1rrw431jwaxd9xljp73f15rhcxvwc0xlyrmr0ghi5fj7a03c932f"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-lattice" ,r-lattice)))
+    (home-page "http://zoo.R-Forge.R-project.org/")
+    (synopsis "S3 infrastructure for regular and irregular time series")
+    (description "This package contains an S3 class with methods for totally
+ordered indexed observations.  It is particularly aimed at irregular time
+series of numeric vectors/matrices and factors.")
+    (license license:gpl2+)))
+
 (define-public r-ggpmisc
   (package
     (name "r-ggpmisc")
@@ -802,14 +823,16 @@ particularly easy to create complete web applications using httpuv alone.")
 (define-public r-jsonlite
   (package
     (name "r-jsonlite")
-    (version "1.6.1")
+    (version "1.7.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "jsonlite" version))
               (sha256
                (base32
-                "0xrki07wc17bkmhz0h7jay784j1sls2i9bf1mfpj6yl59791v4kl"))))
+                "1izfrk5yahsz6s69wanfspn72qdffjglbr5305akj72ig9fnladq"))))
     (build-system r-build-system)
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://arxiv.org/abs/1403.2805")
     (synopsis "Robust, high performance JSON parser and generator for R")
     (description
@@ -850,17 +873,17 @@ directory.")
 (define-public r-htmltools
   (package
     (name "r-htmltools")
-    (version "0.4.0")
+    (version "0.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "htmltools" version))
               (sha256
                (base32
-                "06l17d8jkf438yk2mchpsp4j90bynnapz3nabh5vkcc324p5a62v"))))
+                "07fjznax5sin563ddnzlb7iwc8b39wzf7ymjn66pbmxgskijq2pz"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-digest" ,r-digest)
-       ("r-rcpp" ,r-rcpp)
+     `(("r-base64enc" ,r-base64enc)
+       ("r-digest" ,r-digest)
        ("r-rlang" ,r-rlang)))
     (home-page "https://cran.r-project.org/web/packages/htmltools")
     (synopsis "R tools for HTML")
@@ -894,14 +917,13 @@ applications.")
 (define-public r-htmltable
   (package
     (name "r-htmltable")
-    (version "1.13.3")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "htmlTable" version))
        (sha256
-        (base32
-         "0g9r156k9yl1f092hfw3b9wjx11akf0shbi3x0d0mvpnflvc8nfl"))))
+        (base32 "0ma52kajzxfg9w811d6ldhghzn9xhyr8bh7k5v265k82bzx7rac6"))))
     (properties `((upstream-name . "htmlTable")))
     (build-system r-build-system)
     (propagated-inputs
@@ -912,6 +934,8 @@ applications.")
        ("r-magrittr" ,r-magrittr)
        ("r-rstudioapi" ,r-rstudioapi)
        ("r-stringr" ,r-stringr)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "http://gforge.se/packages/")
     (synopsis "Advanced tables for Markdown/HTML")
     (description
@@ -1040,7 +1064,7 @@ data structures in C++.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rstudio/shiny.git")
+             (url "https://github.com/rstudio/shiny")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1414,7 +1438,7 @@ R objects into the JSON format that the d3.js library expects.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/fbreitwieser/sankeyD3.git")
+               (url "https://github.com/fbreitwieser/sankeyD3")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1981,13 +2005,13 @@ you to rapidly iterate while developing a package.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.4.6")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "00mk23zmrqn1c4mk9d6csjcbnl12wd7yicjk2ikmw5dyvdfngbs5"))))
+        (base32 "012wbj446k1wz6bp6bpf6h77ypvcsw69xvnax6qf6vyc7dj2qimq"))))
     (build-system r-build-system)
     (home-page "http://www.rcpp.org")
     (synopsis "Seamless R and C++ integration")
@@ -2071,13 +2095,13 @@ is provided.")
 (define-public r-calibrate
   (package
     (name "r-calibrate")
-    (version "1.7.6")
+    (version "1.7.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "calibrate" version))
        (sha256
-        (base32 "0h91mxf4fy3xk4mavf6cdllglyq5fra8zpz7yvc63n5jigpy2lhd"))))
+        (base32 "19kgrnsyq67iqv1biyssqi30a6v2836ql20nabpy2m692ns0jfvi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)))
@@ -2237,14 +2261,14 @@ compare different dendrograms to one another.")
 (define-public r-getoptlong
   (package
     (name "r-getoptlong")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "GetoptLong" version))
        (sha256
         (base32
-         "1fswgy5j4xaipqs7nk7nzrl66vrchhxrk0w7hcsbyij3sxgn3z9j"))))
+         "1p89v2qzqfxyrmqzkv245716n9i4bllnq77a6gw811mgdhxbd51l"))))
     (properties `((upstream-name . "GetoptLong")))
     (build-system r-build-system)
     (inputs
@@ -2323,7 +2347,7 @@ in main memory.")
      `(("r-bit" ,r-bit)
        ("r-fastmatch" ,r-fastmatch)
        ("r-ff" ,r-ff)))
-    (home-page "http://github.com/edwindj/ffbase")
+    (home-page "https://github.com/edwindj/ffbase")
     (synopsis "Basic statistical functions for package 'ff'")
     (description
      "This package extends the out of memory vectors of @code{ff} with
@@ -3263,14 +3287,14 @@ multivariate and 5 functional classification problems are included.")
 (define-public r-gower
   (package
     (name "r-gower")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gower" version))
        (sha256
         (base32
-         "007ivwn1nagpi26qq8iih1c2l61c53glvv60n90hi341ry8vwgxg"))))
+         "0c9n921wn4hhlvjq96r4nkk96s5788376cbldr7y7bwz348200iz"))))
     (build-system r-build-system)
     (home-page "https://github.com/markvanderloo/gower")
     (synopsis "Gower's distance")
@@ -3387,22 +3411,23 @@ by base R methods related to model fitting.")
 (define-public r-broom
   (package
     (name "r-broom")
-    (version "0.5.6")
+    (version "0.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "broom" version))
        (sha256
         (base32
-         "0da3jsb02xckrk6alznicn6l5lnyvdhc64qklyarnd77miqgc1hb"))))
+         "0bq8w1ckrladzck2g0mgiyjdrzi06kbqalk5q3pfvj1607fdv3d5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-backports" ,r-backports)
        ("r-dplyr" ,r-dplyr)
+       ("r-ellipsis" ,r-ellipsis)
        ("r-generics" ,r-generics)
-       ("r-nlme" ,r-nlme)
+       ("r-glue" ,r-glue)
        ("r-purrr" ,r-purrr)
-       ("r-reshape2" ,r-reshape2)
+       ("r-rlang" ,r-rlang)
        ("r-stringr" ,r-stringr)
        ("r-tibble" ,r-tibble)
        ("r-tidyr" ,r-tidyr)))
@@ -3424,14 +3449,14 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.1.12")
+    (version "0.1.13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "0hbnrqgzazg401nk5fhljif7wnspicki179qf215r34y9wm8g3xj"))))
+         "1d3pmprkiz60w7lq5q4lpl5zlwf7fg7qghf7sq6xs1294w54gzbs"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dplyr" ,r-dplyr)
@@ -3439,6 +3464,7 @@ provides a one-row summary of model-level statistics.")
        ("r-glue" ,r-glue)
        ("r-gower" ,r-gower)
        ("r-ipred" ,r-ipred)
+       ("r-lifecycle" ,r-lifecycle)
        ("r-lubridate" ,r-lubridate)
        ("r-magrittr" ,r-magrittr)
        ("r-matrix" ,r-matrix)
@@ -3504,7 +3530,7 @@ for certain use cases.")
        ("r-scales" ,r-scales)))
     (native-inputs
      `(("r-knitr" ,r-knitr))) ; for vignettes
-    (home-page "http://github.com/slowkow/ggrepel")
+    (home-page "https://github.com/slowkow/ggrepel")
     (synopsis "Repulsive text and label geometries for ggplot2")
     (description
      "This package provides text and label geometries for ggplot2 that help to
@@ -3684,18 +3710,19 @@ analysis of multiply imputed data sets.")
 (define-public r-mice
   (package
     (name "r-mice")
-    (version "3.9.0")
+    (version "3.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mice" version))
        (sha256
         (base32
-         "1wycbc2iqp68gfzvqx1gsn5n1k1h4bg79dy8m5msqf226hy83ncn"))))
+         "0w81shmd2crpdlh66pnm27v4n06aayganq6kkalirln4c0ci2nyi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-broom" ,r-broom)
        ("r-dplyr" ,r-dplyr)
+       ("r-generics" ,r-generics)
        ("r-lattice" ,r-lattice)
        ("r-rcpp" ,r-rcpp)
        ("r-tidyr" ,r-tidyr)))
@@ -4185,14 +4212,13 @@ constants, and control debugging of packages via environment variables.")
 (define-public r-processx
   (package
     (name "r-processx")
-    (version "3.4.2")
+    (version "3.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "processx" version))
        (sha256
-        (base32
-         "02awswxq6wh3rl99dncw5n6c1xmd0v81xcdp2dfyi6vm6b3gz84l"))))
+        (base32 "07dhzijqnj2zkm3qrk4ppsv8wscn8ysdsjbidlg9zrbj1wcg4izj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ps" ,r-ps)
@@ -4333,13 +4359,13 @@ iVAT).")
 (define-public r-xfun
   (package
     (name "r-xfun")
-    (version "0.14")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "xfun" version))
        (sha256
-        (base32 "183f6d7lr116f90j37a8hfr6ni1x9xkqj79s8lnky1jwr6zj3ha9"))))
+        (base32 "1fdipwrl45bznb17da4169ria5jax0f2649yj5accw6qr6wsc8bj"))))
     (build-system r-build-system)
     ;; knitr itself depends on xfun
     #;
@@ -4435,19 +4461,21 @@ to variables on the left-hand side of the assignment.")
 (define-public r-pillar
   (package
     (name "r-pillar")
-    (version "1.4.4")
+    (version "1.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pillar" version))
        (sha256
         (base32
-         "0viymfp1rkr7ig3m1b016r75hk8qbr9cqsjc6c20ks9pm5svmsp1"))))
+         "01ck8ziqzjc9ibbj3g88siz1iw263dgl8jx6ryw2v50rjrr3y7fj"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cli" ,r-cli)
        ("r-crayon" ,r-crayon)
+       ("r-ellipsis" ,r-ellipsis)
        ("r-fansi" ,r-fansi)
+       ("r-lifecycle" ,r-lifecycle)
        ("r-rlang" ,r-rlang)
        ("r-utf8" ,r-utf8)
        ("r-vctrs" ,r-vctrs)))
@@ -4481,14 +4509,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.23")
+    (version "0.24")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "084jd1m2i3zyxxlls7skq3jxv3b5cgps3yk60q1yzyy9sxslab7m"))))
+         "0mc9i7r45s5kagcfig508dbyf6jir6q4ghq9cxqvnpxp6ymh4qpr"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -4924,17 +4952,19 @@ applied econometric analysis.")
 (define-public r-cubature
   (package
     (name "r-cubature")
-    (version "2.0.4")
+    (version "2.0.4.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cubature" version))
        (sha256
         (base32
-         "0jpyq8j7x06dpiz29w48av879ygldzgls9z810192hsymkmfaz6r"))))
+         "006la36gxdikvmdnq4ny7ik7r30id4z3b3fqsl57dpqwkpsbsgrq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/bnaras/cubature")
     (synopsis "Adaptive multivariate integration over hypercubes")
     (description
@@ -5315,14 +5345,14 @@ systems.")
 (define-public r-radiant-data
   (package
     (name "r-radiant-data")
-    (version "1.3.4")
+    (version "1.3.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "radiant.data" version))
        (sha256
         (base32
-         "19sjjb49inrfl7jzq4zpwhdslni0zrp30bl58pisin29ka3ylpzs"))
+         "19gbc7k1hsi6hg6ka8i70wlw8j9fs9wkpn36761lzbcyam6vgqn0"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -6012,14 +6042,14 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.")
 (define-public r-renv
   (package
     (name "r-renv")
-    (version "0.10.0")
+    (version "0.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "renv" version))
        (sha256
         (base32
-         "0yy24kq60dh9n68my132xhhkbnbs7q91z55b1yd6ymr7rxj32mif"))))
+         "0dd63jr240pg95a6p058s5kcclfmscihdy89v212msihmwvylwh3"))))
     (properties `((upstream-name . "renv")))
     (build-system r-build-system)
     (native-inputs
@@ -6229,14 +6259,14 @@ and adds the annotation to the plot.")
 (define-public r-rstatix
   (package
     (name "r-rstatix")
-    (version "0.5.0")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rstatix" version))
        (sha256
         (base32
-         "0ikbjmr58ah39rlwyiix50kl3yk9j7jngsvl6hh973392qdvmch6"))))
+         "0nwwvxwr4z3j4n9z8cnvwghppc836g47n0ia98chk272qwh8xcpb"))))
     (properties `((upstream-name . "rstatix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6244,6 +6274,7 @@ and adds the annotation to the plot.")
        ("r-car" ,r-car)
        ("r-corrplot" ,r-corrplot)
        ("r-dplyr" ,r-dplyr)
+       ("r-generics" ,r-generics)
        ("r-magrittr" ,r-magrittr)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
@@ -6265,14 +6296,14 @@ matrix.")
 (define-public r-ggpubr
   (package
     (name "r-ggpubr")
-    (version "0.3.0")
+    (version "0.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggpubr" version))
        (sha256
         (base32
-         "1dly74cnn8iq7vsgmcz0czszdsmg5cgzm4w3s0v30k4psmmzqbxq"))))
+         "0x86lmghr25k8w90yrp360dn42dhp5cjvjpdiv2s2gxfn701xcmb"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cowplot" ,r-cowplot)
@@ -6579,14 +6610,14 @@ hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.")
 (define-public r-rdpack
   (package
     (name "r-rdpack")
-    (version "0.11-1")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rdpack" version))
        (sha256
         (base32
-         "080y15p2hl4jsq91ak2f1y2kx1iqq5c5wzyx3zyhjwp01cahy0jq"))))
+         "069yh9h57z3gjl5ih1r6wyiwmgmfzkpjxrpxg8mfq7y6zr1mynsw"))))
     (properties `((upstream-name . "Rdpack")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6606,14 +6637,14 @@ references and Rd files.")
 (define-public r-officer
   (package
     (name "r-officer")
-    (version "0.3.11")
+    (version "0.3.12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "officer" version))
        (sha256
         (base32
-         "0nwasra2kb5wplcim7n57kynwhyg4vsk3fz42mbpm0hig1lzl9pp"))))
+         "1wk9h6bz77s5j6lgksmlrmi1vyaa35c766gq6hgb1dp0dz0x342x"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magrittr" ,r-magrittr)
@@ -6718,14 +6749,14 @@ there are functions for discretizing continuous random variables.")
 (define-public r-abn
   (package
     (name "r-abn")
-    (version "2.2.1")
+    (version "2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "abn" version))
        (sha256
         (base32
-         "11nbg6dwvbj0ac7qvr203vzjnw5zc1a8cibb9l6rzzr7yfg16xzc"))))
+         "1wwnzv5yir8cyl0f0arxagbsg9ndgs0799m42wbjkpr8cg9sfdhc"))))
     (build-system r-build-system)
     (inputs
      `(("gsl" ,gsl)))
@@ -6901,14 +6932,14 @@ information are missing.")
 (define-public r-sjlabelled
   (package
     (name "r-sjlabelled")
-    (version "1.1.5")
+    (version "1.1.6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjlabelled" version))
        (sha256
         (base32
-         "0grskmd7wrw31lkf85z6xz0bv246m6grvqkijvqi4q8zkl6p5vb3"))))
+         "0xvb0yi7c7wiiqjbnbisyb2cjinm11i373jacfv1yzyc9cznzyzq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-insight" ,r-insight)))
@@ -7251,19 +7282,21 @@ the work.")
 (define-public r-doby
   (package
     (name "r-doby")
-    (version "4.6.6")
+    (version "4.6.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "doBy" version))
        (sha256
         (base32
-         "0wz1vmsf1545r1m42q88s675ncwvm8figjn7kzbngjn9aqck9qbq"))))
+         "16vg1aa272sfzyqxfb63fyis9hv6g5m3nmxxa6mk1gy0irqnl3jk"))))
     (properties `((upstream-name . "doBy")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-broom" ,r-broom)
        ("r-deriv" ,r-deriv)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
@@ -7732,14 +7765,14 @@ used to teach mathematics, statistics, computation and modeling.")
 (define-public r-raster
   (package
     (name "r-raster")
-    (version "3.1-5")
+    (version "3.3-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "raster" version))
        (sha256
         (base32
-         "010sq00ijpmwac280ip9rryw0pxk0al8g675v2lc9rdrbgaj4rnv"))))
+         "144mva2dx7ffkq7z0fixr4z76ci1s4lizlyv5r7v07fd4nzg5hby"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
@@ -8302,14 +8335,14 @@ multiple-imputation datasets.")
 (define-public r-magick
   (package
     (name "r-magick")
-    (version "2.3")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "magick" version))
        (sha256
         (base32
-         "182b4wahkq9q0scn99mql4vm9fp92nja0r5yizc4x9rjl492ahd8"))))
+         "1y1p2blkg0h6061ay7mdwssxbswgrc25raffp6d8d9cqhdmsa72s"))))
     (build-system r-build-system)
     (inputs
      `(("imagemagick" ,imagemagick)
@@ -8319,7 +8352,8 @@ multiple-imputation datasets.")
        ("r-magrittr" ,r-magrittr)
        ("r-rcpp" ,r-rcpp)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("r-knitr" ,r-knitr)))
     (home-page "https://github.com/ropensci/magick")
     (synopsis "Advanced graphics and image-processing in R")
     (description
@@ -8743,14 +8777,14 @@ Hothorn, Westfall, 2010, CRC Press).")
 (define-public r-emmeans
   (package
     (name "r-emmeans")
-    (version "1.4.7")
+    (version "1.4.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "emmeans" version))
        (sha256
         (base32
-         "0jh7l1rzsb2ihbnh4r4388kwm629z17rcapvdws1hnkklhr8j74k"))))
+         "0h884qn4cip03w0h5psrz5y9zkm2wppklrhdz2chm2xk13zqnq5k"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-estimability" ,r-estimability)
@@ -8948,14 +8982,14 @@ models.")
 (define-public r-glmmtmb
   (package
     (name "r-glmmtmb")
-    (version "1.0.1")
+    (version "1.0.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glmmTMB" version))
        (sha256
         (base32
-         "0sdx1q7wc7895xh8747r4p0wkij0xjgn5ij62ipi9423zd0sr0mm"))))
+         "1a35hxcxz1cdm3zd5s7fyjaw2qs00hkacgr7h9130amygc1262ab"))))
     (properties `((upstream-name . "glmmTMB")))
     (build-system r-build-system)
     (propagated-inputs
@@ -8980,14 +9014,14 @@ differentiation.")
 (define-public r-bayestestr
   (package
     (name "r-bayestestr")
-    (version "0.6.0")
+    (version "0.7.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "bayestestR" version))
        (sha256
         (base32
-         "0s7wdmk8avgaqk2b7fcf4bsh13isrkl1q4y7z2y8jhdagxxxnzd1"))))
+         "1nrycyzznzrlwnfwk1w3ixdq0bj82nri9kb2qiaiw8wwzwrsl1hd"))))
     (properties `((upstream-name . "bayestestR")))
     (build-system r-build-system)
     (propagated-inputs
@@ -9034,14 +9068,14 @@ effects models and Bayesian models.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "0.14.3")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "06p80bgjhjknzlb4vs4n41i9n9vv5agncakl9f92zkaahgyzd6sd"))))
+         "1bqvbhw5la3cj3v0gwava117ff24b1p450azln402gsxgfl3vw7r"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-insight" ,r-insight)
@@ -9180,14 +9214,14 @@ back to file after modifications.")
 (define-public r-fs
   (package
     (name "r-fs")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fs" version))
        (sha256
         (base32
-         "0kksig9pk8aid9l6r250na8z8j9919jvs20lj0s6m9bcybgh74df"))))
+         "09rpazjba9jy448j6rq989fw3wv3xhng7fn8p8gr22gyx0n0y1zr"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -9531,20 +9565,18 @@ and related methods.")
 (define-public r-rcppgsl
   (package
     (name "r-rcppgsl")
-    (version "0.3.7")
+    (version "0.3.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppGSL" version))
        (sha256
-        (base32 "0cnw2k7cfqrm79r6j283aybflxig80x4n4rjkfp2317wf10mrsa5"))))
+        (base32 "17nlayy6gvwb3v6l5aiqm84i75yf4dfi3zclxrgpqwf3j9v09yvz"))))
     (properties `((upstream-name . "RcppGSL")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)
        ("gsl" ,gsl)))
-    (native-inputs
-     `(("r-knitr" ,r-knitr)))           ; for vignettes
     (home-page "https://cran.r-project.org/web/packages/RcppGSL/")
     (synopsis "Rcpp integration for GSL vectors and matrices")
     (description
@@ -9749,14 +9781,14 @@ package provides a minimal R interface by relying on the Rcpp package.")
 (define-public r-rcppparallel
   (package
     (name "r-rcppparallel")
-    (version "5.0.1")
+    (version "5.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "RcppParallel" version))
        (sha256
         (base32
-         "029yyjnixggqmddazwxh1wqid1h7xpwpi4sgixyhbb4kmvqlwfkd"))))
+         "10bg4fw38m64dhy543rwq2nnjjc9y24iggk343xslrb3ij8018lc"))))
     (properties `((upstream-name . "RcppParallel")))
     (build-system r-build-system)
     (home-page "https://rcppcore.github.io/RcppParallel/")
@@ -10382,14 +10414,14 @@ R packages (on CRAN, Bioconductor or Github).")
 (define-public r-docopt
   (package
     (name "r-docopt")
-    (version "0.6.1")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "docopt" version))
        (sha256
         (base32
-         "06zknnd0c5s2y0hbddzdlr3m63ib783izpck6pgz7sjbab5pd068"))))
+         "1zxhwizs916qm5by7nfslqnarl2q5202xc2azlhrnzk0wj3khiwz"))))
     (build-system r-build-system)
     (home-page "https://github.com/docopt/docopt.R")
     (synopsis "Command-line interface specification language")
@@ -12161,14 +12193,14 @@ them in distributed compute environments.")
 (define-public r-future
   (package
     (name "r-future")
-    (version "1.17.0")
+    (version "1.18.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future" version))
        (sha256
         (base32
-         "0d4y7gwcgqx2z0y6h5bh4lrz0m7b0inii5cjcq0kk8za762bi8rg"))))
+         "01fp8kgjf0k6c83q1w3dy9z90g72cc9d0004d1qw6n1j65nwxg4f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -12193,14 +12225,14 @@ the local machine to, say, distributed processing on a remote compute cluster.")
 (define-public r-future-apply
   (package
     (name "r-future-apply")
-    (version "1.5.0")
+    (version "1.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future.apply" version))
        (sha256
         (base32
-         "095a681ngbwbp7v53ladwya7ar8fgwnlgr3r1yklf3vdxwd54xll"))))
+         "1zbfycjfvxnrigm6l2fd2zgnw96g0apiw426c73gkv3xv7bdy6ms"))))
     (properties `((upstream-name . "future.apply")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12328,14 +12360,14 @@ chosen parallel environment and associated foreach backend.")
 (define-public r-blockmodeling
   (package
     (name "r-blockmodeling")
-    (version "0.3.6")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "blockmodeling" version))
        (sha256
         (base32
-         "12paf76l3wlxad14bkxn37lw9rg6ka473m86wlcf3yhriw8kbaiz"))))
+         "1z4w2kq0id0gb5d0lqcdaw3clplhzywarkpvvx3drivdypzl237i"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-matrix" ,r-matrix)))
@@ -12577,13 +12609,13 @@ such software by imputing dropout events.")
 (define-public r-gamlss-dist
   (package
     (name "r-gamlss-dist")
-    (version "5.1-6")
+    (version "5.1-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss.dist" version))
        (sha256
-        (base32 "1p904x0b07z4amaqdn2xhs7qzbq8lisr6lqc844s3pkxzmny7w1z"))))
+        (base32 "0nzgq3rnziy0i2zxn88hqy3pakpyin2m2csk9j3zg39si66c6wcq"))))
     (properties `((upstream-name . "gamlss.dist")))
     (build-system r-build-system)
     (propagated-inputs `(("r-mass" ,r-mass)))
@@ -12854,14 +12886,14 @@ latent growth curve models.")
 (define-public r-nonnest2
   (package
     (name "r-nonnest2")
-    (version "0.5-3")
+    (version "0.5-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nonnest2" version))
        (sha256
         (base32
-         "1mnv4pa583ir9s03h952hk40lwdywr3g88g76sk1zsa54rcmn82c"))))
+         "1ddaqwx8i3ygwvxf11mc8xhgk4nkvnail99nr5szq8i168752zq2"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-compquadform" ,r-compquadform)
@@ -13173,7 +13205,7 @@ plotting functions are available for analyzing clustering results.")
        ("r-tibble" ,r-tibble)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
-    (home-page "http://github.com/rnabioco/valr")
+    (home-page "https://github.com/rnabioco/valr")
     (synopsis "Genome interval arithmetic in R")
     (description
      "This package enables you to read and manipulate genome intervals and
@@ -13586,14 +13618,14 @@ univariate class intervals for mapping or other graphics purposes.")
 (define-public r-spdata
   (package
     (name "r-spdata")
-    (version "0.3.5")
+    (version "0.3.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spData" version))
        (sha256
         (base32
-         "09l9j1vjbfyc8mikb8kliqmdjkg4xigq3zhdx98mv51flh5q87lh"))))
+         "1mlsqy9cbilfc80cbdlbgsngvzdkrd9yjdkxnw2b1gzxnj6jcqbs"))))
     (properties `((upstream-name . "spData")))
     (build-system r-build-system)
     (propagated-inputs
@@ -13699,14 +13731,14 @@ datum transformations.")
 (define-public r-spdep
   (package
     (name "r-spdep")
-    (version "1.1-3")
+    (version "1.1-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spdep" version))
        (sha256
         (base32
-         "1f8cjffqqc6rnb3n4qym70ca6nz2kvrsd3g587wrqdr79nnbwnrk"))))
+         "0pbd7wrg5v44p2yxsjp774lpyzap3madir5mn5p3ix7ibk7ldjs7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-boot" ,r-boot)
@@ -13721,6 +13753,8 @@ datum transformations.")
        ("r-sf" ,r-sf)
        ("r-sp" ,r-sp)
        ("r-spdata" ,r-spdata)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/r-spatial/spdep/")
     (synopsis "Spatial dependence: weighting schemes, statistics and models")
     (description
@@ -14047,14 +14081,14 @@ inbred lines, F2 intercrosses, and association mapping populations.")
 (define-public r-ldheatmap
   (package
     (name "r-ldheatmap")
-    (version "0.99-7")
+    (version "0.99-8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "LDheatmap" version))
        (sha256
         (base32
-         "1r0j8bihi5z1x0sgaf7dwzpsw9i0nc1vylvipvc0cia2ka1lr9dc"))))
+         "1x3da3rbhyqb2ddngi48qv7vzb6vc347n9qhryr70qgcc1xvqj4z"))))
     (properties `((upstream-name . "LDheatmap")))
     (build-system r-build-system)
     (propagated-inputs
@@ -14138,13 +14172,13 @@ SELECT or UPDATE queries to an end-point.")
 (define-public r-bookdown
   (package
     (name "r-bookdown")
-    (version "0.19")
+    (version "0.20")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "bookdown" version))
               (sha256
                (base32
-                "137l0cyzw9ij2l3zyk3mm1k2db9vhbax6c9y4rydvh4i9gka5vlq"))))
+                "0gnshkp1aj7f29sjkhzxn890hz39nwaqdln61x8apmrc658nacdg"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-htmltools" ,r-htmltools)
@@ -14340,14 +14374,14 @@ the corresponding outputs (tables and graphs).")
 (define-public r-rjava
   (package
     (name "r-rjava")
-    (version "0.9-12")
+    (version "0.9-13")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rJava" version))
        (sha256
         (base32
-         "03vv0pj6san03c51iyqsyb1rwh3097dfpl2s8iswzzmc7k3shj12"))))
+         "1x3mihyqzr61j52rwaqciw43mkjzmhib4s6qf57v6xj40ksqh5jv"))))
     (properties `((upstream-name . "rJava")))
     (build-system r-build-system)
     (arguments
@@ -14741,14 +14775,14 @@ sets of URLs.")
 (define-public r-ggforce
   (package
     (name "r-ggforce")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggforce" version))
        (sha256
         (base32
-         "04926cqrda6psvy2nzkkw4czwyxdp7fnxg76byp14v12kgd72lm0"))))
+         "1lplxyq5bgx90dgaimhynpcywag1gp6vlsy7q52ay1nfc35qmkjc"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -15134,17 +15168,28 @@ matrix and displays the significance level on the plot.  It also includes a
 function for computing a matrix of correlation p-values.")
     (license license:gpl2)))
 
+;; This package includes minified JavaScript files.  When upgrading please
+;; check that there are no new minified JavaScript files.
 (define-public r-flexdashboard
   (package
     (name "r-flexdashboard")
-    (version "0.5.1.1")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "flexdashboard" version))
        (sha256
         (base32
-         "0fy3nbrr67zqgd44r2mc850s5sp0hzfcw3zqs15m8kxzj1aw067x"))))
+         "1bh759llp15fxrx2rwvxd8p3w84vjmkid32ism7zg49a127fjib4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete bundled minified JavaScript files
+           (delete-file "inst/htmlwidgets/lib/raphael/raphael-2.1.4.min.js")
+           (delete-file "inst/www/sly/sly.min.js")
+           (delete-file "inst/www/stickytableheaders/jquery.stickytableheaders.min.js")
+           (delete-file "inst/www/prism/prism.js")
+           #t))))
     (build-system r-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -15187,7 +15232,6 @@ function for computing a matrix of correlation p-values.")
                    (for-each (lambda (source target)
                                (format #t "Processing ~a --> ~a~%"
                                        source target)
-                               (delete-file target)
                                (let ((minified (open-pipe* OPEN_READ "uglify-js" source)))
                                  (call-with-output-file target
                                    (lambda (port)
@@ -15687,14 +15731,14 @@ engine (Salmon et al., 2011) as provided by the package @code{sitmo}.")
 (define-public r-ingredients
   (package
     (name "r-ingredients")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ingredients" version))
        (sha256
         (base32
-         "1q196y9xzn4wk44fa1bvh0hcbizgm93rwir82nyk31k5pgixk967"))))
+         "1mp1rgi3nnr8mjddpbyi24zvqcbihz0d8np2j13cbjc089n6jci8"))))
     (properties `((upstream-name . "ingredients")))
     (build-system r-build-system)
     (propagated-inputs
@@ -15753,14 +15797,14 @@ classification and regression models.")
 (define-public r-dalex
   (package
     (name "r-dalex")
-    (version "1.2.1")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "DALEX" version))
        (sha256
         (base32
-         "0lx8nasm1zgh1ckz8nw3ysp6xjv3dsj39hzhr6k3xhh6i8pm9rxk"))))
+         "1azbnykaddsfp2qmxmhpjz76zg78msxv6n2jqkq4gwbgqa5vdfd2"))))
     (properties `((upstream-name . "DALEX")))
     (build-system r-build-system)
     (propagated-inputs
@@ -15956,14 +16000,14 @@ easily.")
 (define-public r-umap
   (package
     (name "r-umap")
-    (version "0.2.5.0")
+    (version "0.2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "umap" version))
        (sha256
         (base32
-         "0qp8zbh6fn8kn6q2h2lyjgmq3pr6gqwsd8ymqx25px13zjhxch9d"))))
+         "0zajn2sk705sckljxl5vz4q2sxpsqim2grmjq2jwwc8ysr1h2s9f"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-openssl" ,r-openssl)
@@ -16167,14 +16211,14 @@ guaranteeing well-connected communities.\" <arXiv:1810.08473>.")
 (define-public r-patchwork
   (package
     (name "r-patchwork")
-    (version "1.0.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "patchwork" version))
        (sha256
         (base32
-         "0qrwbcswh7ylrmghi17k6wk7w51cz6mcmvcyyd41hy3m2ywmkywb"))))
+         "0wm93a40idrkzn5hpnykhznvh7hdbfqw0dkzzn0zk83qlwyc9g02"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ggplot2" ,r-ggplot2)
@@ -16199,7 +16243,7 @@ multiple plots.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/MacoskoLab/liger.git")
+             (url "https://github.com/MacoskoLab/liger")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -16519,13 +16563,13 @@ effect size.")
 (define-public r-rgdal
   (package
     (name "r-rgdal")
-    (version "1.5-10")
+    (version "1.5-12")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgdal" version))
        (sha256
-        (base32 "02z7rhpizzmymiqpi90nm15bjdz0411bqlavlk0lhwxb42ilhif6"))))
+        (base32 "0jvb5ykp539mi0hqs05w4w8wz45blc4nvkhs70aqmzyx27hadfiq"))))
     (properties `((upstream-name . "rgdal")))
     (build-system r-build-system)
     (inputs
@@ -17492,14 +17536,14 @@ data.")
 (define-public r-mda
   (package
     (name "r-mda")
-    (version "0.5")
+    (version "0.5-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mda" version))
        (sha256
         (base32
-         "01pjrz9xv1rx78ndy0x9dc32ws8brcvwyb500m1f0dqd42375vmx"))))
+         "1hq0zhhz9klmp4zcr1w8hyn7s1h9kfg57d2l2mfm7psx459j0krl"))))
     (properties `((upstream-name . "mda")))
     (build-system r-build-system)
     (propagated-inputs `(("r-class" ,r-class)))
@@ -17808,14 +17852,14 @@ models.")
 (define-public r-gamlss
   (package
     (name "r-gamlss")
-    (version "5.1-6")
+    (version "5.1-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss" version))
        (sha256
         (base32
-         "16b7ick1khvldbvfmmpw9cjs1vznnrisvifq7717fxzd8c9s5jdr"))))
+         "0ywqwsp4k6jgnicp1gdsglji61l5cnackl52700v8kmkk83bq4c8"))))
     (properties `((upstream-name . "gamlss")))
     (build-system r-build-system)
     (propagated-inputs
@@ -20135,18 +20179,19 @@ Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish and Turkish.")
 (define-public r-quanteda
   (package
     (name "r-quanteda")
-    (version "2.0.1")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quanteda" version))
        (sha256
         (base32
-         "0pym6vdzqbkyj87m3pla229092xvvx4j830x67qflxzzdmc9dzhz"))))
+         "0qxvm75g6r0d1clj8b19gjqwkfrqypapf4zysb8nyfbmn33h8xc7"))))
     (properties `((upstream-name . "quanteda")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-data-table" ,r-data-table)
+       ("r-digest" ,r-digest)
        ("r-extrafont" ,r-extrafont)
        ("r-fastmatch" ,r-fastmatch)
        ("r-ggplot2" ,r-ggplot2)
@@ -20892,14 +20937,14 @@ Haberman's interaction model when all items are dichotomously scored.")
 (define-public r-iheatmapr
   (package
     (name "r-iheatmapr")
-    (version "0.4.12")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "iheatmapr" version))
        (sha256
         (base32
-         "0s479j9l35xiss599vablxgvg6i2j9zq9sxphsq4vdk3bafg84bw"))))
+         "0s2lc088rq2siy2wzmg1y6nss68rs33mf7w2izqqmg6kbx6d7y9h"))))
     (properties `((upstream-name . "iheatmapr")))
     (build-system r-build-system)
     (propagated-inputs
@@ -20909,10 +20954,10 @@ Haberman's interaction model when all items are dichotomously scored.")
        ("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)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://docs.ropensci.org/iheatmapr")
     (synopsis "Interactive, Complex Heatmaps")
     (description
@@ -21101,20 +21146,23 @@ using the @code{rstan} and @code{rstanarm} packages).")
 (define-public r-rstantools
   (package
     (name "r-rstantools")
-    (version "2.0.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rstantools" version))
        (sha256
         (base32
-         "1il0pn4ksbdkska5fmhvgaicvwnnc6cs08g6ags9fj1xkjiqmrsa"))))
+         "0b9x8rzj3dr4m7yjx476nn42z22xd1xnw85m9frfwxy5ivg1any9"))))
     (properties `((upstream-name . "rstantools")))
     (build-system r-build-system)
     (inputs `(("pandoc" ,ghc-pandoc)))
     (propagated-inputs
      `(("r-desc" ,r-desc)
-       ("r-rcpp" ,r-rcpp)))
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcppparallel" ,r-rcppparallel)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://mc-stan.org/rstantools/")
     (synopsis "Tools for developing R packages interfacing with Stan")
     (description
@@ -21128,14 +21176,13 @@ recommendations for developers.")
 (define-public r-loo
   (package
     (name "r-loo")
-    (version "2.2.0")
+    (version "2.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "loo" version))
        (sha256
-        (base32
-         "1hq1zcj76x55z9kic6cwf7mfq9pzqfbr341jbc9wp7x8ac4zcva6"))))
+        (base32 "12z0k8lhz0rxygs5lc7076nw6qhk0pda8nxf65hkinfrf4dy53fr"))))
     (properties `((upstream-name . "loo")))
     (build-system r-build-system)
     (inputs
@@ -21144,6 +21191,8 @@ recommendations for developers.")
     (propagated-inputs
      `(("r-checkmate" ,r-checkmate)
        ("r-matrixstats" ,r-matrixstats)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://mc-stan.org/loo/")
     (synopsis "Leave-One-Out cross-validation and WAIC for Bayesian models")
     (description
@@ -21161,14 +21210,14 @@ techniques to average Bayesian predictive distributions.")
 (define-public r-rstan
   (package
     (name "r-rstan")
-    (version "2.19.3")
+    (version "2.21.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rstan" version))
        (sha256
         (base32
-         "128ndwjrhf8b1qvvqz4bl13qlm8718z9qs5ryc6gsdr3vk65s0np"))))
+         "0fxxh2jmrgfp98195qkqli1r9ni457vnjdvqm5l91j6aagkbk8zz"))))
     (properties `((upstream-name . "rstan")))
     (build-system r-build-system)
     (arguments
@@ -21184,7 +21233,8 @@ techniques to average Bayesian predictive distributions.")
              #t)))))
     (native-inputs
      `(("tzdata" ,tzdata-for-tests)
-       ("pandoc" ,ghc-pandoc)))
+       ("pandoc" ,ghc-pandoc)
+       ("r-knitr" ,r-knitr)))
     (propagated-inputs
      `(("r-bh" ,r-bh)
        ("r-ggplot2" ,r-ggplot2)
@@ -21194,7 +21244,9 @@ techniques to average Bayesian predictive distributions.")
        ("r-pkgbuild" ,r-pkgbuild)
        ("r-rcpp" ,r-rcpp)
        ("r-rcppeigen" ,r-rcppeigen)
-       ("r-stanheaders" ,r-stanheaders)))
+       ("r-rcppparallel" ,r-rcppparallel)
+       ("r-stanheaders" ,r-stanheaders)
+       ("r-v8" ,r-v8)))
     (home-page "https://discourse.mc-stan.org/")
     (synopsis "R interface to Stan")
     (description
@@ -21298,26 +21350,61 @@ Yue-Pilon's (Yue, 2002) pre-whitening approaches to determining trends in
 climate data.")
     (license license:lgpl2.1)))
 
+(define-public r-rlinsolve
+  (package
+    (name "r-rlinsolve")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Rlinsolve" version))
+       (sha256
+        (base32
+         "1x02xxbkchcwwfa2123n9yqfzinfi0zba8zxhp977czzwysy75cc"))))
+    (properties `((upstream-name . "Rlinsolve")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrix" ,r-matrix)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rdpack" ,r-rdpack)))
+    (home-page "https://cran.r-project.org/web/packages/Rlinsolve/")
+    (synopsis "Iterative solvers for (sparse) linear system of equations")
+    (description
+     "Solving a system of linear equations is one of the most fundamental
+computational problems for many fields of mathematical studies, such as
+regression problems from statistics or numerical partial differential
+equations.  This package provides basic stationary iterative solvers such as
+Jacobi, Gauss-Seidel, Successive Over-Relaxation and SSOR methods.
+Nonstationary, also known as Krylov subspace methods are also provided.
+Sparse matrix computation is also supported in that solving large and sparse
+linear systems can be manageable using the @code{Matrix} package along with
+@code{RcppArmadillo}.")
+    (license license:gpl3+)))
+
 (define-public r-zvcv
   (package
     (name "r-zvcv")
-    (version "1.0.0")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ZVCV" version))
        (sha256
         (base32
-         "1npw836q2skx54843lgxvb0rfwafckjc8k8dljykm60ad3z7zak8"))))
+         "0np6h6x74kz1x13wmbkkm1wq43d8bnn2khzjc80prqdi6n0m9v8r"))))
     (properties `((upstream-name . "ZVCV")))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-abind" ,r-abind)
+       ("r-bh" ,r-bh)
+       ("r-dplyr" ,r-dplyr)
        ("r-glmnet" ,r-glmnet)
+       ("r-magrittr" ,r-magrittr)
        ("r-mvtnorm" ,r-mvtnorm)
-       ("r-partitions" ,r-partitions)
        ("r-rcpp" ,r-rcpp)
-       ("r-rcpparmadillo" ,r-rcpparmadillo)))
+       ("r-rcpparmadillo" ,r-rcpparmadillo)
+       ("r-rlinsolve" ,r-rlinsolve)))
     (home-page "https://cran.r-project.org/web/packages/ZVCV/")
     (synopsis "Zero-Variance Control Variates")
     (description
@@ -21388,19 +21475,18 @@ Encyclopedia of Integer Sequences} (OEIS) in the function help page.")
 (define-public r-isoband
   (package
     (name "r-isoband")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "isoband" version))
        (sha256
         (base32
-         "1ndlnv4g9pbd02y50sx4ffg2ccwqbi7fm2v1lh22wdd8pq33d20q"))))
+         "044fg014gb6v6v11gm7ivfipz45iqw9cpahjhaacw6kyahyb66zx"))))
     (properties `((upstream-name . "isoband")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-rcpp" ,r-rcpp)
-       ("r-testthat" ,r-testthat)))
+     `(("r-testthat" ,r-testthat)))
     (native-inputs
      `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/wilkelab/isoband")
@@ -22006,14 +22092,14 @@ included in this package as well.")
 (define-public r-brms
   (package
     (name "r-brms")
-    (version "2.13.0")
+    (version "2.13.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "brms" version))
        (sha256
         (base32
-         "0vdncdawxawi16f326qrgy9jjjipmqdjxh741y9p7xdzd4fwaxx3"))))
+         "13gnc517yssvi2mnih5bln06hcbn4y80gd9h3szacs6n3mwpig5f"))))
     (properties `((upstream-name . "brms")))
     (build-system r-build-system)
     (propagated-inputs
@@ -22108,3 +22194,373 @@ multi-state models.")
      "This package creates scatterpie plots, especially useful for plotting
 pies on a map.")
     (license license:artistic2.0)))
+
+(define-public r-boruta
+  (package
+    (name "r-boruta")
+    (version "7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "Boruta" version))
+       (sha256
+        (base32
+         "0y2w4wb45kfnzrxcrdsiwgal9fsnlr3wad1sqdc70qv8gp921xbg"))))
+    (properties `((upstream-name . "Boruta")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-ranger" ,r-ranger)))
+    (home-page "https://gitlab.com/mbq/Boruta/")
+    (synopsis "Wrapper algorithm for all relevant feature selection")
+    (description
+     "This package provides an all relevant feature selection wrapper
+algorithm.  It finds relevant features by comparing original attributes'
+importance with importance achievable at random, estimated using their
+permuted copies (shadows).")
+    (license license:gpl2+)))
+
+(define-public r-directlabels
+  (package
+    (name "r-directlabels")
+    (version "2020.6.17")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "directlabels" version))
+       (sha256
+        (base32
+         "1b6v206kizz5rjw03chjvn40a7cqihjpk80h1h79z2x27hp1qi3f"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-quadprog" ,r-quadprog)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page "http://directlabels.r-forge.r-project.org/")
+    (synopsis "Direct labels for multicolor plots")
+    (description
+     "This package provides an extensible framework for automatically placing
+direct labels onto multicolor plots.  Label positions are described using
+positioning methods that can be re-used across several different plots.  There
+are heuristics for examining @code{trellis} and @code{ggplot} objects and
+inferring an appropriate positioning method.")
+    (license license:gpl3)))
+
+(define-public r-lsd
+  (package
+    (name "r-lsd")
+    (version "4.1-0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "LSD" version))
+       (sha256
+        (base32 "17pbdlcbhzf3v7l42mjikln1ga5xjp5r78gjg6a88iahk0lwwlvm"))))
+    (properties `((upstream-name . "LSD")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/LSD/")
+    (synopsis "Lots of superior depictions tool creates colorful plots")
+    (description
+     "This package creates lots of colorful plots in a multitude of variations.
+Try a demo of the LSD by running @code{demotour()}.")
+    ;; Either version
+    (license (list license:gpl2 license:gpl3))))
+
+(define-public r-fourcseq
+  (package
+    (name "r-fourcseq")
+    (version "1.21.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "FourCSeq" version))
+       (sha256
+        (base32 "0lhcjw2hmmdafq52c5fvpm1crnzynbslamzh7r6ygifmzaz2pa8x"))))
+    (properties `((upstream-name . "FourCSeq")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biostrings" ,r-biostrings)
+       ("r-deseq2" ,r-deseq2)
+       ("r-fda" ,r-fda)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggbio" ,r-ggbio)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gtools" ,r-gtools)
+       ("r-lsd" ,r-lsd)
+       ("r-matrix" ,r-matrix)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
+    (home-page
+     "https://bioconductor.org/packages/release/bioc/html/FourCSeq.html")
+    (synopsis "Analysis of multiplexed 4C sequencing data")
+    (description
+     "This package is an R package dedicated to the analysis of (multiplexed)
+4C sequencing data.  @code{r-fourcseq} provides a pipeline to detect specific
+interactions between DNA elements and identify differential interactions
+between conditions.  The statistical analysis in R starts with individual bam
+files for each sample as inputs.  To obtain these files, the package contains
+a Python script to demultiplex libraries and trim off primer sequences.  With
+a standard alignment software the required bam files can be then be
+generated.")
+    (license license:gpl3+)))
+
+(define-public r-phylogram
+  (package
+    (name "r-phylogram")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "phylogram" version))
+       (sha256
+        (base32 "1p4h5pirc0m5pzc18q0jk3mcmb5n48gdf9abz03vml3a209xxl2v"))))
+    (properties `((upstream-name . "phylogram")))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-ape" ,r-ape)))
+    (home-page "https://github.com/ropensci/phylogram/")
+    (synopsis "Dendrograms for evolutionary analysis")
+    (description
+     "The @code{r-phylogram} package is a tool for for developing phylogenetic
+trees as deeply-nested lists known as \"dendrogram\" objects.  It provides
+functions for conversion between \"dendrogram\" and \"phylo\" class objects,
+as well as several tools for command-line tree manipulation and import/export
+via Newick parenthetic text.  This improves accessibility to the comprehensive
+range of object-specific analytical and tree-visualization functions found
+across a wide array of bioinformatic R packages.")
+    (license license:gpl3)))
+
+(define-public r-kmer
+  (package
+    (name "r-kmer")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "kmer" version))
+       (sha256
+        (base32 "0jimn9r0abglwxdl1zqz0lxa99cmj6haydkxjzqfbpx9by80wnww"))))
+    (properties `((upstream-name . "kmer")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-openssl" ,r-openssl)
+       ("r-phylogram" ,r-phylogram)
+       ("r-rcpp" ,r-rcpp)))
+    (home-page "https://github.com/shaunpwilkinson/kmer/")
+    (synopsis "Fast K-Mer counting and clustering for biological sequence analysis")
+    (description
+     "@code{r-kmer} is an R package for rapidly computing distance matrices
+and clustering large sequence datasets using fast alignment-free k-mer
+counting and recursive k-means partitioning.")
+    (license license:gpl3)))
+
+(define-public r-shapforxgboost
+  (package
+    (name "r-shapforxgboost")
+    (version "0.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "SHAPforxgboost" version))
+       (sha256
+        (base32
+         "0k6bg27wqnkzv82bcahbapmqhiz6rvnx81m23zbjw58c7lwshgnq"))))
+    (properties
+     `((upstream-name . "SHAPforxgboost")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-bbmisc" ,r-bbmisc)
+       ("r-data-table" ,r-data-table)
+       ("r-ggextra" ,r-ggextra)
+       ("r-ggforce" ,r-ggforce)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-ggpubr" ,r-ggpubr)
+       ("r-rcolorbrewer" ,r-rcolorbrewer)
+       ("r-xgboost" ,r-xgboost)))
+    (home-page "https://github.com/liuyanguu/SHAPforxgboost")
+    (synopsis "SHAP Plots for XGBoost")
+    (description
+     "The aim of @code{SHAPforxgboost} is to aid in visual data investigations
+using @dfn{SHAP} (Shapley additive explanation) visualization plots for
+@code{XGBoost}.  It provides summary plot, dependence plot, interaction plot,
+and force plot.  It relies on the @code{XGBoost} package to produce SHAP
+values.")
+    (license license:expat)))
+
+(define-public r-rismed
+  (package
+    (name "r-rismed")
+    (version "2.1.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "RISmed" version))
+        (sha256
+          (base32
+            "08dmkkxsmwp9b4h2g1bbx03cijn793fsnzkmbima8x9d42vxnm1l"))))
+    (properties `((upstream-name . "RISmed")))
+    (build-system r-build-system)
+    (home-page "https://cran.r-project.org/web/packages/RISmed")
+    (synopsis "Download content from NCBI databases")
+    (description
+      "This package provides a set of tools to extract bibliographic
+content from the National Center for Biotechnology Information (NCBI)
+databases, including PubMed.  The name RISmed is a portmanteau of
+RIS (for Research Information Systems, a common tag format for
+bibliographic data) and PubMed.")
+    (license license:gpl2+)))
+
+(define-public r-semver
+  (package
+    (name "r-semver")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "semver" version))
+        (sha256
+          (base32
+            "10wpkyms2cix3bsin2q0qhkbl445pwwpa5gm2s4jjw1989namkxy"))))
+    (properties `((upstream-name . "semver")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-assertthat" ,r-assertthat)
+        ("r-rcpp" ,r-rcpp)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/johndharrison/semver")
+    (synopsis "Parser for Semantic Versioning 2.0.0")
+    (description
+      "This package provides tools and functions for parsing, rendering and
+operating on semantic version strings.  Semantic versioning is a simple set of
+rules and requirements that dictate how version numbers are assigned and
+incremented as outlined at @url{http://semver.org}.")
+    (license license:expat)))
+
+(define-public r-binman
+  (package
+    (name "r-binman")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "binman" version))
+        (sha256
+          (base32
+            "0hm0h285p4v9lhrqjy8s22f1s1vmfpfla5iaycpj8vw3qb3632az"))))
+    (properties `((upstream-name . "binman")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-assertthat" ,r-assertthat)
+        ("r-httr" ,r-httr)
+        ("r-jsonlite" ,r-jsonlite)
+        ("r-rappdirs" ,r-rappdirs)
+        ("r-semver" ,r-semver)
+        ("r-xml2" ,r-xml2)
+        ("r-yaml" ,r-yaml)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://github.com/ropensci/binman")
+    (synopsis "Binary download manager")
+    (description
+      "This package provides tools and functions for managing the download of
+binary files.  Binary repositories are defined in the YAML format.  Defining
+new pre-download, download and post-download templates allow additional
+repositories to be added.")
+    (license license:expat)))
+
+(define-public r-wdman
+  (package
+    (name "r-wdman")
+    (version "0.2.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "wdman" version))
+        (sha256
+          (base32
+            "1yf41lsrr9dbf5n4f5hv9mlmzl736fhnp9gxkm2g9apws6gsig02"))))
+    (properties `((upstream-name . "wdman")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-assertthat" ,r-assertthat)
+        ("r-binman" ,r-binman)
+        ("r-processx" ,r-processx)
+        ("r-semver" ,r-semver)
+        ("r-yaml" ,r-yaml)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://docs.ropensci.org/wdman/")
+    (synopsis "Webdriver/Selenium binary manager")
+    (description
+      "There are a number of binary files associated with the
+Webdriver/Selenium project (see @url{http://www.seleniumhq.org/download/},
+@url{https://sites.google.com/a/chromium.org/chromedriver/},
+@url{https://github.com/mozilla/geckodriver},
+@url{http://phantomjs.org/download.html}, and
+@url{https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver} for
+more information).  This package provides functions to download these binaries
+and to manage processes involving them.")
+    (license license:expat)))
+
+(define-public r-rselenium
+  (package
+    (name "r-rselenium")
+    (version "1.7.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (cran-uri "RSelenium" version))
+        (sha256
+          (base32
+            "1xn5fdbzmq7b1f5fc9ls23g177bmnd8bn4p4d8aafr6z3jwkmfir"))))
+    (properties `((upstream-name . "RSelenium")))
+    (build-system r-build-system)
+    (propagated-inputs
+      `(("r-binman" ,r-binman)
+        ("r-catools" ,r-catools)
+        ("r-httr" ,r-httr)
+        ("r-openssl" ,r-openssl)
+        ("r-wdman" ,r-wdman)
+        ("r-xml" ,r-xml)))
+    (native-inputs `(("r-knitr" ,r-knitr)))
+    (home-page "https://docs.ropensci.org/RSelenium/")
+    (synopsis "R bindings for Selenium WebDriver")
+    (description
+      "This package provides a set of R bindings for the Selenium 2.0
+WebDriver (see @url{https://selenium.dev/documentation/en/} for more
+information) using the @code{JsonWireProtocol} (see
+@url{https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol} for more
+information).  Selenium 2.0 WebDriver allows driving a web browser natively as
+a user would either locally or on a remote machine using the Selenium server
+it marks a leap forward in terms of web browser automation.  Selenium
+automates web browsers (commonly referred to as browsers).  Using RSelenium
+you can automate browsers locally or remotely.")
+    (license license:agpl3+)))
+
+(define-public r-conquer
+  (package
+    (name "r-conquer")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "conquer" version))
+       (sha256
+        (base32
+         "1c7id7wgspma5bdcirrhw7f9fp709zxpj31klivasdbvd4jgi4vb"))))
+    (properties `((upstream-name . "conquer")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-matrix" ,r-matrix)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)))
+    (home-page "https://github.com/XiaoouPan/conquer")
+    (synopsis "Convolution-type smoothed quantile regression")
+    (description
+     "This package provides fast and accurate convolution-type smoothed
+quantile regression, implemented using Barzilai-Borwein gradient descent with
+a Huber regression warm start.  Confidence intervals for regression
+coefficients are constructed using multiplier bootstrap.")
+    (license license:gpl3)))
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8ab88fa243..3516c60390 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
@@ -35,6 +35,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages jemalloc)
@@ -180,10 +181,10 @@ the Rust programming language.")
     (license (list license:bsd-3
                    license:zlib))))
 
-(define-public rust-afl-0.5
+(define-public rust-afl-0.8
   (package
     (name "rust-afl")
-    (version "0.5.2")
+    (version "0.8.0")
     (source
       (origin
         (method url-fetch)
@@ -192,15 +193,20 @@ the Rust programming language.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0azpi917l8nhvx25n2v670nvkxkrhcwmddfi85qnr6kchmi6y946"))))
+          "1rw11hycfjhqbc7z1smn75m0sczq519msjwimxh7b8s6n4pzk5r7"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
+       (("rust-cc" ,rust-cc-1.0)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-rustc-version" ,rust-rustc-version-0.2)
+        ("rust-xdg" ,rust-xdg-2.2))
+       #:cargo-development-inputs
        (("rust-rustc-version" ,rust-rustc-version-0.2)
-        ("rust-cc" ,rust-cc-1.0)
-        ("rust-xdg" ,rust-xdg-2.2)
-        ("rust-clap" ,rust-clap-2))))
+        ("rust-xdg" ,rust-xdg-2.2))))
     (home-page "https://github.com/rust-fuzz/afl.rs")
     (synopsis
      "Fuzzing Rust code with american-fuzzy-lop")
@@ -208,8 +214,34 @@ the Rust programming language.")
      "Fuzz Rust code with american-fuzzy-lop.")
     (license license:asl2.0)))
 
+(define-public rust-afl-0.5
+  (package
+    (inherit rust-afl-0.8)
+    (name "rust-afl")
+    (version "0.5.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "afl" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0azpi917l8nhvx25n2v670nvkxkrhcwmddfi85qnr6kchmi6y946"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-rustc-version" ,rust-rustc-version-0.2)
+        ("rust-cc" ,rust-cc-1.0)
+        ("rust-xdg" ,rust-xdg-2.2)
+        ("rust-clap" ,rust-clap-2))
+       #:cargo-development-inputs
+       (("rust-rustc-version" ,rust-rustc-version-0.2)
+        ("rust-xdg" ,rust-xdg-2.2))))))
+
 (define-public rust-afl-0.4
   (package
+    (inherit rust-afl-0.5)
     (name "rust-afl")
     (version "0.4.3")
     (source
@@ -220,26 +252,12 @@ the Rust programming language.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0g2chc18ji7qxi0d03n2ai140qdcww958v5si6rcjnnhmri1vyfb"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-cc" ,rust-cc-1.0)
-        ("rust-clap" ,rust-clap-2)
-        ("rust-rustc-version" ,rust-rustc-version-0.2)
-        ("rust-xdg" ,rust-xdg-2.2))))
-    (home-page "https://github.com/rust-fuzz/afl.rs")
-    (synopsis
-     "Fuzzing Rust code with american-fuzzy-lop")
-    (description
-     "Fuzz Rust code with american-fuzzy-lop.")
-    (license license:asl2.0)))
+         "0g2chc18ji7qxi0d03n2ai140qdcww958v5si6rcjnnhmri1vyfb"))))))
 
 (define-public rust-aho-corasick-0.7
   (package
     (name "rust-aho-corasick")
-    (version "0.7.10")
+    (version "0.7.13")
     (source
      (origin
        (method url-fetch)
@@ -248,10 +266,10 @@ the Rust programming language.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1nka9509afjgal6lpymn8w2lq11dmjwxs8yjcmzys966if5l05l7"))))
+         "11hfmqf90rdvjdpk0x1lixw1s9n08y3fxfy9zqsk0k2wpbc68c84"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs (("rust-memchr" ,rust-memchr-2.3))
+     `(#:cargo-inputs (("rust-memchr" ,rust-memchr-2))
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3))))
     (home-page "https://github.com/BurntSushi/aho-corasick")
@@ -277,7 +295,7 @@ the Rust programming language.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-memchr" ,rust-memchr-2.2))
+       (("rust-memchr" ,rust-memchr-2))
        #:cargo-development-inputs
        (("rust-csv" ,rust-csv-1.1)
         ("rust-docopt" ,rust-docopt-1.1)
@@ -392,7 +410,7 @@ code that is generic with regard to the algebraic entity types.")
        (("rust-bitflags" ,rust-bitflags-1)
         ("rust-line-drawing" ,rust-line-drawing-0.7)
         ("rust-rusttype" ,rust-rusttype-0.7)
-        ("rust-walkdir" ,rust-walkdir-2.2)
+        ("rust-walkdir" ,rust-walkdir-2.3)
         ("rust-xdg" ,rust-xdg-2.2)
         ("rust-xml-rs" ,rust-xml-rs-0.8))
        #:cargo-development-inputs
@@ -444,7 +462,7 @@ shapes, lines and text to buffers.")
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-serde-json" ,rust-serde-json-1.0))))
     (home-page "https://github.com/ogham/rust-ansi-term")
     (synopsis "Library for ANSI terminal colours and styles")
@@ -522,7 +540,7 @@ text or blue underlined text, on ANSI terminals.")
 (define-public rust-aom-sys-0.1
   (package
     (name "rust-aom-sys")
-    (version "0.1.3")
+    (version "0.1.4")
     (source
       (origin
         (method url-fetch)
@@ -531,12 +549,11 @@ text or blue underlined text, on ANSI terminals.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0ix3djcf84kk53h6fac73n7jc614745n7kbmikxwi3s73b6vzgsr"))))
+          "1bqcpkycv1d67r6jcl9npfbw6rkl829rdq9w6vlpb0rjqxp0xzsn"))))
     (build-system cargo-build-system)
     (arguments
-     `(;#:skip-build? #t
-       #:cargo-inputs
-       (("rust-bindgen" ,rust-bindgen-0.51)
+     `(#:cargo-inputs
+       (("rust-bindgen" ,rust-bindgen-0.53)
         ("rust-metadeps" ,rust-metadeps-1.1))
        #:phases
        (modify-phases %standard-phases
@@ -638,7 +655,7 @@ text or blue underlined text, on ANSI terminals.")
        (("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-num-cpus" ,rust-num-cpus-1)
         ("rust-once-cell" ,rust-once-cell-1.2)
         ("rust-proptest" ,rust-proptest-0.8)
         ("rust-version-sync" ,rust-version-sync-0.8))))
@@ -647,33 +664,6 @@ text or blue underlined text, on ANSI terminals.")
     (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
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "arc-swap" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0ha8724dpki985v52ifq5sd98xvpa5q51hyma52di75dbqbn4imw"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-development-inputs
-       (("rust-crossbeam" ,rust-crossbeam-0.7)
-        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
-        ("rust-itertools" ,rust-itertools-0.8)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-model" ,rust-model-0.1)
-        ("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))))))
-
 (define-public rust-arg-enum-proc-macro-0.3
   (package
     (name "rust-arg-enum-proc-macro")
@@ -911,6 +901,63 @@ Mac, and Unix.")
     (description "This package helps testing CLI Applications.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-assert-cmd-1
+  (package
+    (name "rust-assert-cmd")
+    (version "1.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "assert-cmd" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1nhqr0zimizcnqfggccfznyrmvklgqwhklsh0f1yq5lwdyi9r2y8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-predicates" ,rust-predicates-1)
+        ("rust-predicates-core" ,rust-predicates-core-1)
+        ("rust-predicates-tree" ,rust-predicates-tree-1)
+        ("rust-wait-timeout" ,rust-wait-timeout-0.2))
+       #:cargo-development-inputs
+       (("rust-escargot" ,rust-escargot-0.5))))
+    (home-page "https://github.com/assert-rs/assert_cmd")
+    (synopsis "Test CLI Applications")
+    (description "Test CLI Applications.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-assert-fs-0.11
+  (package
+    (name "rust-assert-fs")
+    (version "0.11.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "assert-fs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1h1q90qskbylv4g3jyizdanj73835q7vvq7q10y555x4gnavmrjc"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-globwalk" ,rust-globwalk-0.5)
+        ("rust-predicates" ,rust-predicates-1)
+        ("rust-predicates-core" ,rust-predicates-core-1)
+        ("rust-predicates-tree" ,rust-predicates-tree-1)
+        ("rust-tempfile" ,rust-tempfile-3))
+       #:cargo-development-inputs
+       (("rust-docmatic" ,rust-docmatic-0.1))))
+    (home-page "https://github.com/assert-rs/assert_fs")
+    (synopsis "Filesystem fixtures and assertions for testing")
+    (description
+     "Filesystem fixtures and assertions for testing.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-assert-matches-1.3
   (package
     (name "rust-assert-matches")
@@ -1017,8 +1064,46 @@ Mac, and Unix.")
           "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x"))))
     (arguments '(#:skip-build? #t))))
 
+(define-public rust-average-0.10
+  (package
+    (name "rust-average")
+    (version "0.10.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "average" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1dmsxqcr1n0i20qr9g2g6j89kkx8dy6w18dbqzx1wi42wj1chgvh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-conv" ,rust-conv-0.3)
+        ("rust-float-ord" ,rust-float-ord-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-big-array" ,rust-serde-big-array-0.2)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1)
+        ("rust-proptest" ,rust-proptest-0.9)
+        ("rust-quantiles" ,rust-quantiles-0.7)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-distr" ,rust-rand-distr-0.2)
+        ("rust-rand-xoshiro" ,rust-rand-xoshiro-0.4)
+        ("rust-serde-json" ,rust-serde-json-1.0)
+        ("rust-streaming-stats" ,rust-streaming-stats-0.2))))
+    (home-page "https://github.com/vks/average")
+    (synopsis "Calculate statistics iteratively")
+    (description "This crate provides for calculating statistics iteratively
+in Rust.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-average-0.9
   (package
+    (inherit rust-average-0.10)
     (name "rust-average")
     (version "0.9.4")
     (source
@@ -1029,7 +1114,6 @@ Mac, and Unix.")
        (sha256
         (base32
          "1f8ya00bv6qki9m7b4lb3bn845rj473mx02qpm7wgy5qc1yp75xs"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-conv" ,rust-conv-0.3)
@@ -1044,12 +1128,7 @@ Mac, and Unix.")
         ("rust-quantiles" ,rust-quantiles-0.7)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-streaming-stats" ,rust-streaming-stats-0.2))))
-    (home-page "https://github.com/vks/average")
-    (synopsis "Calculate statistics iteratively")
-    (description "This crate provides for calculating statistics iteratively
-in Rust.")
-    (license (list license:asl2.0 license:expat))))
+        ("rust-streaming-stats" ,rust-streaming-stats-0.2))))))
 
 (define-public rust-backtrace-0.3
   (package
@@ -1116,10 +1195,10 @@ trace (backtrace) at runtime in a Rust program.")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-base64-0.11
+(define-public rust-base64-0.12
   (package
     (name "rust-base64")
-    (version "0.11.0")
+    (version "0.12.2")
     (source
      (origin
        (method url-fetch)
@@ -1128,7 +1207,14 @@ trace (backtrace) at runtime in a Rust program.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1iqmims6yvr6vwzyy54qd672zw29ipjj17p8klcr578c9ajpw6xl"))))
+         "0ryc48pp8dpx3rl1dcwn723dyfgifi4imh1f6kwd95lcqh6sy8z2"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; 'doctest' isn't stable until rust-1.40
+           (substitute* "src/lib.rs"
+             (("\\(doctest") "(test"))
+           #t))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
@@ -1141,6 +1227,21 @@ trace (backtrace) at runtime in a Rust program.")
      "This package encodes and decodes base64 as bytes or utf8.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-base64-0.11
+  (package
+    (inherit rust-base64-0.12)
+    (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"))))))
+
 (define-public rust-base64-0.10
   (package
     (inherit rust-base64-0.11)
@@ -1253,10 +1354,10 @@ and no more (caveat: black_box is still missing!).")
 tracebacks.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-bincode-1.2
+(define-public rust-bincode-1
   (package
     (name "rust-bincode")
-    (version "1.2.1")
+    (version "1.3.1")
     (source
       (origin
         (method url-fetch)
@@ -1265,7 +1366,7 @@ tracebacks.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1gvxm3n67xv1874fwxmnlircdlphlk1hcw75ykrrnw9l2nky4lsp"))))
+          "0vc9pjh6hfp9vfq752sa88rxwg93ydhm0dvvy58rcvx2p8wkl3gk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -1282,32 +1383,108 @@ tracebacks.")
 that uses Serde for transforming structs into bytes and vice versa!")
     (license license:expat)))
 
-(define-public rust-bincode-1.1
+(define-public rust-bindgen-0.54
   (package
-    (inherit rust-bincode-1.2)
-    (name "rust-bincode")
-    (version "1.1.4")
+    (name "rust-bindgen")
+    (version "0.54.1")
     (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "bincode" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1xx6bp39irvsndk6prnmmq8m1l9p6q2qj21j6mfks2y81pjsa14z"))))
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "bindgen" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0dn7dlwa0abjlqbl2kvwfdy6k6kgcqg6ixcjmk6pc3dpps09pm7l"))))
+    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f  ; not all test files included
        #:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg-0.1)
-        ("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-serde" ,rust-serde-1.0))
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cexpr" ,rust-cexpr-0.4)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-clang-sys" ,rust-clang-sys-0.29)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-lazycell" ,rust-lazycell-1.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-peeking-take-while" ,rust-peeking-take-while-0.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
+        ("rust-shlex" ,rust-shlex-0.1)
+        ("rust-which" ,rust-which-3.1))
        #:cargo-development-inputs
-       (("rust-serde-bytes" ,rust-serde-bytes-0.11)
-        ("rust-serde-derive" ,rust-serde-derive-1.0))))))
+       (("rust-clap" ,rust-clap-2)
+        ("rust-diff" ,rust-diff-0.1)
+        ("rust-shlex" ,rust-shlex-0.1))
+       #: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)))))
+    (inputs
+     `(("libclang" ,clang)))
+    (home-page "https://rust-lang.github.io/rust-bindgen/")
+    (synopsis
+     "Automatically generates Rust FFI bindings to C and C++ libraries")
+    (description
+     "Automatically generates Rust FFI bindings to C and C++ libraries.")
+    (license license:bsd-3)))
+
+(define-public rust-bindgen-0.53
+  (package
+    (inherit rust-bindgen-0.54)
+    (name "rust-bindgen")
+    (version "0.53.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "bindgen" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1rc9grfd25bk5b2acmqljhx55ndbzmh7w8b3x6q707cb4s6rfan7"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cexpr" ,rust-cexpr-0.4)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-clang-sys" ,rust-clang-sys-0.29)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-lazycell" ,rust-lazycell-1.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-peeking-take-while" ,rust-peeking-take-while-0.1)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
+        ("rust-shlex" ,rust-shlex-0.1)
+        ("rust-which" ,rust-which-3.1))
+       #:cargo-development-inputs
+       (("rust-clap" ,rust-clap-2)
+        ("rust-diff" ,rust-diff-0.1)
+        ("rust-shlex" ,rust-shlex-0.1))
+       #: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-bindgen-0.52
   (package
+    (inherit rust-bindgen-0.53)
     (name "rust-bindgen")
     (version "0.52.0")
     (source
@@ -1319,7 +1496,6 @@ that uses Serde for transforming structs into bytes and vice versa!")
         (sha256
          (base32
           "0mzy2gjiaggl602yn4a11xzrxfj18kl7pwqa5yv32njkxd257j7i"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-shlex" ,rust-shlex-0.1)
@@ -1335,7 +1511,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
         ("rust-rustc-hash" ,rust-rustc-hash-1.1)
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-lazycell" ,rust-lazycell-1.2)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-clap" ,rust-clap-2)
         ("rust-which" ,rust-which-3.1))
@@ -1350,15 +1526,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
              (let ((clang (assoc-ref inputs "libclang")))
                (setenv "LIBCLANG_PATH"
                        (string-append clang "/lib")))
-             #t)))))
-    (inputs
-     `(("libclang" ,clang)))
-    (home-page "https://rust-lang.github.io/rust-bindgen/")
-    (synopsis
-     "Automatically generates Rust FFI bindings to C and C++ libraries")
-    (description
-     "Automatically generates Rust FFI bindings to C and C++ libraries.")
-    (license license:bsd-3)))
+             #t)))))))
 
 (define-public rust-bindgen-0.51
   (package
@@ -1388,7 +1556,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
         ("rust-quote" ,rust-quote-1.0)
         ("rust-rustc-hash" ,rust-rustc-hash-1.1)
         ("rust-bitflags" ,rust-bitflags-1)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-clap" ,rust-clap-2)
         ("rust-which" ,rust-which-3.1))
@@ -1426,7 +1594,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
         ("rust-peeking-take-while" ,rust-peeking-take-while-0.1)
         ("rust-proc-macro2" ,rust-proc-macro2-0.4)
         ("rust-quote" ,rust-quote-0.6)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-shlex" ,rust-shlex-0.1)
         ("rust-which" ,rust-which-2.0))
        #:cargo-development-inputs
@@ -1461,7 +1629,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
         ("rust-env-logger" ,rust-env-logger-0.5)
         ("rust-quote" ,rust-quote-0.5)
         ("rust-which" ,rust-which-1.0)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-clap" ,rust-clap-2))
        #:cargo-development-inputs
@@ -1495,7 +1663,7 @@ that uses Serde for transforming structs into bytes and vice versa!")
         ("rust-peeking-take-while" ,rust-peeking-take-while-0.1)
         ("rust-proc-macro2" ,rust-proc-macro2-0.4)
         ("rust-quote" ,rust-quote-0.6)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-shlex" ,rust-shlex-0.1)
         ("rust-which" ,rust-which-2.0))
        #:cargo-development-inputs
@@ -1827,14 +1995,60 @@ BLAKE2bp hash functions.")
      `(#:skip-build? #t
        #:cargo-development-inputs
        (("rust-objc-test-utils" ,rust-objc-test-utils-0.0))))
-    (home-page "http://github.com/SSheldon/rust-block")
+    (home-page "https://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.9
+  (package
+    (name "rust-block-buffer")
+    (version "0.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "block-buffer" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r4pf90s7d7lj1wdjhlnqa26vvbm6pnc33z138lxpnp9srpi2lj1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-padding" ,rust-block-padding-0.2)
+        ("rust-generic-array" ,rust-generic-array-0.14))))
+    (home-page "https://github.com/RustCrypto/utils")
+    (synopsis "Fixed size buffer for block processing of data")
+    (description
+     "Fixed size buffer for block processing of data.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-block-buffer-0.8
+  (package
+    (inherit rust-block-buffer-0.9)
+    (name "rust-block-buffer")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "block-buffer" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0c9x5b8pk25i13bajqjkzf03bm5hx2y8pi9llfvjpy3nhr295kyv"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-padding" ,rust-block-padding-0.1)
+        ("rust-byte-tools" ,rust-byte-tools-0.3)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-generic-array" ,rust-generic-array-0.14))))))
+
 (define-public rust-block-buffer-0.7
   (package
+    (inherit rust-block-buffer-0.9)
     (name "rust-block-buffer")
     (version "0.7.3")
     (source
@@ -1846,22 +2060,36 @@ extension of blocks.")
        (sha256
         (base32
          "12v8wizynqin0hqf140kmp9s38q223mp1b0hkqk8j5pk8720v560"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-block-padding" ,rust-block-padding-0.1)
         ("rust-byte-tools" ,rust-byte-tools-0.3)
         ("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-generic-array" ,rust-generic-array-0.12))))
+        ("rust-generic-array" ,rust-generic-array-0.12))))))
+
+(define-public rust-block-padding-0.2
+  (package
+    (name "rust-block-padding")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "block-padding" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0x6b2dgink7rc3755r8jl4kmndydy5563h3wz7z9jqrb25ygv2y9"))))
+    (build-system cargo-build-system)
     (home-page "https://github.com/RustCrypto/utils")
-    (synopsis "Fixed size buffer for block processing of data")
+    (synopsis "Padding and unpadding of messages divided into blocks")
     (description
-     "Fixed size buffer for block processing of data.")
-    (license (list license:asl2.0 license:expat))))
+     "Padding and unpadding of messages divided into blocks.")
+    (license (list license:expat license:asl2.0))))
 
 (define-public rust-block-padding-0.1
   (package
+    (inherit rust-block-padding-0.2)
     (name "rust-block-padding")
     (version "0.1.4")
     (source
@@ -1873,16 +2101,9 @@ extension of blocks.")
        (sha256
         (base32
          "02fz9wx5dmgpc79ndrb9xfxqlrkk7lg5wki2blz2zqg27spw6kbd"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-byte-tools" ,rust-byte-tools-0.3))))
-    (home-page "https://github.com/RustCrypto/utils")
-    (synopsis "Padding and unpadding of messages divided into blocks")
-    (description
-     "Padding and unpadding of messages divided into blocks.")
-    (license (list license:asl1.1 license:expat))))
+     `(#:cargo-inputs
+       (("rust-byte-tools" ,rust-byte-tools-0.3))))))
 
 (define-public rust-bresenham-0.1
   (package
@@ -1924,7 +2145,7 @@ Bresenham's line algorithm.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-memchr" ,rust-memchr-2)
         ("rust-regex-automata" ,rust-regex-automata-0.1)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
@@ -1979,11 +2200,11 @@ UTF-8.")
      "This package provides a fast bump allocation arena for Rust.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-bumpalo-2.5
+(define-public rust-bumpalo-2
   (package
     (inherit rust-bumpalo-3)
     (name "rust-bumpalo")
-    (version "2.5.0")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
@@ -1992,9 +2213,9 @@ UTF-8.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "018b5calz3895v04shk9bn7i73r4zf8yf7p1dqg92s3xya13vm1c"))))
+         "020psxs5dlm0gdbs83rx2rcavibdshdr0fpzk3mmw65zq8ppz05d"))))
     (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))))))
@@ -2019,10 +2240,10 @@ UTF-8.")
     (description "Bytes related utility functions.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-bytecount-0.5
+(define-public rust-bytecount-0.6
   (package
     (name "rust-bytecount")
-    (version "0.5.1")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
@@ -2031,16 +2252,15 @@ UTF-8.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0z6a280kiy4kg5v3qw97pbyvwycr17fsm41804i8zpq7nmads3xy"))))
+         "0vplsx73zncb7mz8x0fs3k0p0rz5bmavj09vjk5nqn4z6fa7h0dh"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-packed-simd" ,rust-packed-simd-0.3))
        #:cargo-development-inputs
-       (("rust-criterion" ,rust-criterion-0.2)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.4))))
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7))))
     (home-page "https://github.com/llogiq/bytecount")
     (synopsis "Count occurrences of a given byte")
     (description
@@ -2048,8 +2268,31 @@ UTF-8.")
 in a byte slice, fast.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-bytecount-0.5
+  (package
+    (inherit rust-bytecount-0.6)
+    (name "rust-bytecount")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "bytecount" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0z6a280kiy4kg5v3qw97pbyvwycr17fsm41804i8zpq7nmads3xy"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-packed-simd" ,rust-packed-simd-0.3))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.2)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6))))))
+
 (define-public rust-bytecount-0.4
   (package
+    (inherit rust-bytecount-0.5)
     (name "rust-bytecount")
     (version "0.4.0")
     (source
@@ -2061,20 +2304,33 @@ in a byte slice, fast.")
         (sha256
          (base32
           "13qpy38z5wx0rzcdvr2h0ixbfgi1dbrif068il3hwn3k2mah88mr"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-packed-simd" ,rust-packed-simd-0.3))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
         ("rust-quickcheck" ,rust-quickcheck-0.6)
-        ("rust-rand" ,rust-rand-0.4))))
-    (home-page "https://github.com/llogiq/bytecount")
-    (synopsis "Counting bytes really fast")
+        ("rust-rand" ,rust-rand-0.4))))))
+
+(define-public rust-bytemuck-1
+  (package
+    (name "rust-bytemuck")
+    (version "1.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "bytemuck" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cclc9v10hc1abqrxgirg3qbwa3ra3s0dai3xiwv9v4j4bgi7yip"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/Lokathor/bytemuck")
+    (synopsis "crate for mucking around with piles of bytes")
     (description
-     "This package counts occurrences of a given byte, or the number of UTF-8
-code points, in a byte slice, fast.")
-    (license (list license:asl2.0 license:expat))))
+     "This package provides a crate for mucking around with piles of bytes.")
+    (license license:zlib)))
 
 (define-public rust-byteorder-1.3
   (package
@@ -2314,7 +2570,7 @@ exposed as Reader/Writer streams.")
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
        (("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("cairo" ,cairo)))
     (home-page "https://gtk-rs.org/")
@@ -2347,7 +2603,7 @@ exposed as Reader/Writer streams.")
         ("rust-libc" ,rust-libc-0.2)
         ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))))
+       (("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-cairo-sys-rs-0.9
   (package
@@ -2666,7 +2922,7 @@ used in argon2rs' bench suite.")
 (define-public rust-cc-1.0
   (package
     (name "rust-cc")
-    (version "1.0.50")
+    (version "1.0.58")
     (source
       (origin
         (method url-fetch)
@@ -2674,14 +2930,14 @@ used in argon2rs' bench suite.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1kdqm8ka7xg9h56b694pcz29ka33fsz27mzrphqc78gx96h8zqlm"))))
+          "065m2fphrv5csy8hvv37msi3a739mfkgw7pcg71dfw9jwnr6z87r"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
        (("rust-jobserver" ,rust-jobserver-0.1))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/alexcrichton/cc-rs")
     (synopsis "Invoke the native C compiler")
     (description
@@ -2691,8 +2947,44 @@ archive to be linked into Rustcode.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-cexpr-0.4
+  (package
+    (name "rust-cexpr")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cexpr" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09qd1k1mrhcqfhqmsz4y1bya9gcs29si7y3w96pqkgid4y2dpbpl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nom" ,rust-nom-5))
+       #:cargo-development-inputs
+       (("rust-clang-sys" ,rust-clang-sys-0.28))
+       #: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)))))
+    (inputs
+     `(("libclang" ,clang)))
+    (home-page "https://github.com/jethrogb/rust-cexpr")
+    (synopsis "C expression parser and evaluator")
+    (description
+     "This package provides a C expression parser and evaluator.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-cexpr-0.3
   (package
+    (inherit rust-cexpr-0.4)
     (name "rust-cexpr")
     (version "0.3.6")
     (source
@@ -2704,18 +2996,19 @@ archive to be linked into Rustcode.")
        (sha256
         (base32
          "07fdfj4ff2974y33yixrb657riq9zl9b9h9lr0h7ridhhvxvbrgw"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-nom" ,rust-nom-4.2))
        #:cargo-development-inputs
-       (("rust-clang-sys" ,rust-clang-sys-0.28))))
-    (home-page "https://github.com/jethrogb/rust-cexpr")
-    (synopsis "C expression parser and evaluator")
-    (description
-     "This package provides a C expression parser and evaluator.")
-    (license (list license:asl2.0 license:expat))))
+       (("rust-clang-sys" ,rust-clang-sys-0.28))
+       #: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-cexpr-0.2
   (package
@@ -2744,9 +3037,7 @@ archive to be linked into Rustcode.")
              (let ((clang (assoc-ref inputs "libclang")))
                (setenv "LIBCLANG_PATH"
                        (string-append clang "/lib")))
-             #t)))))
-    (inputs
-     `(("libclang" ,clang)))))
+             #t)))))))
 
 (define-public rust-cfg-if-0.1
   (package
@@ -2762,8 +3053,7 @@ archive to be linked into Rustcode.")
           "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
         ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0))))
     (home-page "https://github.com/alexcrichton/cfg-if")
@@ -2929,8 +3219,7 @@ for computer graphics.")
          "00pr17g6q6i752acrkycg0hkq3lm0p634anm41g3m6lqg8q83s75"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))))
     (home-page "https://github.com/sagiegurari/ci_info")
@@ -2939,10 +3228,10 @@ for computer graphics.")
      "This package provides current CI environment information.")
     (license license:asl2.0)))
 
-(define-public rust-clang-sys-0.28
+(define-public rust-clang-sys-0.29
   (package
     (name "rust-clang-sys")
-    (version "0.28.1")
+    (version "0.29.3")
     (source
       (origin
         (method url-fetch)
@@ -2950,7 +3239,7 @@ for computer graphics.")
         (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0ls8zcqi5bmmrvrk3b6r1ym4wlivinbv590d2dvg2xn9f44mbpl1"))))
+          "02nibl74zbz5x693iy5vdbhnfckja47m7j1mp2bj7fjw3pgkfs7y"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -2973,6 +3262,20 @@ for computer graphics.")
      "This package provides Rust bindings for @code{libclang}.")
     (license license:asl2.0)))
 
+(define-public rust-clang-sys-0.28
+  (package
+    (inherit rust-clang-sys-0.29)
+    (name "rust-clang-sys")
+    (version "0.28.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "clang-sys" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0ls8zcqi5bmmrvrk3b6r1ym4wlivinbv590d2dvg2xn9f44mbpl1"))))))
+
 (define-public rust-clang-sys-0.26
   (package
     (inherit rust-clang-sys-0.28)
@@ -3104,7 +3407,7 @@ for computer graphics.")
         ("rust-yaml-rust" ,rust-yaml-rust-0.3))
        #:cargo-development-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-version-sync" ,rust-version-sync-0.8))))
     (home-page "https://clap.rs/")
     (synopsis "Command Line Argument Parser")
@@ -3127,8 +3430,7 @@ Command Line Argument Parser.")
           "07klix8nbpwk0cg1k4h0kkiijm1jxvrzndqdkr7dqr6xvkjjw24h"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
@@ -3244,7 +3546,7 @@ pitfalls in Rust.")
 (define-public rust-cmake-0.1
   (package
     (name "rust-cmake")
-    (version "0.1.42")
+    (version "0.1.44")
     (source
       (origin
         (method url-fetch)
@@ -3252,11 +3554,10 @@ pitfalls in Rust.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0qkwibkvx5xjazvv9v8gvdlpky2jhjxvcz014nrixgzqfyv2byw1"))))
+          "1fv346ipxmvff6qrnh78rild0s8k72ilfjkdsrk869562y62cmhf"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs (("rust-cc" ,rust-cc-1.0))))
+     `(#:cargo-inputs (("rust-cc" ,rust-cc-1.0))))
     (home-page "https://github.com/alexcrichton/cmake-rs")
     (synopsis "Rust build dependency for running cmake")
     (description
@@ -3346,15 +3647,21 @@ CMAKE environmental variable is set.")
           "0nbc1czs512h1k696y7glv1kjrb2b914zpxraic6q5fgv80wizzl"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-winapi" ,rust-winapi-0.3)
         ("rust-lazy-static" ,rust-lazy-static-1))
        #:cargo-development-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.12)
-        ;("rust-rspec" ,rust-rspec-1.0)
-        )))
+        ("rust-rspec" ,rust-rspec-1))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-version-requirements
+           (lambda _
+             (substitute* "Cargo.toml"
+               (("1.0.0-beta.3") ,(package-version rust-rspec-1)))
+             #t)))))
     (home-page "https://github.com/mackwic/colored")
     (synopsis "Add colors in your terminal")
     (description
@@ -3371,8 +3678,7 @@ CMAKE environmental variable is set.")
        (uri (crate-uri "colored" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0fildacm47g86acmx44yvxx6cka8fdym5qkgfm8x8gh2hsrghc7r"))))
-    (build-system cargo-build-system)))
+        (base32 "0fildacm47g86acmx44yvxx6cka8fdym5qkgfm8x8gh2hsrghc7r"))))))
 
 ;; This package requires features which are unavailable
 ;; on the stable releases of Rust.
@@ -3446,12 +3752,12 @@ need compiler-rt intrinsics.")
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
         ("rust-miow" ,rust-miow-0.3)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-rustfix" ,rust-rustfix-0.4)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-tempfile" ,rust-tempfile-3.0)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-tester" ,rust-tester-0.5)
         ("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/laumann/compiletest-rs")
@@ -3482,10 +3788,10 @@ harness.")
         ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
         ("rust-tempdir" ,rust-tempdir-0.3))))))
 
-(define-public rust-console-0.9
+(define-public rust-console-0.11
   (package
     (name "rust-console")
-    (version "0.9.2")
+    (version "0.11.3")
     (source
       (origin
         (method url-fetch)
@@ -3494,24 +3800,50 @@ harness.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1h765951c9mywff534f0191slazykmif4290g2yarcwhd2cg7q25"))))
+          "0nmwkbb1j1zjb2z4akk83rqgnbv7j3dla4nxv0ibk9xvavk982cc"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-unicode-width" ,rust-unicode-width-0.1)
+       (("rust-encode-unicode" ,rust-encode-unicode-0.3)
+        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-terminal-size" ,rust-terminal-size-0.1)
         ("rust-termios" ,rust-termios-0.3)
-        ("rust-encode-unicode" ,rust-encode-unicode-0.3)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
         ("rust-winapi" ,rust-winapi-0.3)
-        ("rust-clicolors-control" ,rust-clicolors-control-1.0)
-        ("rust-regex" ,rust-regex-1.3)
-        ("rust-lazy-static" ,rust-lazy-static-1))))
+        ("rust-winapi-util" ,rust-winapi-util-0.1))))
     (home-page "https://github.com/mitsuhiko/console")
     (synopsis "Terminal and console abstraction for Rust")
     (description
      "This package provides a terminal and console abstraction for Rust")
     (license license:expat)))
 
+(define-public rust-console-0.9
+  (package
+    (inherit rust-console-0.11)
+    (name "rust-console")
+    (version "0.9.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "console" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1h765951c9mywff534f0191slazykmif4290g2yarcwhd2cg7q25"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-termios" ,rust-termios-0.3)
+        ("rust-encode-unicode" ,rust-encode-unicode-0.3)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-clicolors-control" ,rust-clicolors-control-1.0)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-lazy-static" ,rust-lazy-static-1))))))
+
 (define-public rust-console-0.7
   (package
     (name "rust-console")
@@ -3535,7 +3867,7 @@ harness.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-parking-lot" ,rust-parking-lot-0.8)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-termios" ,rust-termios-0.3)
         ("rust-unicode-width" ,rust-unicode-width-0.1)
         ("rust-winapi" ,rust-winapi-0.3))))
@@ -3811,7 +4143,7 @@ intrinsics.")
 (define-public rust-cpp-demangle-0.2
   (package
     (name "rust-cpp-demangle")
-    (version "0.2.14")
+    (version "0.2.16")
     (source
      (origin
        (method url-fetch)
@@ -3820,12 +4152,12 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1mm064x84868q06r4m4b7byf999nrkbhx7iyc4nchyssaxpsy5a1"))))
+         "0bamx2c78xzjhhvpg6p9bjarl6qm6j8npm6756kiqdh784w29j8k"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-afl" ,rust-afl-0.4)
+       (("rust-afl" ,rust-afl-0.8)
         ("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-glob" ,rust-glob-0.3))
        #:cargo-development-inputs
@@ -3837,6 +4169,27 @@ intrinsics.")
      "This package provides a crate for demangling C++ symbols.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-cpuid-bool-0.1
+  (package
+    (name "rust-cpuid-bool")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cpuid-bool" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r3v22cxly1shvw8qi0153708kggdqvh8jp0g82wbxi06d1mqdvd"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/RustCrypto/utils")
+    (synopsis "Lightweight alternative to is_x86_feature_detected")
+    (description
+     "This package provides a lightweight @code{no-std} compatible alternative
+to @code{is_x86_feature_detected}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-crates-index-0.13
   (package
     (name "rust-crates-index")
@@ -3925,7 +4278,7 @@ intrinsics.")
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-oorandom" ,rust-oorandom-11.1)
         ("rust-plotters" ,rust-plotters-0.2)
-        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
@@ -3970,13 +4323,13 @@ intrinsics.")
         ("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-rayon" ,rust-rayon-1)
+        ("rust-rayon-core" ,rust-rayon-core-1)
         ("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))
+        ("rust-walkdir" ,rust-walkdir-2.3))
        #:cargo-development-inputs
        (("rust-approx" ,rust-approx-0.3)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
@@ -4037,7 +4390,7 @@ intrinsics.")
 (define-public rust-crossbeam-0.7
   (package
     (name "rust-crossbeam")
-    (version "0.7.2")
+    (version "0.7.3")
     (source
      (origin
        (method url-fetch)
@@ -4046,19 +4399,18 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0g5jysq5x4gndc1v5sq9n3f1m97k7qihwdpigw6ar6knj14qm09d"))))
+         "13kzn2d49n2qn5q42y2dj48kyv6aln2d9smq8x9n675l3zzknck9"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1)
-        ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.3)
+        ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.4)
         ("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
-        ("rust-crossbeam-epoch" ,rust-crossbeam-epoch-0.7)
-        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
-        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6))
+        ("rust-crossbeam-epoch" ,rust-crossbeam-epoch-0.8)
+        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.2)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7))
        #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.4))))
+       (("rust-rand" ,rust-rand-0.6))))
     (home-page "https://github.com/crossbeam-rs/crossbeam")
     (synopsis "Tools for concurrent programming")
     (description "Tools for concurrent programming.")
@@ -4067,7 +4419,7 @@ intrinsics.")
 (define-public rust-crossbeam-channel-0.4
   (package
     (name "rust-crossbeam-channel")
-    (version "0.4.0")
+    (version "0.4.2")
     (source
       (origin
         (method url-fetch)
@@ -4076,14 +4428,14 @@ intrinsics.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "135ncx9680afs8jkjz8g3iq3naay9rn7942gxrdg2n9m1cxrmv5c"))))
+          "0qd05n5bcwafkmbzq1lspwrfi29xnzlw46qarg1sl0lwj68qdvfc"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7))
+     `(#:cargo-inputs
+        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
+         ("rust-maybe-uninit" ,rust-maybe-uninit-2.0))
         #:cargo-development-inputs
-        (("rust-num-cpus" ,rust-num-cpus-1.10)
+        (("rust-num-cpus" ,rust-num-cpus-1)
          ("rust-rand" ,rust-rand-0.6)
          ("rust-signal-hook" ,rust-signal-hook-0.1))))
     (home-page
@@ -4111,18 +4463,17 @@ intrinsics.")
         (base32
          "1ylyzb1m9qbvd1nd3vy38x9073wdmcy295ncjs7wf7ap476pzv68"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6))
        #:cargo-development-inputs
-       (("rust-num-cpus" ,rust-num-cpus-1.10)
+       (("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-signal-hook" ,rust-signal-hook-0.1))))))
 
 (define-public rust-crossbeam-deque-0.7
   (package
     (name "rust-crossbeam-deque")
-    (version "0.7.2")
+    (version "0.7.3")
     (source
      (origin
        (method url-fetch)
@@ -4131,13 +4482,13 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1jm3rqb3qfpfywrakyy81f61xnl4jsim7lam9digw6w6cdfr9an3"))))
+         "11c2c0x5grdba3ah3g94yn6b8s47xi8qwm85h8hq5vmf9nbsy0lz"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-crossbeam-epoch" ,rust-crossbeam-epoch-0.8)
-        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7))
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
+        ("rust-maybe-uninit" ,rust-maybe-uninit-2.0))
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.6))))
     (home-page
@@ -4170,7 +4521,7 @@ intrinsics.")
 (define-public rust-crossbeam-epoch-0.8
   (package
     (name "rust-crossbeam-epoch")
-    (version "0.8.0")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
@@ -4179,15 +4530,15 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1b2mgc2gxxvyzyxgd5wvn9k42gr6f9phi2swwjawpqswy3dynr2h"))))
+         "1knsf0zz7rgzxn0nwz5gajjcrivxpw3zrdcp946gdhdgr9sd53h5"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg-0.1)
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg-1.0)
         ("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
         ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-maybe-uninit" ,rust-maybe-uninit-2.0)
         ("rust-memoffset" ,rust-memoffset-0.5)
         ("rust-scopeguard" ,rust-scopeguard-1.0))
        #:cargo-development-inputs
@@ -4202,7 +4553,7 @@ intrinsics.")
   (package
     (inherit rust-crossbeam-epoch-0.8)
     (name "rust-crossbeam-epoch")
-    (version "0.7.1")
+    (version "0.7.2")
     (source
      (origin
        (method url-fetch)
@@ -4211,23 +4562,22 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1d408b9x82mdbnb405gw58v5mmdbj2rl28a1h7b9rmn25h8f7j84"))))
+         "1a9prma2nalqvys7f8wrazkdzh26w3mi5gzrk8mdmwrp5rvxdp7y"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-arrayvec" ,rust-arrayvec-0.4)
         ("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-memoffset" ,rust-memoffset-0.2)
-        ("rust-scopeguard" ,rust-scopeguard-0.3))
+        ("rust-memoffset" ,rust-memoffset-0.5)
+        ("rust-scopeguard" ,rust-scopeguard-1.0))
        #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.4))))))
+       (("rust-rand" ,rust-rand-0.6))))))
 
 (define-public rust-crossbeam-queue-0.2
   (package
     (name "rust-crossbeam-queue")
-    (version "0.2.1")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
@@ -4235,18 +4585,17 @@ intrinsics.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "1nwkjh185bdwjrv1zj2g7an9lglv8sp4459268m4fwvi3v5fx5f6"))))
+        (base32 "0w15z68nz3ac4f2s4djhwha8vmlwsh9dlfrmsl4x84y2ah5acjvp"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1)
-        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7))
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
+        ("rust-maybe-uninit" ,rust-maybe-uninit-2.0))
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.6))))
     (home-page
-     "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils")
+     "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-queue")
     (synopsis "Concurrent queues in Rust")
     (description
      "This crate provides concurrent queues that can be shared among threads.")
@@ -4269,11 +4618,10 @@ intrinsics.")
         (base32
          "0jsa9dbxnwqcxfws09vaschf92d4imlbbikmcn4ka8z7rzb9r5vw"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6))
        #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.4))))))
+       (("rust-rand" ,rust-rand-0.6))))))
 
 (define-public rust-crossbeam-utils-0.7
   (package
@@ -4290,9 +4638,8 @@ intrinsics.")
          "1a31wbrda1320gj2a6az1lin2d34xfc3xf88da4c17qy5lxcgiy3"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-autocfg" ,rust-autocfg-0.1)
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg-1.0)
         ("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-lazy-static" ,rust-lazy-static-1))
        #:cargo-development-inputs
@@ -4308,7 +4655,7 @@ intrinsics.")
   (package
     (inherit rust-crossbeam-utils-0.7)
     (name "rust-crossbeam-utils")
-    (version "0.6.5")
+    (version "0.6.6")
     (source
      (origin
        (method url-fetch)
@@ -4317,14 +4664,13 @@ intrinsics.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0p5aa8k3wpsn17md4rx038ac2azm9354knbxdfvn7dd7yk76yc7q"))))
+         "1rk0r9n04bmq4a3g2q5qhvvlmrmx780gc6h9lmc94mwndslkz5q4"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-lazy-static" ,rust-lazy-static-1))
        #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.4))))))
+       (("rust-rand" ,rust-rand-0.6))))))
 
 (define-public rust-crossterm-0.13
   (package
@@ -4372,8 +4718,34 @@ manipulating terminals.")
 around common WinAPI calls.")
     (license license:expat)))
 
+(define-public rust-crypto-mac-0.8
+  (package
+    (name "rust-crypto-mac")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "crypto-mac" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1axfs4zmy74rn9666p92j7nmcv11zdp2d51yrppc2dv26cqa715m"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-blobby" ,rust-blobby-0.1)
+        ("rust-generic-array" ,rust-generic-array-0.14)
+        ("rust-subtle" ,rust-subtle-2))))
+    (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-crypto-mac-0.7
   (package
+    (inherit rust-crypto-mac-0.8)
     (name "rust-crypto-mac")
     (version "0.7.0")
     (source
@@ -4385,20 +4757,52 @@ around common WinAPI calls.")
        (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))))
+        ("rust-subtle" ,rust-subtle-1.0))))))
+
+(define-public rust-cssparser-0.27
+  (package
+    (name "rust-cssparser")
+    (version "0.27.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cssparser" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "02nbm690rmkaz1ca0383qq7mc1g066w3s85f17pdihnda79njjvm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; Not all files included in the tarball.
+       #:cargo-inputs
+       (("rust-cssparser-macros" ,rust-cssparser-macros-0.6)
+        ("rust-dtoa-short" ,rust-dtoa-short-0.3)
+        ("rust-itoa" ,rust-itoa-0.4)
+        ("rust-matches" ,rust-matches-0.1)
+        ("rust-phf" ,rust-phf-0.8)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-syn" ,rust-syn-1.0))
+       #:cargo-development-inputs
+       (("rust-difference" ,rust-difference-2.0)
+        ("rust-encoding-rs" ,rust-encoding-rs-0.8)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/servo/rust-cssparser")
+    (synopsis "Rust implementation of CSS Syntax Level 3")
+    (description
+     "This package contains a Rust implementation of CSS Syntax Level 3.")
+    (license license:mpl2.0)))
 
 (define-public rust-cssparser-0.25
   (package
+    (inherit rust-cssparser-0.27)
     (name "rust-cssparser")
     (version "0.25.9")
     (source
@@ -4410,7 +4814,6 @@ Code} (MAC) algorithms.")
         (sha256
          (base32
           "03klvpdzsk4cyh8k0dbnlngzafv7gqywqrnsqqb3gfmrxyj8rqgv"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; Some test files missing.
        #:cargo-inputs
@@ -4430,15 +4833,35 @@ Code} (MAC) algorithms.")
        #:cargo-development-inputs
        (("rust-difference" ,rust-difference-2.0)
         ("rust-encoding-rs" ,rust-encoding-rs-0.8)
-        ("rust-serde-json" ,rust-serde-json-1.0))))
+        ("rust-serde-json" ,rust-serde-json-1.0))))))
+
+(define-public rust-cssparser-macros-0.6
+  (package
+    (name "rust-cssparser-macros")
+    (version "0.6.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "cssparser-macros" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vp13g4blyjvhg3j4r9b7vrwhnfi1y2fmhv8hxgficpjazg7bbnz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))))
     (home-page "https://github.com/servo/rust-cssparser")
-    (synopsis "Rust implementation of CSS Syntax Level 3")
+    (synopsis "Procedural macros for cssparser")
     (description
-     "This package contains a Rust implementation of CSS Syntax Level 3.")
+     "This package provides the procedural macros for rust-cssparser.")
     (license license:mpl2.0)))
 
 (define-public rust-cssparser-macros-0.3
   (package
+    (inherit rust-cssparser-macros-0.6)
     (name "rust-cssparser-macros")
     (version "0.3.6")
     (source
@@ -4450,19 +4873,13 @@ Code} (MAC) algorithms.")
         (sha256
          (base32
           "1vqyc5xm8a4va92vs1nn0cc46c930l2n21gccijnc5y7hx7cicav"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-phf-codegen" ,rust-phf-codegen-0.7)
         ("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-procedural-masquerade" ,rust-procedural-masquerade-0.1)
         ("rust-quote" ,rust-quote-1.0)
-        ("rust-syn" ,rust-syn-1.0))))
-    (home-page "https://github.com/servo/rust-cssparser")
-    (synopsis "Procedural macros for cssparser")
-    (description
-     "This package provides the procedural macros for rust-cssparser.")
-    (license license:mpl2.0)))
+        ("rust-syn" ,rust-syn-1.0))))))
 
 (define-public rust-csv-1.1
   (package
@@ -4531,9 +4948,9 @@ Code} (MAC) algorithms.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-memchr" ,rust-memchr-2.3))
+       (("rust-memchr" ,rust-memchr-2))
        #:cargo-development-inputs
-       (("rust-arrayvec" ,rust-arrayvec-0.4))))
+       (("rust-arrayvec" ,rust-arrayvec-0.5))))
     (home-page "https://github.com/BurntSushi/rust-csv")
     (synopsis
      "Bare bones CSV parsing with no_std support")
@@ -4565,7 +4982,7 @@ Transparency logs for use with sct crate.")
 (define-public rust-ctor-0.1
   (package
     (name "rust-ctor")
-    (version "0.1.13")
+    (version "0.1.15")
     (source
       (origin
         (method url-fetch)
@@ -4574,16 +4991,14 @@ Transparency logs for use with sct crate.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1qgwkwyxishpp3wkbwq5i27zdxz539ii0sz129xj061ffnnfbia7"))))
+          "09x2my9x33srjdip8yf4lm5gq7xqis2694abvpa64r60pajqm19r"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-syn" ,rust-syn-1.0)
         ("rust-quote" ,rust-quote-1.0))
-       ;#:cargo-development-inputs
-       ;(("rust-libc-print" ,rust-libc-print-0.1))
-       ))
+       #:cargo-development-inputs
+       (("rust-libc-print" ,rust-libc-print-0.1))))
     (home-page "https://github.com/mmastrac/rust-ctor")
     (synopsis "__attribute__((constructor)) for Rust")
     (description
@@ -4771,7 +5186,7 @@ and arithmetic.")
 (define-public rust-dav1d-sys-0.3
   (package
     (name "rust-dav1d-sys")
-    (version "0.3.0")
+    (version "0.3.2")
     (source
       (origin
         (method url-fetch)
@@ -4780,12 +5195,11 @@ and arithmetic.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1022czzp3s54r42x6rhr870w1fwzyp7b6qn0zirpz55zmqjpgnwa"))))
+          "1jdxhnlxcml6jd67lx78ifzkn1xm18zfk4li7vjdh3fa61i073kx"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-bindgen" ,rust-bindgen-0.52)
+       (("rust-bindgen" ,rust-bindgen-0.54)
         ("rust-metadeps" ,rust-metadeps-1.1))
        #:phases
        (modify-phases %standard-phases
@@ -4802,7 +5216,7 @@ and arithmetic.")
        ("llvm" ,llvm)))
     (home-page "https://github.com/rust-av/dav1d-rs")
     (synopsis "FFI bindings to dav1d")
-    (description "FFI bindings to dav1d")
+    (description "This package provides FFI bindings to dav1d.")
     (license license:expat)))
 
 (define-public rust-decimal-2.0
@@ -4835,8 +5249,37 @@ and arithmetic.")
      "Decimal floating point arithmetic for Rust.")
     (license license:asl2.0)))
 
+(define-public rust-deflate-0.8
+  (package
+    (name "rust-deflate")
+    (version "0.8.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "deflate" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0x6iqlayg129w63999kz97m279m0jj4x4sm6gkqlvmp73y70yxvk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; not all test files included
+       #:cargo-inputs
+       (("rust-adler32" ,rust-adler32-1)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-gzip-header" ,rust-gzip-header-0.3))
+       #:cargo-development-inputs
+       (("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))
+    (home-page "https://github.com/image-rs/deflate-rs")
+    (synopsis "DEFLATE, zlib and gzip encoder written in rust")
+    (description
+     "This package provides a DEFLATE, zlib and gzip encoder written in rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-deflate-0.7
   (package
+    (inherit rust-deflate-0.8)
     (name "rust-deflate")
     (version "0.7.20")
     (source
@@ -4848,18 +5291,12 @@ and arithmetic.")
        (sha256
         (base32
          "1d7d9fpmgjnznrksmd3vlv3dyw01wsrm11ifil6ag22871xnlyvh"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-adler32" ,rust-adler32-1)
         ("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))))
+        ("rust-flate2" ,rust-flate2-1.0))))))
 
 (define-public rust-defmac-0.2
   (package
@@ -4997,6 +5434,44 @@ for arbitrary structs.")
     (description "Internal helper library for the derive_builder crate.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-derive-more-0.99
+  (package
+    (name "rust-derive-more")
+    (version "0.99.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "derive-more" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xizcpj39rx0474mbbx8m0xww98qh92zsg82gf52qnvbryqri299"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f  ; Some test files missing.
+       #:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))
+       #:cargo-development-inputs
+       (("rust-peg" ,rust-peg-0.5)
+        ("rust-rustc-version" ,rust-rustc-version-0.2))))
+    (home-page "https://github.com/JelteF/derive_more")
+    (synopsis "Adds derive macros for more traits")
+    (description
+     "Rust has lots of builtin traits that are implemented for its basic
+types, such as @code{Add}, @code{Not}, @code{From} or @code{Display}.
+However, when wrapping these types inside your own structs or enums you lose
+the implementations of these traits and are required to recreate them.  This is
+especially annoying when your own structures are very simple, such as when
+using the commonly advised newtype pattern (e.g. @code{MyInt(i32)}).
+
+This library tries to remove these annoyances and the corresponding
+boilerplate code.  It does this by allowing you to derive lots of commonly used
+traits for both structs and enums.")
+    (license license:expat)))
+
 (define-public rust-derive-new-0.5
   (package
     (name "rust-derive-new")
@@ -5091,8 +5566,33 @@ structs and enums.")
        #:cargo-development-inputs
        (("rust-term" ,rust-term-0.2))))))
 
+(define-public rust-digest-0.9
+  (package
+    (name "rust-digest")
+    (version "0.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "digest" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rmhvk33rgvd6ll71z8sng91a52rw14p0drjn1da0mqa138n1pfk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-blobby" ,rust-blobby-0.1)
+        ("rust-generic-array" ,rust-generic-array-0.14))))
+    (home-page "https://github.com/RustCrypto/traits")
+    (synopsis "Traits for cryptographic hash functions")
+    (description
+     "Traits for cryptographic hash functions.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-digest-0.8
   (package
+    (inherit rust-digest-0.9)
     (name "rust-digest")
     (version "0.8.1")
     (source
@@ -5104,16 +5604,40 @@ structs and enums.")
        (sha256
         (base32
          "1madjl27f3kj5ql7kwgvb9c8b7yb7bv7yfgx7rqzj4i3fp4cil7k"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-blobby" ,rust-blobby-0.1)
-        ("rust-generic-array" ,rust-generic-array-0.13))))
-    (home-page "https://github.com/RustCrypto/traits")
-    (synopsis "Traits for cryptographic hash functions")
+        ("rust-generic-array" ,rust-generic-array-0.13))))))
+
+(define-public rust-directories-3
+  (package
+    (name "rust-directories")
+    (version "3.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "directories" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03ysv4m6mhsc3w1xnvncd5sxf7v2dz917awq6ksx0n0bsqwxdzpq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-dirs-sys" ,rust-dirs-sys-0.3))
+       #:cargo-development-inputs
+       (("rust-bencher" ,rust-bencher-0.1))))
+    (home-page "https://github.com/dirs-dev/directories-rs")
+    (synopsis "Library for standard locations of data directories")
     (description
-     "Traits for cryptographic hash functions.")
+     "This package provides a tiny mid-level library that provides
+platform-specific standard locations of directories for config,
+cache and other data on Linux, Windows and macOS by leveraging the
+mechanisms defined by the XDG base/user directory specifications
+on Linux, the Known Folder API on Windows, and the Standard
+Directory guidelines on macOS.")
     (license (list license:expat license:asl2.0))))
 
 (define-public rust-dirs-2.0
@@ -5130,8 +5654,7 @@ structs and enums.")
          (base32
           "1qymhyq7w7wlf1dirq6gsnabdyzg6yi2yyxkx6c4ldlkbjdaibhk"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-dirs-sys" ,rust-dirs-sys-0.3))))
     (build-system cargo-build-system)
@@ -5168,7 +5691,7 @@ Windows, and the Standard Directory guidelines on macOS.")
 (define-public rust-dirs-sys-0.3
   (package
     (name "rust-dirs-sys")
-    (version "0.3.4")
+    (version "0.3.5")
     (source
      (origin
        (method url-fetch)
@@ -5177,11 +5700,10 @@ Windows, and the Standard Directory guidelines on macOS.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0yyykdcmbc476z1v9m4z5jb8y91dw6kgzpkiqi2ig07xx0yv585g"))))
+         "0ym5843xack45b1yjahrh3q2f72shnwf1dd2jncf9qsxf3sxg4wf"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cfg-if" ,rust-cfg-if-0.1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-redox-users" ,rust-redox-users-0.3)
@@ -5230,7 +5752,7 @@ for intentionally leaking memory")
          "019nzy993hxaiazcdnayx3csv2iki34i535asw11ki96hakkrs84"))))
     (build-system cargo-build-system)
     (arguments '(#:tests? #f))  ; Tests only run on Mac.
-    (home-page "http://github.com/SSheldon/rust-dispatch")
+    (home-page "https://github.com/SSheldon/rust-dispatch")
     (synopsis "Rust wrapper for Apple's Grand Central Dispatch")
     (description "This package provides a Rust wrapper for Apple's Grand
 Central Dispatch.")
@@ -5338,7 +5860,7 @@ from macros.")
     (arguments
      `(#:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-strsim" ,rust-strsim-0.9))))
     (home-page "https://github.com/docopt/docopt.rs")
@@ -5923,7 +6445,7 @@ encodings.")
         ("rust-packed-simd" ,rust-packed-simd-0.3)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0))))
     (home-page "https://docs.rs/encoding_rs/")
@@ -5974,10 +6496,10 @@ Standard.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
-        ("rust-humantime" ,rust-humantime-1.3)
+        ("rust-humantime" ,rust-humantime-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1)
-        ("rust-termcolor" ,rust-termcolor-1.0))))
+        ("rust-regex" ,rust-regex-1)
+        ("rust-termcolor" ,rust-termcolor-1))))
     (home-page "https://github.com/sebasmagri/env_logger/")
     (synopsis "Logging implementation for @code{log}")
     (description
@@ -6000,13 +6522,12 @@ is configured via an environment variable.")
         (base32
          "1lx2s5nk96xx4i3m4zc4ghqgi8kb07dsnyiv8jk2clhax42dxz5a"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
-        ("rust-humantime" ,rust-humantime-1.2)
+        ("rust-humantime" ,rust-humantime-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1)
-        ("rust-termcolor" ,rust-termcolor-1.0))))))
+        ("rust-regex" ,rust-regex-1)
+        ("rust-termcolor" ,rust-termcolor-1))))))
 
 (define-public rust-env-logger-0.5
   (package
@@ -6023,13 +6544,12 @@ is configured via an environment variable.")
          (base32
           "0f0c4i4c65jh8lci0afl5yg74ac0lbnpxcp81chj114zwg9a9c0m"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
-        ("rust-humantime" ,rust-humantime-1.2)
+        ("rust-humantime" ,rust-humantime-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1)
-        ("rust-termcolor" ,rust-termcolor-1.0))))))
+        ("rust-regex" ,rust-regex-1)
+        ("rust-termcolor" ,rust-termcolor-1))))))
 
 (define-public rust-env-logger-0.4
   (package
@@ -6108,7 +6628,7 @@ variables.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-indexmap" ,rust-indexmap-1.0))))
+       (("rust-indexmap" ,rust-indexmap-1))))
     (home-page "https://github.com/sagiegurari/envmnt")
     (synopsis "Environment variables utility functions")
     (description
@@ -6287,6 +6807,34 @@ variables.")
      `(#:cargo-inputs
        (("rust-backtrace" ,rust-backtrace-0.3))))))
 
+(define-public rust-escargot-0.5
+  (package
+    (name "rust-escargot")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "escargot" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0vd9phbpd6yrnsksn2as8flvq8ykzvck2zlz143xpp42qaz9dkvl"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; not all test files included
+       #:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0))
+       #:cargo-development-inputs
+       (("rust-assert-fs" ,rust-assert-fs-0.11))))
+    (home-page "https://github.com/crate-ci/escargot")
+    (synopsis "Cargo API written in Paris")
+    (description "Cargo API written in Paris.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-euclid-0.20
   (package
     (name "rust-euclid")
@@ -6477,8 +7025,42 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
     (description "Fallible streaming iteration")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-fern-0.6
+  (package
+    (name "rust-fern")
+    (version "0.6.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fern" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0rghkbmpm7ckchd2fr2ifahprc7ll3qs0fbwsspsgj6cy0h4i6lc"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-chrono" ,rust-chrono-0.4)
+        ("rust-colored" ,rust-colored-1.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-reopen" ,rust-reopen-0.3)
+        ("rust-syslog" ,rust-syslog-3.3)
+        ("rust-syslog" ,rust-syslog-4.0))
+       #:cargo-development-inputs
+       (("rust-chrono" ,rust-chrono-0.4)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/daboross/fern")
+    (synopsis "Simple, efficient logging")
+    (description
+     "This package provides a simple, efficient logging system for Rust.")
+    (license license:expat)))
+
 (define-public rust-fern-0.5
   (package
+    (inherit rust-fern-0.6)
     (name "rust-fern")
     (version "0.5.9")
     (source
@@ -6490,7 +7072,6 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
         (sha256
          (base32
           "1anslk0hx9an4ypcaxqff080hgbcxm7ji7d4qf4f6qx1mkav16p6"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-libc" ,rust-libc-0.2)
@@ -6502,12 +7083,7 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
         ("rust-syslog" ,rust-syslog-4.0))
        #:cargo-development-inputs
        (("rust-clap" ,rust-clap-2)
-        ("rust-tempdir" ,rust-tempdir-0.3))))
-    (home-page "https://github.com/daboross/fern")
-    (synopsis "Simple, efficient logging")
-    (description
-     "This package provides a simple, efficient logging system for Rust.")
-    (license license:expat)))
+        ("rust-tempdir" ,rust-tempdir-0.3))))))
 
 (define-public rust-filetime-0.2
   (package
@@ -6530,7 +7106,7 @@ provides implementations for @code{HashMap} and @code{HashSet}.")
         ("rust-redox-syscall" ,rust-redox-syscall-0.1)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.0))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/alexcrichton/filetime")
     (synopsis "Platform-agnostic accessors of timestamps in File metadata")
     (description
@@ -6568,10 +7144,10 @@ cross platform API.")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-fixedbitset-0.1
+(define-public rust-fixedbitset-0.2
   (package
     (name "rust-fixedbitset")
-    (version "0.1.9")
+    (version "0.2.0")
     (source
       (origin
         (method url-fetch)
@@ -6579,15 +7155,28 @@ cross platform API.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0czam11mi80dbyhf4rd4lz0ihcf7vkfchrdcrn45wbs0h40dxm46"))))
+          "0kg03p777wc0dajd9pvlcnsyrwa8dhqwf0sd9r4dw0p82rs39arp"))))
     (build-system cargo-build-system)
-    (arguments '(#:skip-build? #t))
     (home-page "https://github.com/petgraph/fixedbitset")
     (synopsis "FixedBitSet is a simple bitset collection")
     (description "FixedBitSet is a simple bitset collection.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-fixedbitset-0.1
+  (package
+    (inherit rust-fixedbitset-0.2)
+    (name "rust-fixedbitset")
+    (version "0.1.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "fixedbitset" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0czam11mi80dbyhf4rd4lz0ihcf7vkfchrdcrn45wbs0h40dxm46"))))))
+
 (define-public rust-flame-0.2
   (package
     (name "rust-flame")
@@ -6683,10 +7272,10 @@ Reader/Writer streams.  Contains bindings for zlib, deflate, and gzip-based
 streams.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-float-cmp-0.5
+(define-public rust-float-cmp-0.6
   (package
     (name "rust-float-cmp")
-    (version "0.5.3")
+    (version "0.6.0")
     (source
       (origin
         (method url-fetch)
@@ -6695,7 +7284,7 @@ streams.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "03hmx3n48hjm0x1ig84n1j87kzp75lzr6cj1sgi6a6pykgn4n8km"))))
+          "0zb1lv3ga18vsnpjjdg87yazbzvmfwwllj3aiid8660rp3qw8qns"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs (("rust-num-traits" ,rust-num-traits-0.2))))
@@ -6705,6 +7294,21 @@ streams.")
      "Floating point approximate comparison traits in Rust.")
     (license license:expat)))
 
+(define-public rust-float-cmp-0.5
+  (package
+    (inherit rust-float-cmp-0.6)
+    (name "rust-float-cmp")
+    (version "0.5.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "float-cmp" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "03hmx3n48hjm0x1ig84n1j87kzp75lzr6cj1sgi6a6pykgn4n8km"))))))
+
 (define-public rust-float-cmp-0.3
   (package
     (inherit rust-float-cmp-0.5)
@@ -7444,7 +8048,7 @@ featuring zero allocations, composability, and iterator-like interfaces.")
     (arguments
      `(#:cargo-inputs
        (("rust-futures" ,rust-futures-0.1)
-        ("rust-num-cpus" ,rust-num-cpus-1.11))))
+        ("rust-num-cpus" ,rust-num-cpus-1))))
     (home-page "https://github.com/rust-lang-nursery/futures-rs")
     (synopsis "Implementation of thread pools which hand out futures")
     (description
@@ -7473,7 +8077,7 @@ the computation on the threads themselves.")
        (("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))))
+        ("rust-num-cpus" ,rust-num-cpus-1))))
     (home-page "https://rust-lang-nursery.github.io/futures-rs")
     (synopsis "Executors for asynchronous tasks based on the futures-rs library")
     (description
@@ -7501,7 +8105,7 @@ the computation on the threads themselves.")
        (("rust-futures-channel-preview" ,rust-futures-channel-preview-0.3)
         ("rust-futures-core-preview" ,rust-futures-core-preview-0.3)
         ("rust-futures-util-preview" ,rust-futures-util-preview-0.3)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-pin-utils" ,rust-pin-utils-0.1))))
     (home-page "https://github.com/rust-lang/futures-rs")
     (synopsis
@@ -7743,7 +8347,7 @@ futures-rs library.")
         ("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-memchr" ,rust-memchr-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)
@@ -7779,7 +8383,7 @@ for the futures-rs library.")
         ("rust-futures-select-macro-preview"
          ,rust-futures-select-macro-preview-0.3)
         ("rust-futures-sink-preview" ,rust-futures-sink-preview-0.3)
-        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-memchr" ,rust-memchr-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)
@@ -7871,10 +8475,10 @@ archive to be linked into Rustcode.")
 API library @code{gdi32}.")
     (license license:expat)))
 
-(define-public rust-gdk-pixbuf-0.7
+(define-public rust-gdk-pixbuf-0.8
   (package
     (name "rust-gdk-pixbuf")
-    (version "0.7.0")
+    (version "0.8.0")
     (source
       (origin
         (method url-fetch)
@@ -7883,16 +8487,14 @@ API library @code{gdi32}.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1k2g3w2p57m68bi5sldvkmgjgslgqswrjsijjhqaibdvw67409lp"))))
+          "1mxxca0fkcw2rsd3kl3nvlb8ys4cgxqx4n5isjbv0adk8q624j72"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-fragile" ,rust-fragile-0.3)
-        ("rust-futures-preview" ,rust-futures-preview-0.3)
-        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
-        ("rust-gio" ,rust-gio-0.7)
+       (("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
+        ("rust-gio" ,rust-gio-0.8)
         ("rust-gio-sys" ,rust-gio-sys-0.9)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-libc" ,rust-libc-0.2)
@@ -7907,6 +8509,35 @@ API library @code{gdi32}.")
      "Rust bindings for the GdkPixbuf library.")
     (license license:expat)))
 
+(define-public rust-gdk-pixbuf-0.7
+  (package
+    (inherit rust-gdk-pixbuf-0.8)
+    (name "rust-gdk-pixbuf")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gdk-pixbuf" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1k2g3w2p57m68bi5sldvkmgjgslgqswrjsijjhqaibdvw67409lp"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-fragile" ,rust-fragile-0.3)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
+        ("rust-gio" ,rust-gio-0.7)
+        ("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
+
 (define-public rust-gdk-pixbuf-sys-0.9
   (package
     (name "rust-gdk-pixbuf-sys")
@@ -7931,7 +8562,7 @@ API library @code{gdi32}.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("gdk-pixbuf" ,gdk-pixbuf)))
     (home-page "https://gtk-rs.org/")
@@ -7965,8 +8596,38 @@ API library @code{gdi32}.")
     (description "Stackfull Generator Library in Rust.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-generic-array-0.14
+  (package
+    (name "rust-generic-array")
+    (version "0.14.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "generic-array" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "107r1fpm8zcab3lzci4x9par6ik8bra390c60rhxvnmz7dgnlx5c"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1.0)
+        ("rust-typenum" ,rust-typenum-1)
+        ("rust-version-check" ,rust-version-check-0.9))
+       #:cargo-development-inputs
+       (("rust-bincode" ,rust-bincode-1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/fizyk20/generic-array.git")
+    (synopsis
+     "Generic types implementing functionality of arrays")
+    (description
+     "Generic types implementing functionality of arrays.")
+    (license license:expat)))
+
 (define-public rust-generic-array-0.13
   (package
+    (inherit rust-generic-array-0.14)
     (name "rust-generic-array")
     (version "0.13.2")
     (source
@@ -7978,22 +8639,13 @@ API library @code{gdi32}.")
        (sha256
         (base32
          "1kddwxpd58y807y1r3lijg7sw3gxm6nczl6wp57gamhv6mhygl8f"))))
-    (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-serde" ,rust-serde-1.0)
-        ("rust-typenum" ,rust-typenum-1.10))
+        ("rust-typenum" ,rust-typenum-1))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
-        ("rust-serde-json" ,rust-serde-json-1.0))))
-    (home-page
-     "https://github.com/fizyk20/generic-array")
-    (synopsis
-     "Generic types implementing functionality of arrays")
-    (description
-     "Generic types implementing functionality of arrays.")
-    (license license:expat)))
+       (("rust-bincode" ,rust-bincode-1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))))
 
 (define-public rust-generic-array-0.12
   (package
@@ -8093,6 +8745,72 @@ API library @code{gdi32}.")
 retrieving random data from system source.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-gettext-rs-0.4
+  (package
+    (name "rust-gettext-rs")
+    (version "0.4.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gettext-rs" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0z6fcsn1g3w9mlgfj6ln6qvqf8610w3zwvk6g062h657v114lifz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-gettext-sys" ,rust-gettext-sys-0.19)
+        ("rust-locale-config" ,rust-locale-config-0.2))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'use-system-gettext
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gettext (assoc-ref inputs "gettext")))
+               (setenv "GETTEXT_SYSTEM" gettext)
+               #t))))))
+    (inputs
+     `(("gettext" ,gettext-minimal)))
+    (home-page "https://github.com/Koka/gettext-rs")
+    (synopsis "GNU Gettext FFI binding for Rust")
+    (description "This package provides GNU Gettext FFI bindings for Rust.")
+    (license license:expat)))
+
+(define-public rust-gettext-sys-0.19
+  (package
+    (name "rust-gettext-sys")
+    (version "0.19.9")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gettext-sys" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0lzi6ja81vc16mhcdmn3lw35120n9ijhvsy5dh5775mpbfxc8d70"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin (delete-file "gettext-0.19.8.1.tar.xz") #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cc" ,rust-cc-1.0))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'use-system-gettext
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((gettext (assoc-ref inputs "gettext")))
+               (setenv "GETTEXT_SYSTEM" gettext)
+               #t))))))
+    (inputs
+     `(("gettext" ,gettext-minimal)))
+    (home-page "https://github.com/Koka/gettext-rs")
+    (synopsis "Gettext raw FFI bindings")
+    (description "This package provides raw FFI bindings for GNU Gettext.")
+    (license license:expat)))
+
 (define-public rust-gfx-0.18
   (package
     (name "rust-gfx")
@@ -8246,7 +8964,7 @@ retrieving random data from system source.")
         ("rust-stable-deref-trait"
          ,rust-stable-deref-trait-1.1)
         ("rust-smallvec" ,rust-smallvec-1)
-        ("rust-indexmap" ,rust-indexmap-1.3)
+        ("rust-indexmap" ,rust-indexmap-1)
         ("rust-byteorder" ,rust-byteorder-1.3))))
     (home-page "https://github.com/gimli-rs/gimli")
     (synopsis "Library for reading and writing the DWARF debugging format")
@@ -8269,21 +8987,20 @@ retrieving random data from system source.")
          "0ma1zg2klqr47rasm7jn3zzd1j1pj2a8wkfbv5zsx10qh43phy4k"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-arrayvec" ,rust-arrayvec-0.4)
         ("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-fallible-iterator" ,rust-fallible-iterator-0.2)
-        ("rust-indexmap" ,rust-indexmap-1.0)
+        ("rust-indexmap" ,rust-indexmap-1)
         ("rust-stable-deref-trait" ,rust-stable-deref-trait-1.1))
        #:cargo-development-inputs
        (("rust-crossbeam" ,rust-crossbeam-0.7)
         ("rust-getopts" ,rust-getopts-0.2)
         ("rust-memmap" ,rust-memmap-0.7)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-object" ,rust-object-0.12)
-        ("rust-rayon" ,rust-rayon-1.1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-test-assembler" ,rust-test-assembler-0.1)
         ("rust-typed-arena" ,rust-typed-arena-1.4))))
     (home-page "https://github.com/gimli-rs/gimli")
@@ -8293,10 +9010,10 @@ retrieving random data from system source.")
 DWARF debugging format.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-gio-0.7
+(define-public rust-gio-0.8
   (package
     (name "rust-gio")
-    (version "0.7.0")
+    (version "0.8.1")
     (source
       (origin
         (method url-fetch)
@@ -8305,22 +9022,27 @@ DWARF debugging format.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1qv0wc1hqyb81c03h81s3xrl9jslrw23fr4yhygxbhih9k9vaqb2"))))
+          "19cnla2ya0mi6wwaabd5mxbq2kzq46dg6jq2z19rpqyc2na0zl8c"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs
+     `(#:tests? #f  ; Not all files included in the tarball.
+       #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-fragile" ,rust-fragile-0.3)
-        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-futures-channel" ,rust-futures-channel-0.3)
+        ("rust-futures-core" ,rust-futures-core-0.3)
+        ("rust-futures-io" ,rust-futures-io-0.3)
+        ("rust-futures-util" ,rust-futures-util-0.3)
         ("rust-gio-sys" ,rust-gio-sys-0.9)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
        #:cargo-development-inputs
-       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1)
+        ("rust-serial-test" ,rust-serial-test-0.1)
+        ("rust-serial-test-derive" ,rust-serial-test-derive-0.1))))
     (inputs
      `(("glib" ,glib)))
     (home-page "https://gtk-rs.org/")
@@ -8328,6 +9050,35 @@ DWARF debugging format.")
     (description "Rust bindings for the Gio library.")
     (license license:expat)))
 
+(define-public rust-gio-0.7
+  (package
+    (inherit rust-gio-0.8)
+    (name "rust-gio")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "gio" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1qv0wc1hqyb81c03h81s3xrl9jslrw23fr4yhygxbhih9k9vaqb2"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-fragile" ,rust-fragile-0.3)
+        ("rust-futures-preview" ,rust-futures-preview-0.3)
+        ("rust-gio-sys" ,rust-gio-sys-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
+
 (define-public rust-gio-sys-0.9
   (package
     (name "rust-gio-sys")
@@ -8351,7 +9102,7 @@ DWARF debugging format.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("glib" ,glib)))
     (home-page "http://gtk-rs.org/")
@@ -8405,7 +9156,7 @@ DWARF debugging format.")
        (("rust-docopt" ,rust-docopt-1.1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
-        ("rust-tempfile" ,rust-tempfile-3.1)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-thread-id" ,rust-thread-id-3.3)
         ("rust-time" ,rust-time-0.1))))
     (native-inputs
@@ -8609,7 +9360,7 @@ reading and writing git repositories.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("glib" ,glib)))
     (home-page "https://gtk-rs.org/")
@@ -8641,7 +9392,7 @@ reading and writing git repositories.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))))
+       (("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-glib-sys-0.9
   (package
@@ -8664,7 +9415,7 @@ reading and writing git repositories.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("glib" ,glib)))
     (home-page "http://gtk-rs.org/")
@@ -8752,7 +9503,7 @@ shell style patterns.")
 (define-public rust-globset-0.4
   (package
     (name "rust-globset")
-    (version "0.4.4")
+    (version "0.4.5")
     (source
      (origin
        (method url-fetch)
@@ -8761,18 +9512,20 @@ shell style patterns.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1wnqxq91liknmr2w93wjq2spyxbrd1pmnhd4nbi3921dr35a4nlj"))))
+         "0841ihdg1ps2618cs0kjbr3pn3rzrj24rx3n4pg1sa6p1d1xmlbs"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-aho-corasick" ,rust-aho-corasick-0.7)
         ("rust-bstr" ,rust-bstr-0.2)
         ("rust-fnv" ,rust-fnv-1.0)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1))
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-glob" ,rust-glob-0.3))))
+       (("rust-glob" ,rust-glob-0.3)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
     (home-page
      "https://github.com/BurntSushi/ripgrep/tree/master/globset")
     (synopsis
@@ -8783,6 +9536,33 @@ the process of matching one or more glob patterns against a single candidate
 path simultaneously, and returning all of the globs that matched.")
     (license (list license:expat license:unlicense))))
 
+(define-public rust-globwalk-0.5
+  (package
+    (name "rust-globwalk")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "globwalk" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "09axyql26s09z60sgi3y3lkin9swy2b5km3b0v6mm84xhlljxyl9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ignore" ,rust-ignore-0.4)
+        ("rust-walkdir" ,rust-walkdir-2.3))
+       #:cargo-development-inputs
+       (("rust-docmatic" ,rust-docmatic-0.1)
+        ("rust-tempdir" ,rust-tempdir-0.3))))
+    (home-page "https://github.com/gilnaa/globwalk")
+    (synopsis "Glob-matched recursive file system walking")
+    (description
+     "Glob-matched recursive file system walking.")
+    (license license:expat)))
+
 (define-public rust-glutin-0.22
   (package
     (name "rust-glutin")
@@ -8992,7 +9772,7 @@ path simultaneously, and returning all of the globs that matched.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("glib" ,glib)))
     (home-page "http://gtk-rs.org/")
@@ -9077,7 +9857,7 @@ loading crate.")
 (define-public rust-grep-0.2
   (package
     (name "rust-grep")
-    (version "0.2.4")
+    (version "0.2.7")
     (source
      (origin
        (method url-fetch)
@@ -9086,7 +9866,7 @@ loading crate.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1pkhjladybzzciwg0mjk3vjz5fyi76hk0d3hgyzv2jxlyp8v4fyc"))))
+         "0s3y1rx94swqnciz2zzifm8pmy2iyck270skgxhgkq7ab6x96bjq"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -9098,8 +9878,8 @@ loading crate.")
         ("rust-grep-regex" ,rust-grep-regex-0.1)
         ("rust-grep-searcher" ,rust-grep-searcher-0.1))
        #:cargo-development-inputs
-       (("rust-termcolor" ,rust-termcolor-1.0)
-        ("rust-walkdir" ,rust-walkdir-2.2))))
+       (("rust-termcolor" ,rust-termcolor-1)
+        ("rust-walkdir" ,rust-walkdir-2.3))))
     (home-page "https://github.com/BurntSushi/ripgrep")
     (synopsis "Line oriented regex searching as a library")
     (description
@@ -9109,7 +9889,7 @@ loading crate.")
 (define-public rust-grep-cli-0.1
   (package
     (name "rust-grep-cli")
-    (version "0.1.3")
+    (version "0.1.5")
     (source
      (origin
        (method url-fetch)
@@ -9118,19 +9898,18 @@ loading crate.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "05a502x5m4fijwx7zj9icxna2dx86scm76ap80zr89pnvpbfk1hp"))))
+         "10mi7pkvlm5r478jhwlx15wlmqylq9fmkdg4qazz1xcifx7pi4im"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-atty" ,rust-atty-0.2)
         ("rust-bstr" ,rust-bstr-0.2)
         ("rust-globset" ,rust-globset-0.4)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-same-file" ,rust-same-file-1.0)
-        ("rust-termcolor" ,rust-termcolor-1.0)
+        ("rust-termcolor" ,rust-termcolor-1)
         ("rust-winapi-util" ,rust-winapi-util-0.1))))
     (home-page
      "https://github.com/BurntSushi/ripgrep")
@@ -9143,7 +9922,7 @@ loading crate.")
 (define-public rust-grep-matcher-0.1
   (package
     (name "rust-grep-matcher")
-    (version "0.1.3")
+    (version "0.1.4")
     (source
      (origin
        (method url-fetch)
@@ -9152,13 +9931,13 @@ loading crate.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "113lafx3abrr96ahpz6yn905ian1w3qsr5hijbb909p2j0xgmhkm"))))
+         "0l4k9c0iw17vqw02z0wbx1nfj9h2xiiqx1px32lhhw7ibbyy3w7x"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-memchr" ,rust-memchr-2.2))
+       (("rust-memchr" ,rust-memchr-2))
        #:cargo-development-inputs
-       (("rust-regex" ,rust-regex-1.1))))
+       (("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/BurntSushi/ripgrep")
     (synopsis "Trait for regular expressions")
     (description
@@ -9170,7 +9949,7 @@ the regex engine it uses pluggable.")
 (define-public rust-grep-pcre2-0.1
   (package
     (name "rust-grep-pcre2")
-    (version "0.1.3")
+    (version "0.1.4")
     (source
      (origin
        (method url-fetch)
@@ -9179,7 +9958,7 @@ the regex engine it uses pluggable.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1wjc3gsan20gapga8nji6jcrmwn9n85q5zf2yfq6g50c7abkc2ql"))))
+         "0sk8b188j81zfrmmy7jsq0pckydz42qf7w0pd2lwyfsa2nw4yksb"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -9197,7 +9976,7 @@ the regex engine it uses pluggable.")
 (define-public rust-grep-printer-0.1
   (package
     (name "rust-grep-printer")
-    (version "0.1.3")
+    (version "0.1.5")
     (source
      (origin
        (method url-fetch)
@@ -9206,19 +9985,18 @@ the regex engine it uses pluggable.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0mxc1yx5sx89f00imlm5d3hxwdgglv9rzwdki8ba50gvq8a2nr8m"))))
+         "004xv2bb52x801n0m1pknkdmzcjbi9fk9625m49y9s0ghh6d8d3z"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-base64" ,rust-base64-0.10)
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.12)
         ("rust-bstr" ,rust-bstr-0.2)
         ("rust-grep-matcher" ,rust-grep-matcher-0.1)
         ("rust-grep-searcher" ,rust-grep-searcher-0.1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-termcolor" ,rust-termcolor-1.0))
+        ("rust-termcolor" ,rust-termcolor-1))
        #:cargo-development-inputs
        (("rust-grep-regex" ,rust-grep-regex-0.1))))
     (home-page "https://github.com/BurntSushi/ripgrep")
@@ -9231,7 +10009,7 @@ standard printing of search results, similar to grep itself.")
 (define-public rust-grep-regex-0.1
   (package
     (name "rust-grep-regex")
-    (version "0.1.4")
+    (version "0.1.8")
     (source
      (origin
        (method url-fetch)
@@ -9240,17 +10018,17 @@ standard printing of search results, similar to grep itself.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "090k1sbn4jq680dmgp1jyqs7f9dzn198k0806kc8f40jcjazd88n"))))
+         "1lm3mpp93m8qw6sgcqw64inadp0z061x3xb0pnn51684594mxfm7"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-aho-corasick" ,rust-aho-corasick-0.7)
+        ("rust-bstr" ,rust-bstr-0.2)
         ("rust-grep-matcher" ,rust-grep-matcher-0.1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-regex-syntax" ,rust-regex-syntax-0.6)
-        ("rust-thread-local" ,rust-thread-local-0.3)
-        ("rust-utf8-ranges" ,rust-utf8-ranges-1.0))))
+        ("rust-thread-local" ,rust-thread-local-1.0))))
     (home-page "https://github.com/BurntSushi/ripgrep")
     (synopsis "Use Rust's regex library with the grep crate")
     (description
@@ -9260,7 +10038,7 @@ standard printing of search results, similar to grep itself.")
 (define-public rust-grep-searcher-0.1
   (package
     (name "rust-grep-searcher")
-    (version "0.1.6")
+    (version "0.1.7")
     (source
      (origin
        (method url-fetch)
@@ -9269,13 +10047,12 @@ standard printing of search results, similar to grep itself.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "09ag16im12v6k0lzkyvbvamn1iw15kfx1jbfldb7z5xa7208l04a"))))
+         "06sb8n7nvaa4dnqnsx9jxvs78nnzmyp110cyzdvxnw09i4h7728r"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-bstr" ,rust-bstr-0.2)
-        ("rust-bytecount" ,rust-bytecount-0.5)
+        ("rust-bytecount" ,rust-bytecount-0.6)
         ("rust-encoding-rs" ,rust-encoding-rs-0.8)
         ("rust-encoding-rs-io" ,rust-encoding-rs-io-0.1)
         ("rust-grep-matcher" ,rust-grep-matcher-0.1)
@@ -9283,7 +10060,7 @@ standard printing of search results, similar to grep itself.")
         ("rust-memmap" ,rust-memmap-0.7))
        #:cargo-development-inputs
        (("rust-grep-regex" ,rust-grep-regex-0.1)
-        ("rust-regex" ,rust-regex-1.1))))
+        ("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/BurntSushi/ripgrep")
     (synopsis "Line oriented regex searching as a library")
     (description
@@ -9357,7 +10134,7 @@ of gzip files based on the gzip header implementation in the @code{flate2} crate
         ("rust-fnv" ,rust-fnv-1.0)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-http" ,rust-http-0.1)
-        ("rust-indexmap" ,rust-indexmap-1.0)
+        ("rust-indexmap" ,rust-indexmap-1)
         ("rust-log" ,rust-log-0.4)
         ("rust-slab" ,rust-slab-0.4)
         ("rust-string" ,rust-string-0.2)
@@ -9428,13 +10205,13 @@ IEEE 754-2008 binary16 type.")
          ("rust-quick-error" ,rust-quick-error-1.2)
          ("rust-serde" ,rust-serde-1.0)
          ("rust-serde-json" ,rust-serde-json-1.0)
-         ("rust-walkdir" ,rust-walkdir-2.2))
+         ("rust-walkdir" ,rust-walkdir-2.3))
         #:cargo-development-inputs
         (("rust-criterion" ,rust-criterion-0.2)
          ("rust-env-logger" ,rust-env-logger-0.6)
          ("rust-maplit" ,rust-maplit-1.0)
          ("rust-serde-derive" ,rust-serde-derive-1.0)
-         ("rust-tempfile" ,rust-tempfile-3.0))))
+         ("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/sunng87/handlebars-rust")
     (synopsis "Handlebars templating implemented in Rust")
     (description
@@ -9460,15 +10237,15 @@ the template engine that renders the official Rust website")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
-        ("rust-rayon" ,rust-rayon-1.1)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-rustc-std-workspace-alloc" ,rust-rustc-std-workspace-alloc-1.0)
         ("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.5)
-        ("rust-rayon" ,rust-rayon-1.1)
-        ("rust-rustc-hash" ,rust-rustc-hash-1.0)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
         ("rust-serde-test" ,rust-serde-test-1.0))))
     (home-page "https://github.com/rust-lang/hashbrown")
     (synopsis "Rust port of Google's SwissTable hash map")
@@ -9729,34 +10506,108 @@ compile time.")
      `(#:cargo-inputs
        (("rust-proc-macro-hack" ,rust-proc-macro-hack-0.4))))))
 
-(define-public rust-hostname-0.1
+(define-public rust-hmac-0.8
+  (package
+    (name "rust-hmac")
+    (version "0.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "hmac" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0h48wc7iysh4xd6ci4prh8bb7nszijrh9w3blaaq8a6cilk8hs0j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crypto-mac" ,rust-crypto-mac-0.8)
+        ("rust-digest" ,rust-digest-0.9))
+       #:cargo-development-inputs
+       (("rust-crypto-mac" ,rust-crypto-mac-0.8)
+        ("rust-md-5" ,rust-md-5-0.9)
+        ("rust-sha2" ,rust-sha2-0.9))))
+    (home-page "https://github.com/RustCrypto/MACs")
+    (synopsis "Generic implementation of Hash-based Message Authentication Code")
+    (description
+     "This package provides a generic implementation of @acronym{HMAC,
+Hash-based Message Authentication Code}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-hmac-0.7
+  (package
+    (inherit rust-hmac-0.8)
+    (name "rust-hmac")
+    (version "0.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "hmac" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "15cnwpssp2n1kdm9x7abir67f2hp3q6rdfj1mcck3hm4rmj5xjsx"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crypto-mac" ,rust-crypto-mac-0.7)
+        ("rust-digest" ,rust-digest-0.8))
+       #:cargo-development-inputs
+       (("rust-crypto-mac" ,rust-crypto-mac-0.7)
+        ("rust-md-5" ,rust-md-5-0.8)
+        ("rust-sha2" ,rust-sha2-0.8))))))
+
+(define-public rust-hostname-0.3
   (package
     (name "rust-hostname")
-    (version "0.1.5")
+    (version "0.3.1")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "hostname" version))
-        (file-name (string-append name "-" version ".crate"))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0kprf862qaa7lwdms6aw7f3275h0j2rwhs9nz5784pm8hdmb9ki1"))))
+          "0rz8yf70cvzl3nry71m4bz9w6x4j9kdz3qng6pnwhk2h20z1qwrw"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-libc" ,rust-libc-0.2)
-        ("rust-winutil" ,rust-winutil-0.1))))
+        ("rust-match-cfg" ,rust-match-cfg-0.1)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-version-sync" ,rust-version-sync-0.8))))
     (home-page "https://github.com/svartalf/hostname")
     (synopsis "Get hostname for Rust")
     (description
      "Get hostname for Rust.")
     (license license:expat)))
 
-(define-public rust-html5ever-0.23
+(define-public rust-hostname-0.1
+  (package
+    (inherit rust-hostname-0.3)
+    (name "rust-hostname")
+    (version "0.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "hostname" version))
+        (file-name (string-append name "-" version ".crate"))
+        (sha256
+         (base32
+          "0kprf862qaa7lwdms6aw7f3275h0j2rwhs9nz5784pm8hdmb9ki1"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winutil" ,rust-winutil-0.1))))))
+
+(define-public rust-html5ever-0.24
   (package
     (name "rust-html5ever")
-    (version "0.23.0")
+    (version "0.24.1")
     (source
      (origin
        (method url-fetch)
@@ -9764,14 +10615,13 @@ compile time.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "1dx8k7synrmf3fl6gcfm5q1cybfglvhc9xnvly3s5xcc0b45mrjw"))))
+        (base32 "1js4cr04941ld4r4fqpblvfigy75ds48qcbqhnr7nmz4l6q86m02"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-log" ,rust-log-0.4)
         ("rust-mac" ,rust-mac-0.1)
-        ("rust-markup5ever" ,rust-markup5ever-0.8)
+        ("rust-markup5ever" ,rust-markup5ever-0.9)
         ("rust-proc-macro2" ,rust-proc-macro2-0.4)
         ("rust-quote" ,rust-quote-0.6)
         ("rust-syn" ,rust-syn-0.15))
@@ -9786,6 +10636,31 @@ compile time.")
      "High-performance browser-grade HTML5 parser.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-html5ever-0.23
+  (package/inherit rust-html5ever-0.24
+    (name "rust-html5ever")
+    (version "0.23.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "html5ever" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1dx8k7synrmf3fl6gcfm5q1cybfglvhc9xnvly3s5xcc0b45mrjw"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-log" ,rust-log-0.4)
+        ("rust-mac" ,rust-mac-0.1)
+        ("rust-markup5ever" ,rust-markup5ever-0.8)
+        ("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.2)
+        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-rustc-test" ,rust-rustc-test-0.3)
+        ("rust-typed-arena" ,rust-typed-arena-1.4))))))
+
 (define-public rust-http-0.2
   (package
     (name "rust-http")
@@ -9806,7 +10681,7 @@ compile time.")
         ("rust-itoa" ,rust-itoa-0.4))
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-indexmap" ,rust-indexmap-1.0)
+        ("rust-indexmap" ,rust-indexmap-1)
         ("rust-quickcheck" ,rust-quickcheck-0.9)
         ("rust-rand" ,rust-rand-0.7)
         ("rust-seahash" ,rust-seahash-3.0)
@@ -9838,7 +10713,7 @@ requests and responses.")
         ("rust-fnv" ,rust-fnv-1.0)
         ("rust-itoa" ,rust-itoa-0.4))
        #:cargo-development-inputs
-       (("rust-indexmap" ,rust-indexmap-1.0)
+       (("rust-indexmap" ,rust-indexmap-1)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
         ("rust-rand" ,rust-rand-0.4)
         ("rust-seahash" ,rust-seahash-3.0)
@@ -9906,7 +10781,7 @@ or response body.")
        #:cargo-inputs
        ;; Haven't packaged rustls and webpki because of license
        (("rust-native-tls" ,rust-native-tls-0.2)
-        ("rust-unicase" ,rust-unicase-2.4))))
+        ("rust-unicase" ,rust-unicase-2))))
     (home-page "https://github.com/jayjamesjay/http_req")
     (synopsis
      "HTTP client with built-in HTTPS support")
@@ -9938,10 +10813,10 @@ or response body.")
      "This package provides a tiny, safe, speedy, zero-copy HTTP/1.x parser.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-humantime-1.3
+(define-public rust-humantime-2
   (package
     (name "rust-humantime")
-    (version "1.3.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
@@ -9950,15 +10825,12 @@ or response body.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z"))))
+         "0yivhqyi8xik2j6sd3q45ybakjx8jsx5632dx9xjn0birh4dj6iw"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-quick-error" ,rust-quick-error-1.2))
-       #:cargo-development-inputs
+     `(#:cargo-development-inputs
        (("rust-chrono" ,rust-chrono-0.4)
-        ("rust-rand" ,rust-rand-0.4)
+        ("rust-rand" ,rust-rand-0.6)
         ("rust-time" ,rust-time-0.1))))
     (home-page "https://github.com/tailhook/humantime")
     (synopsis
@@ -9968,11 +10840,11 @@ or response body.")
 SystemTime}}.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-humantime-1.2
+(define-public rust-humantime-1
   (package
-    (inherit rust-humantime-1.3)
+    (inherit rust-humantime-2)
     (name "rust-humantime")
-    (version "1.2.0")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
@@ -9981,7 +10853,15 @@ SystemTime}}.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "057ilhy6vc9iqhhby5ymh45m051pgxwq2z437gwkbnqhw7rfb9rw"))))))
+         "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-quick-error" ,rust-quick-error-1.2))
+       #:cargo-development-inputs
+       (("rust-chrono" ,rust-chrono-0.4)
+        ("rust-rand" ,rust-rand-0.4)
+        ("rust-time" ,rust-time-0.1))))))
 
 (define-public rust-hyper-0.12
   (package
@@ -10021,7 +10901,7 @@ SystemTime}}.")
         ("rust-want" ,rust-want-0.2))
        #:cargo-development-inputs
        (("rust-futures-timer" ,rust-futures-timer-0.1)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-rustc-version" ,rust-rustc-version-0.2)
         ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.3)
         ("rust-serde" ,rust-serde-1.0)
@@ -10122,7 +11002,7 @@ SystemTime}}.")
 (define-public rust-ignore-0.4
   (package
     (name "rust-ignore")
-    (version "0.4.11")
+    (version "0.4.16")
     (source
      (origin
        (method url-fetch)
@@ -10131,20 +11011,22 @@ SystemTime}}.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "07js5k91v870b2i5rl5shg37214yzwl0p6fjqy06y0v97gyawbaj"))))
+         "0wpcv4qgfzcyzydhlqa2qr56j72fj1a66s11xzdji59898mbzp12"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-crossbeam-channel" ,rust-crossbeam-channel-0.4)
+       (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
         ("rust-globset" ,rust-globset-0.4)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-regex" ,rust-regex-1)
         ("rust-same-file" ,rust-same-file-1.0)
         ("rust-thread-local" ,rust-thread-local-1.0)
-        ("rust-walkdir" ,rust-walkdir-2.2)
-        ("rust-winapi-util" ,rust-winapi-util-0.1))))
+        ("rust-walkdir" ,rust-walkdir-2.3)
+        ("rust-winapi-util" ,rust-winapi-util-0.1))
+       #:cargo-development-inputs
+       (("rust-crossbeam-channel" ,rust-crossbeam-channel-0.4))))
     (home-page "https://github.com/BurntSushi/ripgrep/tree/master/ignore")
     (synopsis "Efficiently match ignore files such as .gitignore")
     (description
@@ -10152,8 +11034,49 @@ SystemTime}}.")
 ignore files such as .gitignore against file paths.")
     (license (list license:unlicense license:expat))))
 
+(define-public rust-image-0.23
+  (package
+    (name "rust-image")
+    (version "0.23.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "image" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1d2a80k7pwqshliqi5fw1dwkz7q9zd6pjnwpw8zxc1v4xhzmbc5m"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Some test images are missing from the release.
+       #:cargo-inputs
+       (("rust-bytemuck" ,rust-bytemuck-1)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-gif" ,rust-gif-0.10)
+        ("rust-jpeg-decoder" ,rust-jpeg-decoder-0.1)
+        ("rust-num-iter" ,rust-num-iter-0.1)
+        ("rust-num-rational" ,rust-num-rational-0.3)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-png" ,rust-png-0.16)
+        ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
+        ("rust-tiff" ,rust-tiff-0.5))
+       #:cargo-development-inputs
+       (("rust-crc32fast" ,rust-crc32fast-1.2)
+        ("rust-criterion" ,rust-criterion-0.3)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-num-complex" ,rust-num-complex-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.9))))
+    (home-page "https://github.com/image-rs/image")
+    (synopsis "Imaging library written in Rust")
+    (description
+     "Imaging library written in Rust.  Provides basic filters and decoders
+for the most common image formats.")
+    (license license:expat)))
+
 (define-public rust-image-0.22
   (package
+    (inherit rust-image-0.23)
     (name "rust-image")
     (version "0.22.5")
     (source
@@ -10165,7 +11088,6 @@ ignore files such as .gitignore against file paths.")
        (sha256
         (base32
          "0jpbd0p1q7xx6395ba9ikz2k4cfp26qczisa8m2v15w3hzd2mv88"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; Some test images are missing from the release.
        #:cargo-inputs
@@ -10182,13 +11104,7 @@ ignore files such as .gitignore against file paths.")
        (("rust-crc32fast" ,rust-crc32fast-1.2)
         ("rust-glob" ,rust-glob-0.3)
         ("rust-num-complex" ,rust-num-complex-0.2)
-        ("rust-quickcheck" ,rust-quickcheck-0.9))))
-    (home-page "https://github.com/image-rs/image")
-    (synopsis "Imaging library written in Rust")
-    (description
-     "Imaging library written in Rust.  Provides basic filters and decoders
-for the most common image formats.")
-    (license license:expat)))
+        ("rust-quickcheck" ,rust-quickcheck-0.9))))))
 
 (define-public rust-image-0.21
   (package
@@ -10252,10 +11168,10 @@ for the most common image formats.")
         ("rust-num-complex" ,rust-num-complex-0.2)
         ("rust-quickcheck" ,rust-quickcheck-0.6))))))
 
-(define-public rust-indexmap-1.3
+(define-public rust-indexmap-1
   (package
     (name "rust-indexmap")
-    (version "1.3.2")
+    (version "1.4.0")
     (source
       (origin
         (method url-fetch)
@@ -10264,14 +11180,20 @@ for the most common image formats.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "14i2gmq9pwaafvlxmsc12j6539hjgqk4j4jz40fz763vbcn08vq7"))))
+          "1ziabh0lc4wwahv3qgv6aqckyydcrczpagpfp770jn5m2fqv5663"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-autocfg" ,rust-autocfg-1.0)
         ("rust-serde" ,rust-serde-1.0)
-        ("rust-rayon" ,rust-rayon-1.3))))
+        ("rust-rayon" ,rust-rayon-1))
+       #:cargo-development-inputs
+       (("rust-fnv" ,rust-fnv-1.0)
+        ("rust-itertools" ,rust-itertools-0.8)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-serde-test" ,rust-serde-test-1.0))))
     (home-page "https://github.com/bluss/indexmap")
     (synopsis "Hash table with consistent order and fast iteration.")
     (description
@@ -10284,48 +11206,6 @@ removals, and it allows lookup of its elements by either hash table key
 or numerical index.  A corresponding hash set type is also provided.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-indexmap-1.0
-  (package
-    (name "rust-indexmap")
-    (version "1.0.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "indexmap" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "13f5k1kl2759y4xfy0vhays35fmrkmhqngbr2ny8smvrbz0ag0by"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-serde" ,rust-serde-1.0))
-       #:cargo-development-inputs
-       (("rust-fnv" ,rust-fnv-1.0)
-        ("rust-itertools" ,rust-itertools-0.8)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-serde-test" ,rust-serde-test-1.0))))
-    (home-page "https://github.com/bluss/indexmap")
-    (synopsis
-     "Hash table with consistent order and fast iteration")
-    (description
-     "This package provides a hash table with consistent order and fast iteration.
-
-The indexmap is a hash table where the iteration order of the
-key-value pairs is independent of the hash values of the keys.  It has
-the usual hash table functionality, it preserves insertion order
-except after removals, and it allows lookup of its elements by either
-hash table key or numerical index.  A corresponding hash set type is
-also provided.
-
-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")
@@ -10584,8 +11464,46 @@ immutable interval tree.")
     (description "Parsing ISO8601 dates using nom.")
     (license license:expat)))
 
+(define-public rust-itertools-0.9
+  (package
+    (name "rust-itertools")
+    (version "0.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "itertools" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0jyml7ygr7kijkcjdl3fk5f34y5h5jsavclim7l13zjiavw1hkr8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-either" ,rust-either-1.5))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-permutohedron" ,rust-permutohedron-0.2)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-cargo-toml
+           (lambda _
+             (substitute* "Cargo.toml"
+               (("=0.3.0") "0.3"))
+             #t)))))
+    (home-page
+     "https://github.com/rust-itertools/itertools")
+    (synopsis
+     "Extra iterator adaptors, iterator methods, free functions, and macros")
+    (description
+     "Extra iterator adaptors, iterator methods, free functions, and macros.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-itertools-0.8
   (package
+    (inherit rust-itertools-0.9)
     (name "rust-itertools")
     (version "0.8.2")
     (source
@@ -10597,7 +11515,6 @@ immutable interval tree.")
        (sha256
         (base32
          "1154j48aw913v5jnyhpxialxhdn2sfpl4d7bwididyb1r05jsspm"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -10605,14 +11522,7 @@ immutable interval tree.")
        #:cargo-development-inputs
        (("rust-permutohedron" ,rust-permutohedron-0.2)
         ("rust-quickcheck" ,rust-quickcheck-0.7)
-        ("rust-rand" ,rust-rand-0.6))))
-    (home-page
-     "https://github.com/rust-itertools/itertools")
-    (synopsis
-     "Extra iterator adaptors, iterator methods, free functions, and macros")
-    (description
-     "Extra iterator adaptors, iterator methods, free functions, and macros.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-rand" ,rust-rand-0.6))))))
 
 (define-public rust-itertools-0.7
   (package
@@ -10634,6 +11544,27 @@ immutable interval tree.")
        (("rust-permutohedron" ,rust-permutohedron-0.2)
         ("rust-quickcheck" ,rust-quickcheck-0.5))))))
 
+(define-public rust-itertools-0.5
+  (package
+    (inherit rust-itertools-0.7)
+    (name "rust-itertools")
+    (version "0.5.10")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "itertools" version))
+        (file-name (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1z4lyrakgynvhylya72qb3vizmxmd62whjmg4r8k01d4inbxccs8"))))
+    (arguments
+     `(#:tests? #f ; Tests fail to compile
+       #:cargo-inputs
+       (("rust-either" ,rust-either-1.5))
+       #:cargo-development-inputs
+       (("rust-permutohedron" ,rust-permutohedron-0.2)
+        ("rust-quickcheck" ,rust-quickcheck-0.4))))))
+
 (define-public rust-itertools-num-0.1
   (package
     (name "rust-itertools-num")
@@ -10868,7 +11799,7 @@ primitives to an @code{io::Write}.")
        (("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
        (("rust-futures" ,rust-futures-0.1)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-tempdir" ,rust-tempdir-0.3)
         ("rust-tokio-core" ,rust-tokio-core-0.1)
         ("rust-tokio-process" ,rust-tokio-process-0.2))))
@@ -10896,11 +11827,11 @@ primitives to an @code{io::Write}.")
      `(#:tests? #f      ; Some test files missing.
        #:cargo-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-rayon" ,rust-rayon-1.1))
+        ("rust-rayon" ,rust-rayon-1))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.3)
         ("rust-png" ,rust-png-0.14)
-        ("rust-walkdir" ,rust-walkdir-2.2))))
+        ("rust-walkdir" ,rust-walkdir-2.3))))
     (home-page "https://github.com/image-rs/jpeg-decoder")
     (synopsis "JPEG decoder")
     (description "JPEG decoder written in Rust.")
@@ -11051,7 +11982,7 @@ language tags.")
        ("rust-itertools" ,rust-itertools-0.8)
        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
        ("rust-petgraph" ,rust-petgraph-0.4)
-       ("rust-regex" ,rust-regex-1.3)
+       ("rust-regex" ,rust-regex-1)
        ("rust-regex-syntax" ,rust-regex-syntax-0.6)
        ("rust-serde" ,rust-serde-1.0)
        ("rust-serde-derive" ,rust-serde-derive-1.0)
@@ -11082,7 +12013,7 @@ grammars.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-regex" ,rust-regex-1.3))))
+       (("rust-regex" ,rust-regex-1))))
   (home-page "https://github.com/lalrpop/lalrpop")
   (synopsis "Runtime library for parsers generated by LALRPOP")
   (description "THis package provides the runtime library for parsers
@@ -11259,7 +12190,7 @@ requires non-const function calls to be computed.")
 (define-public rust-libc-0.2
   (package
     (name "rust-libc")
-    (version "0.2.68")
+    (version "0.2.71")
     (source
      (origin
        (method url-fetch)
@@ -11267,11 +12198,10 @@ requires non-const function calls to be computed.")
        (file-name (string-append name "-" version ".crate"))
        (sha256
         (base32
-         "1w6z9krcqn7p200sb80dxx76iyvw3jdz949zxr1sgfr3a50c186y"))))
+         "0jbgi25rhglhvpxv62alyzyral6601kldmlhbxim4w6j15jv0mwl"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-rustc-std-workspace-core" ,rust-rustc-std-workspace-core-1.0))))
     (home-page "https://github.com/rust-lang/libc")
     (synopsis "Raw FFI bindings to platform libraries like libc")
@@ -11290,14 +12220,14 @@ values of all the exported APIs match the platform that libc is compiled for.")
 (define-public rust-libc-print-0.1
   (package
     (name "rust-libc-print")
-    (version "0.1.11")
+    (version "0.1.13")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "libc-print" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1sh4l815w7zxg8w17fvwj63y421sjqxxrdamzwyvg90n6mr70phv"))))
+        (base32 "0cjvz622b9bmf32q3mzmxv9ddxfdla6z2v647v8f3qx7lci9kmji"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
@@ -11618,9 +12548,10 @@ graphics and video games.")
           "1ffa2whkyh9mwvdlpk6v8pjkg8p8mlzyjfymq5adll9a18sl80zk"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-safemem" ,rust-safemem-0.3))))
+     `(#:cargo-inputs
+       (("rust-safemem" ,rust-safemem-0.3))
+       #:cargo-development-inputs
+       (("rust-rand" ,rust-rand-0.5))))
     (home-page "https://bitbucket.org/marshallpierce/line-wrap-rs/src")
     (synopsis "Efficiently insert line separators")
     (description
@@ -11630,7 +12561,7 @@ graphics and video games.")
 (define-public rust-linked-hash-map-0.5
   (package
     (name "rust-linked-hash-map")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
      (origin
        (method url-fetch)
@@ -11639,11 +12570,10 @@ graphics and video games.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "10qgbvh00q36ql0jh00rxh2jlq6qvl11n6mig0cvkpf4xf5bd4df"))))
+         "0jih3za0p1mywlnwcakc462q1byk6z8vnrzdm36hg6cxk7asdmcd"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-clippy" ,rust-clippy-0.0)
         ("rust-heapsize" ,rust-heapsize-0.4)
         ("rust-serde" ,rust-serde-1.0)
@@ -11783,7 +12713,7 @@ pairs in insertion order.")
        (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-objc" ,rust-objc-0.2)
         ("rust-objc-foundation" ,rust-objc-foundation-0.1)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/rust-locale/locale_config/")
     (synopsis "Maintains locale preferences for processes and threads")
@@ -11792,10 +12722,30 @@ pairs in insertion order.")
 by inspecting the system for user preference.")
     (license license:expat)))
 
+(define-public rust-locale-config-0.2
+  (package
+    (inherit rust-locale-config-0.3)
+    (name "rust-locale-config")
+    (version "0.2.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "locale-config" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0p2kdgc1c9cq5bi2rpszbhkh7pdk1fwxhij37gayb2alwkmikb3k"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-winapi" ,rust-winapi-0.3))))))
+
 (define-public rust-lock-api-0.3
   (package
     (name "rust-lock-api")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
@@ -11804,7 +12754,7 @@ by inspecting the system for user preference.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0yzlz7f5xl5sm129dq8jqsrcrkyv7jjnqwd4zr4ijsdlxjaxxckr"))))
+         "0xgc5dzmajh0akbh5d6d7rj9mh5rzpk74pyrc946v2ixgakj9nn4"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -11988,10 +12938,10 @@ by inspecting the system for user preference.")
 key-value pairs.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-lscolors-0.6
+(define-public rust-lscolors-0.7
   (package
     (name "rust-lscolors")
-    (version "0.6.0")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
@@ -12000,19 +12950,34 @@ key-value pairs.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0jxsgkn378kxkiqdshdjdclw5wwp2xaz45cqd3yw85fhn8a38fza"))))
+         "0vn1824lagf0xdv5rxyl7m9fbrcylyjibmnd4634dnn98m68jjyj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.12))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/sharkdp/lscolors")
     (synopsis "Colorize paths using the LS_COLORS environment variable")
     (description
      "Colorize paths using the LS_COLORS environment variable.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-lscolors-0.6
+  (package
+    (inherit rust-lscolors-0.7)
+    (name "rust-lscolors")
+    (version "0.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "lscolors" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jxsgkn378kxkiqdshdjdclw5wwp2xaz45cqd3yw85fhn8a38fza"))))))
+
 (define-public rust-lyon-geom-0.14
   (package
     (name "rust-lyon-geom")
@@ -12219,8 +13184,40 @@ platform-independently.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-markup5ever-0.10
+  (package
+    (name "rust-markup5ever")
+    (version "0.10.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "markup5ever" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1aqxl1lsc8s6ycsw5ibwynadnb9qpiab4ggwgdq9pjlnjdk8vqxa"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-log" ,rust-log-0.4)
+        ("rust-phf" ,rust-phf-0.8)
+        ("rust-string-cache" ,rust-string-cache-0.8)
+        ("rust-tendril" ,rust-tendril-0.4)
+        ("rust-phf-codegen" ,rust-phf-codegen-0.8)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0)
+        ("rust-string-cache-codegen" ,rust-string-cache-codegen-0.5))))
+    (home-page "https://github.com/servo/html5ever")
+    (synopsis "Common code for xml5ever and html5ever")
+    (description
+     "Common code for xml5ever and html5ever.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-markup5ever-0.9
   (package
+    (inherit rust-markup5ever-0.10)
     (name "rust-markup5ever")
     (version "0.9.0")
     (source
@@ -12232,7 +13229,6 @@ platform-independently.")
         (sha256
           (base32
             "00wxigkiw8f777pjp7q5kfq77xpwda9zskkwp698assh8yfisf35"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-log" ,rust-log-0.4)
@@ -12243,12 +13239,7 @@ platform-independently.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-string-cache-codegen" ,rust-string-cache-codegen-0.4))))
-    (home-page "https://github.com/servo/html5ever")
-    (synopsis "Common code for xml5ever and html5ever")
-    (description
-     "Common code for xml5ever and html5ever.")
-    (license (list license:asl2.0 license:expat))))
+        ("rust-string-cache-codegen" ,rust-string-cache-codegen-0.4))))))
 
 (define-public rust-markup5ever-0.8
   (package
@@ -12265,6 +13256,29 @@ platform-independently.")
         (base32
          "08ayl9aqjnmf7ly1ipy6dk3wjvyfn4w51l40jzh1fh984ykldbzi"))))))
 
+(define-public rust-match-cfg-0.1
+  (package
+    (name "rust-match-cfg")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "match-cfg" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1r5j3zqc3qr8ybcx95bk8q57mkizmgmffj5lmicd4i8d9riyigpz"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/gnzlbg/match_cfg")
+    (synopsis
+     "Define an item depending on a large number of `#[cfg]` parameters")
+    (description
+     "This package provides a convenience macro to ergonomically define an item
+depending on a large number of @code{#[cfg]} parameters.  Structured like match
+statement, the first matching branch is the item that gets emitted.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-matches-0.1
   (package
     (name "rust-matches")
@@ -12351,6 +13365,58 @@ parallelize and optimize.")
      "This package provides MaybeUninit for friends of backwards compatibility.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-md-5-0.9
+  (package
+    (name "rust-md-5")
+    (version "0.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "md-5" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "14x7yxfi4pk4qy3zmn9dj69yc18fg3cyind346kribjd93077qij"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-buffer" ,rust-block-buffer-0.8)
+        ("rust-digest" ,rust-digest-0.9)
+        ("rust-md5-asm" ,rust-md5-asm-0.4)
+        ("rust-opaque-debug" ,rust-opaque-debug-0.2))
+       #:cargo-development-inputs
+       (("rust-digest" ,rust-digest-0.9)
+        ("rust-hex-literal" ,rust-hex-literal-0.2))))
+    (home-page "https://github.com/RustCrypto/hashes")
+    (synopsis "MD5 hash function")
+    (description "MD5 hash function.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-md-5-0.8
+  (package
+    (inherit rust-md-5-0.9)
+    (name "rust-md-5")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "md-5" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1j5rfxy2p76xf5f1lgaw85xla0b1bbv2lknvdhv1j0ibmzfg72m1"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-buffer" ,rust-block-buffer-0.7)
+        ("rust-digest" ,rust-digest-0.8)
+        ("rust-md5-asm" ,rust-md5-asm-0.4)
+        ("rust-opaque-debug" ,rust-opaque-debug-0.2))
+       #:cargo-development-inputs
+       (("rust-digest" ,rust-digest-0.8)
+        ("rust-hex-literal" ,rust-hex-literal-0.1))))))
+
 (define-public rust-md5-0.6
   (package
     (name "rust-md5")
@@ -12385,7 +13451,59 @@ parallelize and optimize.")
         (base32
          "0j2s8aqdkhwhy7awga2bmv5n8qq8bgy8672iha9f3y871dm6vibr"))))))
 
-(define-public rust-memchr-2.3
+(define-public rust-md5-asm-0.4
+  (package
+    (name "rust-md5-asm")
+    (version "0.4.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "md5-asm" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0gpk5647js1k084jc7pg2gji0cvl6hjkkbfia6lnpk8y4shyairv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cc" ,rust-cc-1.0))))
+    (home-page "https://github.com/RustCrypto/asm-hashes")
+    (synopsis "Assembly implementation of MD5 compression function")
+    (description "This package contains an assembly implementation of MD5
+compression function.")
+    (supported-systems '("x86_64-linux" "i686-linux"))
+    (license license:expat)))
+
+(define-public rust-measureme-0.7
+  (package
+    (name "rust-measureme")
+    (version "0.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "measureme" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cmrrh86b3rvws6d7xp07wfn703yw02cakzirykvn4vh4p9hkxzy"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-memmap" ,rust-memmap-0.7)
+        ("rust-parking-lot" ,rust-parking-lot-0.9)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1))))
+    (home-page "https://github.com/rust-lang/measureme")
+    (synopsis "Support crate for rustc's self-profiling feature")
+    (description
+     "Record rustc compiler events and serializing them to a compact binary
+format with this support package.  It is integrated into rustc via the
+unstable -Z self-profile flag.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-memchr-2
   (package
     (name "rust-memchr")
     (version "2.3.3")
@@ -12409,35 +13527,9 @@ parallelize and optimize.")
 for searching bytes.")
     (license (list license:unlicense license:expat))))
 
-(define-public rust-memchr-2.2
-  (package
-    (name "rust-memchr")
-    (version "2.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "memchr" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "13j6ji9x9ydpi9grbss106gqqr3xn3bcfp28aydqfa4751qrfmw8"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc-0.2))
-       #:cargo-development-inputs
-       (("rust-quickcheck" ,rust-quickcheck-0.8))))
-    (home-page
-     "https://github.com/BurntSushi/rust-memchr")
-    (synopsis "Safe interface to memchr")
-    (description "The @code{memchr} crate provides heavily optimized routines
-for searching bytes.")
-    (license (list license:expat license:unlicense))))
-
 (define-public rust-memchr-1.0
   (package
-    (inherit rust-memchr-2.2)
+    (inherit rust-memchr-2)
     (name "rust-memchr")
     (version "1.0.2")
     (source
@@ -13058,16 +14150,16 @@ checking.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-rayon" ,rust-rayon-1.3))))
+       (("rust-rayon" ,rust-rayon-1))))
     (home-page "https://github.com/medek/nasm-rs")
     (synopsis "Run NASM during your Cargo build")
     (description "Run NASM during your Cargo build.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-nalgebra-0.18
+(define-public rust-nalgebra-0.19
   (package
     (name "rust-nalgebra")
-    (version "0.18.1")
+    (version "0.19.0")
     (source
       (origin
         (method url-fetch)
@@ -13076,14 +14168,14 @@ checking.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "18i1npny8s45ff67p5qpdwwsn36fp23mal8847fkb32cqgdzvada"))))
+          "0i87k57nav221lnr9z7ljlwxh8073qsx33bajdm146y00q805fqa"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-abomonation" ,rust-abomonation-0.7)
         ("rust-alga" ,rust-alga-0.9)
         ("rust-approx" ,rust-approx-0.3)
-        ("rust-generic-array" ,rust-generic-array-0.12)
+        ("rust-generic-array" ,rust-generic-array-0.13)
         ("rust-matrixmultiply" ,rust-matrixmultiply-0.2)
         ("rust-mint" ,rust-mint-0.5)
         ("rust-num-complex" ,rust-num-complex-0.2)
@@ -13091,13 +14183,14 @@ checking.")
         ("rust-num-traits" ,rust-num-traits-0.2)
         ("rust-pest" ,rust-pest-2.1)
         ("rust-pest-derive" ,rust-pest-derive-2.1)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.6)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-distr" ,rust-rand-distr-0.2)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
-        ("rust-typenum" ,rust-typenum-1.10))
+        ("rust-typenum" ,rust-typenum-1))
        #:cargo-development-inputs
-       (("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+       (("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
         ("rust-serde-json" ,rust-serde-json-1.0))))
     (home-page "https://nalgebra.org")
     (synopsis "Linear algebra library")
@@ -13106,6 +14199,42 @@ checking.")
 statically-sized or dynamically-sized matrices.")
     (license license:bsd-3)))
 
+(define-public rust-nalgebra-0.18
+  (package
+    (inherit rust-nalgebra-0.19)
+    (name "rust-nalgebra")
+    (version "0.18.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "nalgebra" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "18i1npny8s45ff67p5qpdwwsn36fp23mal8847fkb32cqgdzvada"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-abomonation" ,rust-abomonation-0.7)
+        ("rust-alga" ,rust-alga-0.9)
+        ("rust-approx" ,rust-approx-0.3)
+        ("rust-generic-array" ,rust-generic-array-0.12)
+        ("rust-matrixmultiply" ,rust-matrixmultiply-0.2)
+        ("rust-mint" ,rust-mint-0.5)
+        ("rust-num-complex" ,rust-num-complex-0.2)
+        ("rust-num-rational" ,rust-num-rational-0.2)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-pest" ,rust-pest-2.1)
+        ("rust-pest-derive" ,rust-pest-derive-2.1)
+        ("rust-quickcheck" ,rust-quickcheck-0.8)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0)
+        ("rust-typenum" ,rust-typenum-1))
+       #:cargo-development-inputs
+       (("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))))
+
 (define-public rust-named-pipe-0.4
   (package
     (name "rust-named-pipe")
@@ -13155,7 +14284,7 @@ IO of Windows's named pipes.")
         ("rust-schannel" ,rust-schannel-0.1)
         ("rust-security-framework" ,rust-security-framework-0.3)
         ("rust-security-framework-sys" ,rust-security-framework-sys-0.3)
-        ("rust-tempfile" ,rust-tempfile-3.1))
+        ("rust-tempfile" ,rust-tempfile-3))
        #:cargo-development-inputs
        (("rust-hex" ,rust-hex-0.3))
        #:phases
@@ -13371,7 +14500,7 @@ release (fork of debug_unreachable)")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-sysctl" ,rust-sysctl-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.0))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/nix-rust/nix")
     (synopsis "Rust friendly bindings to *nix APIs")
     (description
@@ -13406,7 +14535,7 @@ release (fork of debug_unreachable)")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.6)
         ("rust-sysctl" ,rust-sysctl-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.0))))))
+        ("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-no-panic-0.1
   (package
@@ -13428,7 +14557,7 @@ release (fork of debug_unreachable)")
         ("rust-quote" ,rust-quote-1.0)
         ("rust-syn" ,rust-syn-1.0))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/dtolnay/no-panic")
     (synopsis "Prove a function can't ever panic")
     (description
@@ -13500,8 +14629,8 @@ implementation (which is unstable / requires nightly).")
        #:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-lexical-core" ,rust-lexical-core-0.7)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-regex" ,rust-regex-1)
         ("rust-version-check" ,rust-version-check-0.9))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
@@ -13543,8 +14672,8 @@ combinators library.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-regex" ,rust-regex-1)
         ("rust-version-check" ,rust-version-check-0.1))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
@@ -13614,6 +14743,28 @@ combinators library.")
       "No-op proc_macro, literally does nothing")
     (license license:expat)))
 
+(define-public rust-normalize-line-endings-0.3
+  (package
+    (name "rust-normalize-line-endings")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "normalize-line-endings" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1gp52dfn2glz26a352zra8h04351icf0fkqzw1shkwrgh1vpz031"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/derekdreery/normalize-line-endings")
+    (synopsis
+     "Iterate over chars and returns a new iterator with all line endings")
+    (description
+     "This package takes an iterator over characters and returns a new iterator
+with all line endings.")
+    (license license:asl2.0)))
+
 (define-public rust-notify-4
   (package
     (name "rust-notify")
@@ -13639,7 +14790,7 @@ combinators library.")
         ("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-walkdir" ,rust-walkdir-2.3)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-tempdir" ,rust-tempdir-0.3))))
@@ -13701,8 +14852,37 @@ including bigint, complex, rational, range iterators, generic integers, and more
         ("rust-num-rational" ,rust-num-rational-0.1)
         ("rust-num-traits" ,rust-num-traits-0.2))))))
 
+(define-public rust-num-bigint-0.3
+  (package
+    (name "rust-num-bigint")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-bigint" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "186glgapg71zicah3wjld3sr5kx6rkcf6rf43gxmjw39wdszrwxp"))))
+    (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.9)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-autocfg" ,rust-autocfg-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-bigint-0.2
   (package
+    (inherit rust-num-bigint-0.3)
     (name "rust-num-bigint")
     (version "0.2.6")
     (source
@@ -13714,7 +14894,6 @@ including bigint, complex, rational, range iterators, generic integers, and more
        (sha256
         (base32
          "015k3wixdi4w698sappvy43pf8bvkw0f88xplmdgc3zfk2cpy309"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-num-integer" ,rust-num-integer-0.1)
@@ -13725,12 +14904,7 @@ including bigint, complex, rational, range iterators, generic integers, and more
         ("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))))
+       (("rust-serde-test" ,rust-serde-test-1.0))))))
 
 (define-public rust-num-bigint-0.1
   (package
@@ -13756,8 +14930,36 @@ including bigint, complex, rational, range iterators, generic integers, and more
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.4))))))
 
+(define-public rust-num-complex-0.3
+  (package
+    (name "rust-num-complex")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-complex" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1dczd81f2xb092dhb0brbdbf19pyfn0v9xmkf6qm0w4pv1dx0nmh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-serde" ,rust-serde-1.0))))
+    (home-page
+     "https://github.com/rust-num/num-complex")
+    (synopsis
+     "Complex numbers implementation for Rust")
+    (description
+     "Complex numbers implementation for Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-num-complex-0.2
   (package
+    (inherit rust-num-complex-0.3)
     (name "rust-num-complex")
     (version "0.2.4")
     (source
@@ -13769,20 +14971,12 @@ including bigint, complex, rational, range iterators, generic integers, and more
        (sha256
         (base32
          "15dwaksw729r3v14sgzc9723s3fnfixiir8jzwx7b7kim48r9cdn"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-num-traits" ,rust-num-traits-0.2)
         ("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
-     "Complex numbers implementation for Rust")
-    (description
-     "Complex numbers implementation for Rust.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-autocfg" ,rust-autocfg-1.0))))))
 
 (define-public rust-num-complex-0.1
   (package
@@ -13805,10 +14999,10 @@ including bigint, complex, rational, range iterators, generic integers, and more
         ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
         ("rust-serde" ,rust-serde-0.8))))))
 
-(define-public rust-num-cpus-1.11
+(define-public rust-num-cpus-1
   (package
     (name "rust-num-cpus")
-    (version "1.11.1")
+    (version "1.13.0")
     (source
       (origin
         (method url-fetch)
@@ -13817,14 +15011,12 @@ including bigint, complex, rational, range iterators, generic integers, and more
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0wlxs00cpg16z09fwchj1gdz1jxnf5dgg1cbidvq0sc75bnwbnkn"))))
+          "1cv6yxhz2zbnwn8pn1yn8grg7zsnd523947fby41a737aqvryj85"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
         (("rust-hermit-abi" ,rust-hermit-abi-0.1)
-         ("rust-libc" ,rust-libc-0.2))
-        #:cargo-development-inputs
-        (("rust-doc-comment" ,rust-doc-comment-0.3))))
+         ("rust-libc" ,rust-libc-0.2))))
     (home-page "https://github.com/seanmonstar/num_cpus")
     (synopsis "Get the number of CPUs on a machine")
     (description
@@ -13832,25 +15024,6 @@ including bigint, complex, rational, range iterators, generic integers, and more
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-num-cpus-1.10
-  (package
-    (inherit rust-num-cpus-1.11)
-    (name "rust-num-cpus")
-    (version "1.10.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "num_cpus" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0wrj3zvj6h3q26sqj9zxpd59frjb54n7jhjwf307clq31ic47vxw"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-libc" ,rust-libc-0.2))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3))))))
-
 (define-public rust-num-derive-0.3
   (package
     (name "rust-num-derive")
@@ -13953,8 +15126,36 @@ including bigint, complex, rational, range iterators, generic integers, and more
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-num-rational-0.3
+  (package
+    (name "rust-num-rational")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num-rational" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0f41j1l1kn5jj36a8xdy8kv242wlwq0ka578vm8gnb1n1wvdgd55"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-num-bigint" ,rust-num-bigint-0.3)
+        ("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-rational-0.2
   (package
+    (inherit rust-num-rational-0.3)
     (name "rust-num-rational")
     (version "0.2.3")
     (source
@@ -13966,19 +15167,13 @@ including bigint, complex, rational, range iterators, generic integers, and more
        (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))))
+        ("rust-autocfg" ,rust-autocfg-1.0))))))
 
 (define-public rust-num-rational-0.1
   (package
@@ -14125,7 +15320,7 @@ giga, kibi.")
        #:cargo-inputs
        (("rust-malloc-buf" ,rust-malloc-buf-0.0)
         ("rust-objc-exception" ,rust-objc-exception-0.1))))
-    (home-page "http://github.com/SSheldon/rust-objc")
+    (home-page "https://github.com/SSheldon/rust-objc")
     (synopsis "Objective-C Runtime bindings and wrapper for Rust")
     (description "This package provides an Objective-C Runtime bindings and
 wrapper for Rust.")
@@ -14149,7 +15344,7 @@ wrapper for Rust.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-cc" ,rust-cc-1.0))))
-    (home-page "http://github.com/SSheldon/rust-objc-exception")
+    (home-page "https://github.com/SSheldon/rust-objc-exception")
     (synopsis "Rust interface for Objective-C's throw and try/catch statements")
     (description
      "This package provides a Rust interface for Objective-C's throw and
@@ -14176,7 +15371,7 @@ try/catch statements.")
        (("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")
+    (home-page "https://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.")
@@ -14199,7 +15394,7 @@ Foundation framework.")
     (arguments
      `(#:tests? #f  ; Tests require gcc-objc.
        #:cargo-inputs (("rust-objc" ,rust-objc-0.2))))
-    (home-page "http://github.com/SSheldon/rust-objc-id")
+    (home-page "https://github.com/SSheldon/rust-objc-id")
     (synopsis "Rust smart pointers for Objective-C reference counting")
     (description
      "This package provides Rust smart pointers for Objective-C reference counting.")
@@ -14223,7 +15418,7 @@ Foundation framework.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-gcc" ,rust-gcc-0.3))))
-    (home-page "http://github.com/SSheldon/rust-objc")
+    (home-page "https://github.com/SSheldon/rust-objc")
     (synopsis "Utilities for testing Objective-C interop")
     (description
      "This package provides utilities for testing Objective-C interop.")
@@ -14253,7 +15448,7 @@ Foundation framework.")
         ("rust-uuid" ,rust-uuid-0.8)
         ("rust-flate2" ,rust-flate2-1.0)
         ("rust-crc32fast" ,rust-crc32fast-1.2)
-        ("rust-indexmap" ,rust-indexmap-1.3))))
+        ("rust-indexmap" ,rust-indexmap-1))))
     (home-page "https://github.com/gimli-rs/object")
     (synopsis "Unified interface for reading and writing object file formats")
     (description "This package provides a unified interface for reading and
@@ -14306,16 +15501,15 @@ formats.")
          "0rdnxa0na4897yb0svb3figz35g4imxjv61yfm2j21gbh5q8v8d9"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-rawpointer" ,rust-rawpointer-0.1)
         ("rust-rawslice" ,rust-rawslice-0.1)
         ("rust-unchecked-index" ,rust-unchecked-index-0.2))
        #:cargo-development-inputs
-       (("rust-itertools" ,rust-itertools-0.8)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-quickcheck" ,rust-quickcheck-0.8))))
+       (("rust-itertools" ,rust-itertools-0.7)
+        ("rust-lazy-static" ,rust-lazy-static-0.2)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-quickcheck" ,rust-quickcheck-0.4))))
     (home-page "https://github.com/bluss/odds")
     (synopsis "Extra functionality for slices, strings and other things")
     (description
@@ -14324,6 +15518,32 @@ slices (@code{.find()}, @code{RevSlice}), strings and other things.
 Things in odds may move to more appropriate crates if we find them.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-odds-0.2
+  (package
+    (inherit rust-odds-0.3)
+    (name "rust-odds")
+    (version "0.2.26")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "odds" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08pvngx0nf7yl9cgk4bahn1a0s8na5g9knbhq7y29kysp58h3bjf"))))
+    (arguments
+     `(#:tests? #f      ; doc tests fail
+       #:cargo-inputs
+       (("rust-rawpointer" ,rust-rawpointer-0.1)
+        ("rust-rawslice" ,rust-rawslice-0.1)
+        ("rust-unchecked-index" ,rust-unchecked-index-0.2))
+       #:cargo-development-inputs
+       (("rust-itertools" ,rust-itertools-0.5)
+        ("rust-lazy-static" ,rust-lazy-static-0.2)
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-quickcheck" ,rust-quickcheck-0.4))))))
+
 (define-public rust-onig-5.0
   (package
     (name "rust-onig")
@@ -14345,7 +15565,7 @@ Things in odds may move to more appropriate crates if we find them.")
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-onig-sys" ,rust-onig-sys-69.2))))
-    (home-page "http://github.com/iwillspeak/rust-onig")
+    (home-page "https://github.com/rust-onig/rust-onig")
     (synopsis
      "Rust bindings for the Oniguruma regular expression library")
     (description
@@ -14374,7 +15594,7 @@ character encodings and regex syntaxes.")
        (("rust-pkg-config" ,rust-pkg-config-0.3)
         ("rust-bindgen" ,rust-bindgen-0.50)
         ("rust-cc" ,rust-cc-1.0))))
-    (home-page "http://github.com/iwillspeak/rust-onig")
+    (home-page "https://github.com/rust-onig/rust-onig")
     (synopsis
      "Rust bindings to the oniguruma library.")
     (description
@@ -14406,13 +15626,33 @@ You probably don't want to link to this crate directly; instead check out the
        #:cargo-development-inputs
        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1))))
+        ("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/matklad/once_cell")
     (synopsis "Single assignment cells and lazy values")
     (description
      "Single assignment cells and lazy values.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-once-cell-0.1
+  (package
+    (inherit rust-once-cell-1.2)
+    (name "rust-once-cell")
+    (version "0.1.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "once-cell" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0drcjs7si0hygc0v64y55hkxv9fpvlvrb3wl5374b2hnc6i2jb2k"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-parking-lot" ,rust-parking-lot-0.7))
+       #:cargo-development-inputs
+       (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6))))))
+
 (define-public rust-oorandom-11.1
   (package
     (name "rust-oorandom")
@@ -14434,8 +15674,29 @@ You probably don't want to link to this crate directly; instead check out the
       "This package provides a tiny, robust PRNG implementation.")
     (license license:expat)))
 
+(define-public rust-opaque-debug-0.3
+  (package
+    (name "rust-opaque-debug")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "opaque-debug" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1m8kzi4nd6shdqimn0mgb24f0hxslhnqd1whakyq06wcqd086jk2"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/RustCrypto/utils")
+    (synopsis "Macro for opaque debug trait implementation")
+    (description
+     "This package provides a macro for opaque debug trait implementation.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-opaque-debug-0.2
   (package
+    (inherit rust-opaque-debug-0.3)
     (name "rust-opaque-debug")
     (version "0.2.2")
     (source
@@ -14446,13 +15707,7 @@ You probably don't want to link to this crate directly; instead check out the
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "02942l2gc7w5r4js7i9063x99szic5mzzk1055j83v4diqpbpxck"))))
-    (build-system cargo-build-system)
-    (home-page "https://github.com/RustCrypto/utils")
-    (synopsis "Macro for opaque Debug trait implementation")
-    (description
-     "Macro for opaque Debug trait implementation.")
-    (license (list license:asl2.0 license:expat))))
+         "02942l2gc7w5r4js7i9063x99szic5mzzk1055j83v4diqpbpxck"))))))
 
 (define-public rust-openssl-0.10
   (package
@@ -14938,10 +16193,10 @@ normally prevent moving a type that has been borrowed from.")
      "Automatically implement traits from the palette crate.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-pango-0.7
+(define-public rust-pango-0.8
   (package
     (name "rust-pango")
-    (version "0.7.0")
+    (version "0.8.0")
     (source
       (origin
         (method url-fetch)
@@ -14950,12 +16205,12 @@ normally prevent moving a type that has been borrowed from.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "11np7nxb69g3kid2l78b7k519x1wk1c3f9yy7swgzy24n5qs0grr"))))
+          "0xq50950il3228grzs4xvc5s6phxcl5l50grz6syvs0vixr6p70y"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-lazy-static" ,rust-lazy-static-1)
@@ -14972,6 +16227,33 @@ normally prevent moving a type that has been borrowed from.")
      "Rust bindings for the Pango library.")
     (license license:expat)))
 
+(define-public rust-pango-0.7
+  (package
+    (inherit rust-pango-0.8)
+    (name "rust-pango")
+    (version "0.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pango" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "11np7nxb69g3kid2l78b7k519x1wk1c3f9yy7swgzy24n5qs0grr"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
+
 (define-public rust-pango-sys-0.9
   (package
     (name "rust-pango-sys")
@@ -14995,7 +16277,7 @@ normally prevent moving a type that has been borrowed from.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("pango" ,pango)))
     (home-page "https://gtk-rs.org/")
@@ -15003,10 +16285,10 @@ normally prevent moving a type that has been borrowed from.")
     (description "This package provides FFI bindings to @code{libpango-1.0}.")
     (license license:expat)))
 
-(define-public rust-pangocairo-0.8
+(define-public rust-pangocairo-0.9
   (package
     (name "rust-pangocairo")
-    (version "0.8.0")
+    (version "0.9.0")
     (source
       (origin
         (method url-fetch)
@@ -15015,18 +16297,18 @@ normally prevent moving a type that has been borrowed from.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0qjiwsp73x3w0493dzycyjzxnzwq7ixwmf1ccr5r41pjhxbnk1kl"))))
+          "0bap3h78hdqdyln58349qjjbcv45m8a0a16c4n9fprdj1my0gldx"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.8)
         ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango" ,rust-pango-0.8)
         ("rust-pango-sys" ,rust-pango-sys-0.9)
         ("rust-pangocairo-sys" ,rust-pangocairo-sys-0.10)
         ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
@@ -15040,6 +16322,36 @@ normally prevent moving a type that has been borrowed from.")
      "Rust bindings for the PangoCairo library.")
     (license license:expat)))
 
+(define-public rust-pangocairo-0.8
+  (package
+    (inherit rust-pangocairo-0.9)
+    (name "rust-pangocairo")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pangocairo" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qjiwsp73x3w0493dzycyjzxnzwq7ixwmf1ccr5r41pjhxbnk1kl"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
+        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib-sys" ,rust-glib-sys-0.9)
+        ("rust-gobject-sys" ,rust-gobject-sys-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango-sys" ,rust-pango-sys-0.9)
+        ("rust-pangocairo-sys" ,rust-pangocairo-sys-0.10)
+        ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1))
+       #:cargo-development-inputs
+       (("rust-gir-format-check" ,rust-gir-format-check-0.1))))))
+
 (define-public rust-pangocairo-sys-0.10
   (package
     (name "rust-pangocairo-sys")
@@ -15063,7 +16375,7 @@ normally prevent moving a type that has been borrowed from.")
         ("rust-pkg-config" ,rust-pkg-config-0.3))
        #:cargo-development-inputs
        (("rust-shell-words" ,rust-shell-words-0.1)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (inputs
      `(("gtk+" ,gtk+)))
     (home-page "https://gtk-rs.org/")
@@ -15151,7 +16463,7 @@ deserialization, and interpreter in Rust.")
 (define-public rust-parking-lot-0.10
   (package
     (name "rust-parking-lot")
-    (version "0.10.0")
+    (version "0.10.2")
     (source
      (origin
        (method url-fetch)
@@ -15160,14 +16472,14 @@ deserialization, and interpreter in Rust.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1z0wgf2sd1266y768kxxs3313zjfzj9r3k7j4arfaz0bmd4qrscj"))))
+         "0pjhcbyk6n0g6jsr6s9nf4x8wribm1b2yf8fgc8drbqa77mh99yk"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-lock-api" ,rust-lock-api-0.3)
         ("rust-parking-lot-core" ,rust-parking-lot-core-0.7))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.7))))
     (home-page "https://github.com/Amanieu/parking_lot")
@@ -15197,7 +16509,7 @@ synchronization primitives.")
        (("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-bincode" ,rust-bincode-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.4)
         ("rust-rustc-version" ,rust-rustc-version-0.2))))))
@@ -15222,7 +16534,7 @@ synchronization primitives.")
        (("rust-lock-api" ,rust-lock-api-0.2)
         ("rust-parking-lot-core" ,rust-parking-lot-core-0.5))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.4)
         ("rust-rustc-version" ,rust-rustc-version-0.2))))))
@@ -15247,7 +16559,7 @@ synchronization primitives.")
        (("rust-lock-api" ,rust-lock-api-0.1)
         ("rust-parking-lot-core" ,rust-parking-lot-core-0.4))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.4)
         ("rust-rustc-version" ,rust-rustc-version-0.2))))))
@@ -15255,7 +16567,7 @@ synchronization primitives.")
 (define-public rust-parking-lot-core-0.7
   (package
     (name "rust-parking-lot-core")
-    (version "0.7.0")
+    (version "0.7.2")
     (source
      (origin
        (method url-fetch)
@@ -15264,7 +16576,7 @@ synchronization primitives.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1wdbrvh35nn09ga570vl5062dpwfbrwgzyrlhhy78ifzhj2870km"))))
+         "18s0cw5y32447c06fhg2mp3xfng22fn1h9fpx3il98sbimv7r36m"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -15272,7 +16584,7 @@ synchronization primitives.")
         ("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-petgraph" ,rust-petgraph-0.5)
         ("rust-redox-syscall" ,rust-redox-syscall-0.1)
         ("rust-smallvec" ,rust-smallvec-1)
         ("rust-thread-id" ,rust-thread-id-3.3)
@@ -15426,10 +16738,74 @@ synchronization primitives.")
      "Implementation detail of the paste crate.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-pbkdf2-0.4
+  (package
+    (name "rust-pbkdf2")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pbkdf2" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1g8cm3nwrsydazjc1gjs549hzafgxq8qb49gixrhl3qrd9calvi1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.12)
+        ("rust-crypto-mac" ,rust-crypto-mac-0.8)
+        ("rust-hmac" ,rust-hmac-0.8)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-sha2" ,rust-sha2-0.9)
+        ("rust-subtle" ,rust-subtle-2))
+       #:cargo-development-inputs
+       (("rust-hmac" ,rust-hmac-0.8)
+        ("rust-sha-1" ,rust-sha-1-0.9)
+        ("rust-sha2" ,rust-sha2-0.9))))
+    (home-page "https://github.com/RustCrypto/password-hashing")
+    (synopsis "Generic implementation of PBKDF2")
+    (description "This package contains a collection of password hashing
+algorithms, otherwise known as password-based key derivation functions, written
+in pure Rust.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-pbkdf2-0.3
+  (package
+    (inherit rust-pbkdf2-0.4)
+    (name "rust-pbkdf2")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pbkdf2" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1na2fmmfcmksz4xk7m0ihl778501c1krx88dcylrand48f506v00"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.9)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-crypto-mac" ,rust-crypto-mac-0.7)
+        ("rust-hmac" ,rust-hmac-0.7)
+        ("rust-rand" ,rust-rand-0.5)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-sha2" ,rust-sha2-0.8)
+        ("rust-subtle" ,rust-subtle-1.0))
+       #:cargo-development-inputs
+       (("rust-hmac" ,rust-hmac-0.7)
+        ("rust-sha-1" ,rust-sha-1-0.8)
+        ("rust-sha2" ,rust-sha2-0.8))))))
+
 (define-public rust-pcre2-0.2
   (package
     (name "rust-pcre2")
-    (version "0.2.1")
+    (version "0.2.3")
     (source
      (origin
        (method url-fetch)
@@ -15438,14 +16814,14 @@ synchronization primitives.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "103i66a998g1fjrqf9sdyvi8qi83hwglz3pjdcq9n2r207hsagb0"))))
+         "1c8sn70h72llf26sya9v26zmaamq350q57nwv6fl6fwhd4phzcw5"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
         ("rust-pcre2-sys" ,rust-pcre2-sys-0.2)
-        ("rust-thread-local" ,rust-thread-local-0.3))))
+        ("rust-thread-local" ,rust-thread-local-1.0))))
     (native-inputs
      `(("pcre2" ,pcre2)
        ("pkg-config" ,pkg-config)))
@@ -15509,6 +16885,99 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-peg-0.6
+  (package
+    (name "rust-peg")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "peg" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15rfp12dgsynplphp443zfw47m2d5snvdm6a25gz48dv2if8fxch"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-peg-macros" ,rust-peg-macros-0.6)
+        ("rust-peg-runtime" ,rust-peg-runtime-0.6))
+       #:cargo-development-inputs
+       (("rust-trybuild" ,rust-trybuild-1.0))))
+    (home-page "https://github.com/kevinmehall/rust-peg")
+    (synopsis "Simple Parsing Expression Grammar (PEG) parser generator")
+    (description
+     "PEG provides a simple Parsing Expression Grammar (PEG) parser generator
+in Rust.")
+    (license license:expat)))
+
+(define-public rust-peg-0.5
+  (package
+    (inherit rust-peg-0.6)
+    (name "rust-peg")
+    (version "0.5.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "peg" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "11az3bs3ngvfip920xfr0zwblfkyg6cjgz1v9hmfsdnqw7fi5ps0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-quote" ,rust-quote-0.3))))))
+
+(define-public rust-peg-macros-0.6
+  (package
+    (name "rust-peg-macros")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "peg-macros" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0li8qrb8hyqr7v5mhrkym0xp7ijnbksqviqc2i3556cysdgick62"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-peg-runtime" ,rust-peg-runtime-0.6)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0))))
+    (home-page "https://github.com/kevinmehall/rust-peg")
+    (synopsis "Procedural macros for rust-peg")
+    (description
+     "PEG provides a Parsing Expression Grammar.  This package provides
+procedural macros for rust-peg.  To use rust-peg, see the peg package.")
+    (license license:expat)))
+
+(define-public rust-peg-runtime-0.6
+  (package
+    (name "rust-peg-runtime")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "peg-runtime" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0r583cq923v0narrpq73qmp780yg4pablzklhrwnr64xwsbjh6hc"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/kevinmehall/rust-peg")
+    (synopsis "Runtime support for rust-peg grammars")
+    (description
+     "PEG provides a Parsing Expression Grammar.  This package provides
+runtime support for rust-peg grammars.  To use rust-peg, see the peg crate.")
+    (license license:expat)))
+
 (define-public rust-percent-encoding-2.1
   (package
     (name "rust-percent-encoding")
@@ -15667,10 +17136,10 @@ algorithm.")
      "Pest meta language parser and validator.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-petgraph-0.4
+(define-public rust-petgraph-0.5
   (package
     (name "rust-petgraph")
-    (version "0.4.13")
+    (version "0.5.1")
     (source
      (origin
        (method url-fetch)
@@ -15679,21 +17148,20 @@ algorithm.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0kyfmca854s54jk26g2x1kjb04c3k7cjilaxyr0if8lhxv8mjdlw"))))
+         "1dzxda6z17sfxly11m8ja3iargh73pw0s1sdgjyp0qp5dm51cza6"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-fixedbitset" ,rust-fixedbitset-0.1)
+     `(#:cargo-inputs
+       (("rust-fixedbitset" ,rust-fixedbitset-0.2)
         ("rust-ordermap" ,rust-ordermap-0.3)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
        #:cargo-development-inputs
-       (("rust-defmac" ,rust-defmac-0.2)
+       (("rust-defmac" ,rust-defmac-0.1)
         ("rust-itertools" ,rust-itertools-0.8)
-        ("rust-odds" ,rust-odds-0.3)
-        ("rust-rand" ,rust-rand-0.4))))
+        ("rust-odds" ,rust-odds-0.2)
+        ("rust-rand" ,rust-rand-0.5))))
     (home-page "https://github.com/petgraph/petgraph")
     (synopsis "Graph data structure library")
     (description
@@ -15701,6 +17169,40 @@ algorithm.")
 algorithms.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-petgraph-0.4
+  (package
+    (inherit rust-petgraph-0.5)
+    (name "rust-petgraph")
+    (version "0.4.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "petgraph" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0kyfmca854s54jk26g2x1kjb04c3k7cjilaxyr0if8lhxv8mjdlw"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-fixedbitset" ,rust-fixedbitset-0.1)
+        ("rust-odds" ,rust-odds-0.2)
+        ("rust-ordermap" ,rust-ordermap-0.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.4)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))
+       #:cargo-development-inputs
+       (("rust-defmac" ,rust-defmac-0.1)
+        ("rust-itertools" ,rust-itertools-0.7)
+        ("rust-rand" ,rust-rand-0.4))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'ignore-failing-test
+           (lambda _
+             (substitute* "tests/graph.rs"
+               (("fn dot\\(\\) \\{" all)
+                (string-append "#[ignore] " all))))))))))
+
 (define-public rust-phf-0.8
   (package
     (name "rust-phf")
@@ -15927,7 +17429,7 @@ function data structures.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-siphasher" ,rust-siphasher-0.3)
-        ("rust-unicase" ,rust-unicase-2.6))))
+        ("rust-unicase" ,rust-unicase-2))))
     (home-page "https://github.com/sfackler/rust-phf")
     (synopsis "Support code shared by PHF libraries")
     (description
@@ -16449,7 +17951,7 @@ used in Cargo build scripts.")
         ("rust-base64" ,rust-base64-0.10)
         ("rust-xml-rs" ,rust-xml-rs-0.8)
         ("rust-serde" ,rust-serde-1.0)
-        ("rust-humantime" ,rust-humantime-1.3)
+        ("rust-humantime" ,rust-humantime-1)
         ("rust-byteorder" ,rust-byteorder-1.3))))
     (home-page "https://github.com/ebarnard/rust-plist/")
     (synopsis "Rusty plist parser")
@@ -16543,8 +18045,44 @@ both WASM and native applications")
      "Build script helper for building PNaCl/NaCl C/CXX libraries from source")
     (license license:mpl2.0)))
 
+(define-public rust-png-0.16
+  (package
+    (name "rust-png")
+    (version "0.16.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "png" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1393s3v3kg4bxnn86d7yn2vyz8xj6g64ighdfkc3vzpsg5sbyl61"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-crc32fast" ,rust-crc32fast-1.2)
+        ("rust-deflate" ,rust-deflate-0.8)
+        ("rust-miniz-oxide" ,rust-miniz-oxide-0.3))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-getopts" ,rust-getopts-0.2)
+        ;; TODO: glium has many cyclic dependencies with other packages
+        ;; ("rust-glium" ,rust-glium-0.24)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-term" ,rust-term-0.6))))
+    (home-page "https://github.com/image-rs/image-png.git")
+    (synopsis "PNG decoding and encoding library in pure Rust")
+    (description
+     "PNG decoding and encoding library in pure Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-png-0.15
   (package
+    (inherit rust-png-0.16)
     (name "rust-png")
     (version "0.15.3")
     (source
@@ -16556,7 +18094,6 @@ both WASM and native applications")
        (sha256
         (base32
          "10x2qkhyfnm3si5vgx77r2ik811gaap7ahi825wfxgsb0lirm1gg"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
@@ -16570,12 +18107,7 @@ both WASM and native applications")
         ;;("rust-glium" ,rust-glium-0.24)
         ("rust-glob" ,rust-glob-0.3)
         ("rust-rand" ,rust-rand-0.7)
-        ("rust-term" ,rust-term-0.6))))
-    (home-page "https://github.com/image-rs/image-png.git")
-    (synopsis "PNG decoding and encoding library in pure Rust")
-    (description
-     "PNG decoding and encoding library in pure Rust.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-term" ,rust-term-0.6))))))
 
 (define-public rust-png-0.14
   (package
@@ -16656,7 +18188,7 @@ applications.")
 (define-public rust-podio-0.1
   (package
     (name "rust-podio")
-    (version "0.1.6")
+    (version "0.1.7")
     (source
      (origin
        (method url-fetch)
@@ -16665,9 +18197,8 @@ applications.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1ga5arhwakj5rwrqzf9410zrbwnf24jd59af8kr9rgwbd6vb83vq"))))
+         "06bzjxrl0h8rp5860n51dlr1g143grg2jmx4g6y1mdn2ignyz2xi"))))
     (build-system cargo-build-system)
-    ;(arguments '(#:skip-build? #t))
     (home-page "https://github.com/mvdnes/podio.git")
     (synopsis "Additional trait to read and write Plain Old Data")
     (description
@@ -16677,7 +18208,7 @@ applications.")
 (define-public rust-ppv-lite86-0.2
   (package
     (name "rust-ppv-lite86")
-    (version "0.2.6")
+    (version "0.2.8")
     (source
       (origin
         (method url-fetch)
@@ -16685,7 +18216,7 @@ applications.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "06zs492wbms7j5qhy58cs3976c7kyc47rx0d6fn63rgvp580njbl"))))
+          "1shj4q7jwj0azssr8cg51dk3kh7d4lg9rmbbz1kbqk971vc5wyi3"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/cryptocorrosion/cryptocorrosion")
     (synopsis "Implementation of the crypto-simd API for x86")
@@ -16718,6 +18249,83 @@ for x86.")
 dependency to expose a precomputed hash.")
     (license license:expat)))
 
+(define-public rust-predicates-1
+  (package
+    (name "rust-predicates")
+    (version "1.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "predicates" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0c0hafd7z7v97218na8nampmy64f7fw61yvjk2y3dri11dpinyil"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-difference" ,rust-difference-2.0)
+        ("rust-float-cmp" ,rust-float-cmp-0.6)
+        ("rust-normalize-line-endings" ,rust-normalize-line-endings-0.3)
+        ("rust-predicates-core" ,rust-predicates-core-1)
+        ("rust-regex" ,rust-regex-1))
+       #:cargo-development-inputs
+       (("rust-predicates-tree" ,rust-predicates-tree-1))))
+    (home-page "https://github.com/assert-rs/predicates-rs")
+    (synopsis
+     "Implementation of boolean-valued predicate functions")
+    (description
+     "An implementation of boolean-valued predicate functions.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-predicates-core-1
+  (package
+    (name "rust-predicates-core")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "predicates-core" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0y3ingf2i4xx7r61f1a8wizs57j8hh32hylyjbw9ymcj7qx5q1q6"))))
+    (build-system cargo-build-system)
+    (home-page
+     "https://github.com/assert-rs/predicates-rs/tree/master/predicates-core")
+    (synopsis "API for boolean-valued predicate functions")
+    (description
+     "An API for boolean-valued predicate functions.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-predicates-tree-1
+  (package
+    (name "rust-predicates-tree")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "predicates-tree" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "090148qjilm2c722l873z7g31fhzj5j4qhd2xiv8mcqkj22w8qwf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-predicates-core" ,rust-predicates-core-1)
+        ("rust-treeline" ,rust-treeline-0.1))))
+    (home-page
+     "https://github.com/assert-rs/predicates-rs/tree/master/predicates-tree")
+    (synopsis
+     "Render boolean-valued predicate functions results as a tree")
+    (description
+     "Render boolean-valued predicate functions results as a tree.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-pretty-assertions-0.6
   (package
     (name "rust-pretty-assertions")
@@ -16767,8 +18375,32 @@ replacements, adding colorful diffs.")
 replacements, adding colorful diffs.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-pretty-env-logger-0.4
+  (package
+    (name "rust-pretty-env-logger")
+    (version "0.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pretty-env-logger" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "17gva1rlf9fhgr0jr19kv39f8bir3f4pa4jz02qbhl9qanwkcvcj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-log" ,rust-log-0.4))))
+    (home-page "https://github.com/seanmonstar/pretty-env-logger")
+    (synopsis "Visually pretty env_logger")
+    (description "This package provides a visually pretty env_logger.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-pretty-env-logger-0.3
   (package
+    (inherit rust-pretty-env-logger-0.4)
     (name "rust-pretty-env-logger")
     (version "0.3.1")
     (source
@@ -16780,17 +18412,12 @@ replacements, adding colorful diffs.")
         (sha256
          (base32
           "0x4hyjlnvvhyk9m74iypzybm22w3dl2k8img4b956239n5vf8zki"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-log" ,rust-log-0.4)
         ("rust-chrono" ,rust-chrono-0.4)
-        ("rust-env-logger" ,rust-env-logger-0.6))))
-    (home-page "https://github.com/seanmonstar/pretty-env-logger")
-    (synopsis "Visually pretty env_logger")
-    (description "This package provides a visually pretty env_logger.")
-    (license (list license:expat license:asl2.0))))
+        ("rust-env-logger" ,rust-env-logger-0.6))))))
 
 (define-public rust-prettytable-rs-0.8
   (package
@@ -16877,7 +18504,7 @@ formatted tables in terminal.")
 (define-public rust-proc-macro-hack-0.5
   (package
     (name "rust-proc-macro-hack")
-    (version "0.5.15")
+    (version "0.5.16")
     (source
      (origin
        (method url-fetch)
@@ -16886,7 +18513,7 @@ formatted tables in terminal.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0qqbfm1byabjkph56r2rlvv4cliz4960j6hav3ljazyjqvkryr8d"))))
+         "1r657v7d9vh1ivrvq65rvg9gjb29dpa0l3zg2fgrn5j8znz5c13y"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
@@ -16948,7 +18575,7 @@ formatted tables in terminal.")
 (define-public rust-proc-macro-nested-0.1
   (package
     (name "rust-proc-macro-nested")
-    (version "0.1.3")
+    (version "0.1.6")
     (source
      (origin
        (method url-fetch)
@@ -16957,9 +18584,8 @@ formatted tables in terminal.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0bmlksm8vl44wkwihmwr7jsjznhbg0n7aibcw1cs2jgjcp86x6in"))))
+         "0nnwm9bvp1fmr8nqjp8ynrkj97yzpsdh3062li8b0f4hzgd818gb"))))
     (build-system cargo-build-system)
-    (arguments `(#:skip-build? #t))
     (home-page "https://github.com/dtolnay/proc-macro-hack")
     (synopsis
      "Support for nested proc-macro-hack invocations")
@@ -17042,7 +18668,7 @@ macro use case.")
 (define-public rust-procedural-masquerade-0.1
   (package
     (name "rust-procedural-masquerade")
-    (version "0.1.6")
+    (version "0.1.7")
     (source
       (origin
         (method url-fetch)
@@ -17051,7 +18677,7 @@ macro use case.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1l098px1hwdzqnxl376a9hfxb9q8kmj2n0y0s8k7plrz3jjp85cs"))))
+          "17dnfdk0qadh2h38bkwcy14cq8a1ild3j3hqmh1yjbq9ykgq64wg"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/servo/rust-cssparser")
     (synopsis "Macro rules for proc-macro-derive")
@@ -17063,7 +18689,7 @@ macro use case.")
 (define-public rust-proptest-0.9
   (package
     (name "rust-proptest")
-    (version "0.9.4")
+    (version "0.9.6")
     (source
      (origin
        (method url-fetch)
@@ -17072,25 +18698,24 @@ macro use case.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "17sjg8isas4qk85807c4panih9k0lwa4k1mbajhciw5c5q17w56g"))))
+         "0nsslp46lvf3ll5rd83rin652qlz1kqyp0rmsciy0pw4kf0pgi01"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#: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.4)
-        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
-        ("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-rand-chacha" ,rust-rand-chacha-0.1)
+        ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
         ("rust-regex-syntax" ,rust-regex-syntax-0.6)
         ("rust-rusty-fork" ,rust-rusty-fork-0.2)
-        ("rust-tempfile" ,rust-tempfile-3.0))
+        ("rust-tempfile" ,rust-tempfile-3))
        #:cargo-development-inputs
-       (("rust-regex" ,rust-regex-1.1))))
+       (("rust-regex" ,rust-regex-1))))
     (home-page
      "https://altsysrq.github.io/proptest-book/proptest/index.html")
     (synopsis
@@ -17126,14 +18751,42 @@ macro use case.")
         ("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))
+        ("rust-tempfile" ,rust-tempfile-3))
        #:cargo-development-inputs
-       (("rust-regex" ,rust-regex-1.1))))))
+       (("rust-regex" ,rust-regex-1))))))
+
+(define-public rust-proptest-0.7
+  (package
+    (inherit rust-proptest-0.9)
+    (name "rust-proptest")
+    (version "0.7.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "proptest" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "13giz85f7jkjc8miplzj4zh3fr704c1y1cg0dh218iw2dfkpbwi7"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bit-set" ,rust-bit-set-0.5)
+        ("rust-bitflags" ,rust-bitflags-1)
+        ("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.4)
+        ("rust-regex-syntax" ,rust-regex-syntax-0.4)
+        ("rust-rusty-fork" ,rust-rusty-fork-0.2)
+        ("rust-tempfile" ,rust-tempfile-3))
+       #:cargo-development-inputs
+       (("rust-regex" ,rust-regex-0.2))))))
 
 (define-public rust-psm-0.1
   (package
     (name "rust-psm")
-    (version "0.1.6")
+    (version "0.1.10")
     (source
       (origin
         (method url-fetch)
@@ -17142,7 +18795,7 @@ macro use case.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1q1hdbnp2j3zz1vhzp1xhds6ynan3mg5bhjlhfy5m1sg8n5wckxi"))))
+          "1kr9sal8g9zil4ch8ra0ry96d5cl15xslk1p0wnqk1504ib3hb89"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
@@ -17172,13 +18825,13 @@ stack pointer and inspect the properties of the stack.")
        #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
         ("rust-getopts" ,rust-getopts-0.2)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-unicase" ,rust-unicase-2.4))
+        ("rust-memchr" ,rust-memchr-2)
+        ("rust-unicase" ,rust-unicase-2))
        #:cargo-development-inputs
        (("rust-criterion" ,rust-criterion-0.2)
         ("rust-html5ever" ,rust-html5ever-0.23)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-tendril" ,rust-tendril-0.4))))
     (home-page "https://github.com/raphlinus/pulldown-cmark")
     (synopsis "Pull parser for CommonMark")
@@ -17346,7 +18999,6 @@ stack pointer and inspect the properties of the stack.")
          (base32
           "1q6za3v78hsspisc197bg3g7rpc989qycy8ypr8ap8igv10ikl51"))))
     (build-system cargo-build-system)
-    (arguments `(#:skip-build? #t))
     (home-page "https://github.com/tailhook/quick-error")
     (synopsis "Macro which makes error types pleasant to write")
     (description "This crate provides a macro which makes error types pleasant
@@ -17579,9 +19231,8 @@ integers, floats, tuples, booleans, lists, strings, options and results.")
          (base32
           "1s01fh0jl8qv4xggs85yahw0h507nzrxkjbf7vay3zw8d3kcyjcr"))))
     (arguments
-      `(#:skip-build? #t
-        #:cargo-inputs
-        (("rust-proc-macro2" ,rust-proc-macro2-0.3))))))
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.3))))))
 
 (define-public rust-quote-0.3
   (package
@@ -17599,6 +19250,56 @@ integers, floats, tuples, booleans, lists, strings, options and results.")
          "0yhnnix4dzsv8y4wwz4csbnqjfh73al33j35msr10py6cl5r4vks"))))
     (arguments '())))
 
+(define-public rust-racer-cargo-metadata-0.1
+  (package
+    (name "rust-racer-cargo-metadata")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "racer-cargo-metadata" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vvwbfi991gjbk2k9a7yl7fqc8amvwlf7sa9lsx1sr0s55rcsq1b"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-racer-interner" ,rust-racer-interner-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/racer-rust/racer")
+    (synopsis "Lightweight cargo metadata parser for racer")
+    (description
+     "This crate provides parsing for cargo metadata.  It is used mostly in
+Racer.")
+    (license license:expat)))
+
+(define-public rust-racer-interner-0.1
+  (package
+    (name "rust-racer-interner")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "racer-interner" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0k7ssjjcr4kr9r1jbz93rglisfsx1m6fkx3wz6yng5rizm528si0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-serde" ,rust-serde-1.0))))
+    (home-page "https://github.com/racer-rust/racer")
+    (synopsis "Thread-local string interner for Racer")
+    (description
+     "This package allows one to intern strings in Rust in a thread-local
+fashion.  It is mostly used in Racer.")
+    (license license:expat)))
+
 (define-public rust-rand-0.7
   (package
     (name "rust-rand")
@@ -17613,8 +19314,7 @@ integers, floats, tuples, booleans, lists, strings, options and results.")
           "00sdaimkbz491qgi6qxkv582yivl32m2jd401kzbn94vsiwicsva"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-getrandom" ,rust-getrandom-0.1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
@@ -17693,7 +19393,7 @@ useful types and distributions, and some randomness-related algorithms.")
         ("rust-stdweb" ,rust-stdweb-0.4)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))))
+       (("rust-bincode" ,rust-bincode-1))))))
 
 (define-public rust-rand-0.4
   (package
@@ -17856,6 +19556,32 @@ useful types and distributions, and some randomness-related algorithms.")
        #:cargo-inputs
        (("rust-rand-core" ,rust-rand-core-0.3))))))
 
+(define-public rust-rand-distr-0.2
+  (package
+    (name "rust-rand-distr")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rand-distr" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1cpz577qid09lirjjhhn98yqdwsv0c01jf973pxpcr9svp5pm5wn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rand" ,rust-rand-0.7))
+       #:cargo-development-inputs
+       (("rust-average" ,rust-average-0.10)
+        ("rust-rand-pcg" ,rust-rand-pcg-0.2))))
+    (home-page "https://crates.io/crates/rand_distr")
+    (synopsis "Sampling from random number distributions")
+    (description
+     "Sampling from random number distributions.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rand-hc-0.2
   (package
     (name "rust-rand-hc")
@@ -17914,7 +19640,7 @@ generator that uses the HC-128 algorithm.")
        (("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-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}
@@ -17941,7 +19667,7 @@ Add, and Count\" which are the principal bitwise operations employed.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))))
+       (("rust-bincode" ,rust-bincode-1))))))
 
 (define-public rust-rand-jitter-0.1
   (package
@@ -17972,7 +19698,7 @@ generator based on timing jitter.")
 (define-public rust-rand-os-0.2
   (package
     (name "rust-rand-os")
-    (version "0.2.0")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
@@ -17981,7 +19707,7 @@ generator based on timing jitter.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "06is69f8rfzs620g5b54k6cgy5yaycrsyqg55flyfrsf8g88733f"))))
+         "12m59l42aa07khcjnhq8lkw2332brj4d7gqr3jxgqv39vczax257"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -18036,7 +19762,7 @@ generator based on timing jitter.")
        (("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-1))))
     (home-page "https://crates.io/crates/rand_pcg")
     (synopsis
      "Selected PCG random number generators")
@@ -18065,7 +19791,7 @@ generator based on timing jitter.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))))
+       (("rust-bincode" ,rust-bincode-1))))))
 
 (define-public rust-rand-xorshift-0.2
   (package
@@ -18086,7 +19812,7 @@ generator based on timing jitter.")
        (("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-1))))
     (home-page "https://crates.io/crates/rand-xorshift")
     (synopsis "Xorshift random number generator")
     (description
@@ -18112,7 +19838,7 @@ generator based on timing jitter.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-1))))
     (home-page "https://crates.io/crates/rand-xorshift")
     (synopsis "Xorshift random number generator")
     (description
@@ -18139,7 +19865,7 @@ generator based on timing jitter.")
        (("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-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
@@ -18166,7 +19892,7 @@ random number generators.")
         ("rust-rand-core" ,rust-rand-core-0.5)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))))
+       (("rust-bincode" ,rust-bincode-1))))))
 
 (define-public rust-rand-xoshiro-0.1
   (package
@@ -18250,7 +19976,7 @@ and @code{ptrdistance}.")
 (define-public rust-rawslice-0.1
   (package
     (name "rust-rawslice")
-    (version "0.1.0")
+    (version "0.1.1")
     (source
      (origin
        (method url-fetch)
@@ -18259,14 +19985,13 @@ and @code{ptrdistance}.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "09bympww1rpsd422da3w444q5w1znjbjh7mjninhq9gaaygkpci2"))))
+         "1kfidydpw770wfzp2c4y7jfq1vr5jbql5sk86xg2wx3an84cj8wf"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-rawpointer" ,rust-rawpointer-0.1))
+     `(#:cargo-inputs
+       (("rust-rawpointer" ,rust-rawpointer-0.2))
        #:cargo-development-inputs
-       (("rust-quickcheck" ,rust-quickcheck-0.8))))
+       (("rust-quickcheck" ,rust-quickcheck-0.4))))
     (home-page "https://github.com/bluss/rawslice/")
     (synopsis "Reimplementation of the slice iterators, with extra features")
     (description
@@ -18275,10 +20000,10 @@ For example creation from raw pointers and start, end pointer
 accessors.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-rayon-1.3
+(define-public rust-rayon-1
   (package
     (name "rust-rayon")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
@@ -18287,17 +20012,16 @@ accessors.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1650g13bxlmywhdlw65q3g1zyyb7l0wcm35v45kf31cwgwly6v6v"))))
+         "104h6i5lcp9kx8g80jgqf6z7wcqa186q57wj4qzf011xfmb2iw32"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
+     `(#:cargo-inputs
+       (("rust-autocfg" ,rust-autocfg-1.0)
+        ("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
         ("rust-either" ,rust-either-1.5)
-        ("rust-rayon-core" ,rust-rayon-core-1.7))
+        ("rust-rayon-core" ,rust-rayon-core-1))
        #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-docopt" ,rust-docopt-1.1)
+       (("rust-docopt" ,rust-docopt-1.1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-rand" ,rust-rand-0.7)
         ("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
@@ -18308,37 +20032,9 @@ accessors.")
      "Simple work-stealing parallelism for Rust.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-rayon-1.1
-  (package
-    (inherit rust-rayon-1.3)
-    (name "rust-rayon")
-    (version "1.1.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "rayon" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "190hkbcdfvcphyyzkdg52zdia2y9d9yanpm072bmnzbn49p1ic54"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.6)
-        ("rust-either" ,rust-either-1.5)
-        ("rust-rayon-core" ,rust-rayon-core-1.5))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-docopt" ,rust-docopt-1.1)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
-        ("rust-serde" ,rust-serde-1.0)
-        ("rust-serde-derive" ,rust-serde-derive-1.0))))))
-
 (define-public rust-rayon-0.8
-  (package/inherit rust-rayon-1.3
+  (package
+    (inherit rust-rayon-1)
     (name "rust-rayon")
     (version "0.8.2")
     (source
@@ -18351,7 +20047,7 @@ accessors.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-rayon-core" ,rust-rayon-core-1.7))
+       (("rust-rayon-core" ,rust-rayon-core-1))
       #:cargo-development-inputs
       (("rust-compiletest-rs" ,rust-compiletest-rs-0.2)
        ("rust-docopt" ,rust-docopt-0.7)
@@ -18359,10 +20055,10 @@ accessors.")
        ("rust-rand" ,rust-rand-0.3)
        ("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))))
 
-(define-public rust-rayon-core-1.7
+(define-public rust-rayon-core-1
   (package
     (name "rust-rayon-core")
-    (version "1.7.0")
+    (version "1.7.1")
     (source
      (origin
        (method url-fetch)
@@ -18371,16 +20067,18 @@ accessors.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1ac55kpnh2390ah7r071vnjbiy308qpznql0n597x5dgxx39pa08"))))
+         "101jjwkcfw5jk31695gbdm163iicc2pz349q6l8lwj43j3c1abp9"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(;; One of the tests attempts to overflow the stack, but the compiler
+       ;; has since gotten smarter and the test became defective.
+       #:tests? #f
        #:cargo-inputs
        (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
         ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.2)
         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-num-cpus" ,rust-num-cpus-1.10))
+        ("rust-num-cpus" ,rust-num-cpus-1))
        #:cargo-development-inputs
        (("rust-libc" ,rust-libc-0.2)
         ("rust-rand" ,rust-rand-0.7)
@@ -18391,34 +20089,6 @@ accessors.")
     (description "Core APIs for Rayon.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-rayon-core-1.5
-  (package
-    (inherit rust-rayon-core-1.7)
-    (name "rust-rayon-core")
-    (version "1.5.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "rayon-core" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1ljva6blaf1wmzvg77h1i9pd0hsmsbbcmdk7sjbw7h2s8gw0vgpb"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
-        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
-        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-num-cpus" ,rust-num-cpus-1.10))
-       #:cargo-development-inputs
-       (("rust-libc" ,rust-libc-0.2)
-        ("rust-rand" ,rust-rand-0.4)
-        ("rust-rand-xorshift" ,rust-rand-xorshift-0.2)
-        ("rust-scoped-tls" ,rust-scoped-tls-1.0))))))
-
 (define-public rust-rctree-0.3
   (package
     (name "rust-rctree")
@@ -18582,7 +20252,7 @@ functionality.")
 (define-public rust-ref-cast-1.0
   (package
     (name "rust-ref-cast")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
@@ -18591,7 +20261,7 @@ functionality.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1vy378bdzb4kcz13kh96c5n5qw1jinhfrya5j4bf9rxz65x1jzq7"))))
+         "08r6qz7228k55nlyl5v7ykdzxrasnawgzmb1jrbfbnkx2s3ifp3l"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -18634,7 +20304,7 @@ functionality.")
 (define-public rust-ref-cast-impl-1.0
   (package
     (name "rust-ref-cast-impl")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
@@ -18643,7 +20313,7 @@ functionality.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "07rc752npmkyc5b8xcqk2ydbl3gxi1n4fzrq0wx9wz5qd4mvavn3"))))
+         "0i1i3an8si070aqg2mvz6yqc6y2pl9zhd6dd2piz17l7mdsv88bx"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -18671,10 +20341,10 @@ functionality.")
         (base32
          "0av43xxjlinfqklb67rpj217cmaxfjsf8151gs0hbs4hnr5664ck"))))))
 
-(define-public rust-regex-1.3
+(define-public rust-regex-1
   (package
     (name "rust-regex")
-    (version "1.3.6")
+    (version "1.3.9")
     (source
      (origin
        (method url-fetch)
@@ -18683,17 +20353,16 @@ functionality.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1cx4lcgy7vdi2kij2n1dp2whl33d7974g1kxwiklhs192nclcsbz"))))
+         "1rnqga94ypykl2apgj26l2j1s9bvr2ix4dlzs323n6abyky80dww"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-aho-corasick" ,rust-aho-corasick-0.7)
-        ("rust-memchr" ,rust-memchr-2.3)
+        ("rust-memchr" ,rust-memchr-2)
         ("rust-regex-syntax" ,rust-regex-syntax-0.6)
         ("rust-thread-local" ,rust-thread-local-1.0))
        #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
+       (("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-quickcheck" ,rust-quickcheck-0.8)
         ("rust-rand" ,rust-rand-0.6))))
     (home-page "https://github.com/rust-lang/regex")
@@ -18703,36 +20372,9 @@ functionality.")
 uses finite automata and guarantees linear time matching on all inputs.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-regex-1.1
-  (package
-    (inherit rust-regex-1.3)
-    (name "rust-regex")
-    (version "1.1.9")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "regex" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "1ba47ivq8l1yikiwikjnq5barag6iqfgcpxlz2263fqbq9y2kn6r"))))
-    (arguments
-     `(#:cargo-inputs
-       (("rust-aho-corasick" ,rust-aho-corasick-0.7)
-        ("rust-memchr" ,rust-memchr-2.2)
-        ("rust-regex-syntax" ,rust-regex-syntax-0.6)
-        ("rust-thread-local" ,rust-thread-local-0.3)
-        ("rust-utf8-ranges" ,rust-utf8-ranges-1.0))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3)
-        ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-quickcheck" ,rust-quickcheck-0.8)
-        ("rust-rand" ,rust-rand-0.6))))))
-
 (define-public rust-regex-0.2
   (package
-    (inherit rust-regex-1.3)
+    (inherit rust-regex-1)
     (name "rust-regex")
     (version "0.2.11")
     (source
@@ -18749,7 +20391,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-aho-corasick" ,rust-aho-corasick-0.6)
-        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-memchr" ,rust-memchr-2)
         ("rust-regex-syntax" ,rust-regex-syntax-0.5)
         ("rust-thread-local" ,rust-thread-local-0.3)
         ("rust-utf8-ranges" ,rust-utf8-ranges-1.0))
@@ -18809,7 +20451,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
        #:cargo-development-inputs
        (("rust-bstr" ,rust-bstr-0.2)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-bytes" ,rust-serde-bytes-0.11)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
@@ -18824,7 +20466,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
 (define-public rust-regex-syntax-0.6
   (package
     (name "rust-regex-syntax")
-    (version "0.6.17")
+    (version "0.6.18")
     (source
       (origin
         (method url-fetch)
@@ -18832,7 +20474,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1blmlgzcg7in3kcxqabpfzzrbnamr2i671flbrmlqhfps5bvvrbz"))))
+          "1s648w7rwpxnq9iqwbyy43ar4al07906jpz0jxlql23bgjwjwh96"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/rust-lang/regex")
     (synopsis "Regular expression parser")
@@ -18860,6 +20502,25 @@ uses finite automata and guarantees linear time matching on all inputs.")
        #:cargo-inputs
        (("rust-ucd-util" ,rust-ucd-util-0.1))))))
 
+(define-public rust-regex-syntax-0.4
+  (package
+    (inherit rust-regex-syntax-0.6)
+    (name "rust-regex-syntax")
+    (version "0.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "regex-syntax" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "03p24bsfg2rw2cc5h8ri4fp7j06xwyyd5grlqy0g11ixp5c1r4wf"))))
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-quickcheck" ,rust-quickcheck-0.6)
+        ("rust-rand" ,rust-rand-0.4))))))
+
 (define-public rust-regex-syntax-0.3
   (package
     (inherit rust-regex-syntax-0.6)
@@ -18881,19 +20542,25 @@ uses finite automata and guarantees linear time matching on all inputs.")
 (define-public rust-remove-dir-all-0.5
   (package
     (name "rust-remove-dir-all")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "remove_dir_all" version))
-        (file-name (string-append name "-" version ".crate"))
+        (file-name (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "0bkrlyg26mgizpiy1yb2hhpgscxcag8r5fnckqsvk25608vzm0sa"))))
+          "1rzqbsgkmr053bxxl04vmvsd1njyz0nxvly97aip6aa2cmb15k9s"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; 'doctest' isn't stable until rust-1.40
+           (substitute* "src/lib.rs"
+             (("\\(doctest") "(test"))
+           #t))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
        (("rust-doc-comment" ,rust-doc-comment-0.3))))
@@ -18929,10 +20596,33 @@ uses finite automata and guarantees linear time matching on all inputs.")
     (description "File reopening utility.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-resize-0.3
+  (package
+    (name "rust-resize")
+    (version "0.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "resize" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1ai83laz5yvg4r7z9q8d1m0vq0fqj2ycyprw5fxzxyzaj3im7rmr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-png" ,rust-png-0.15))))
+    (home-page "https://github.com/PistonDevelopers/resize")
+    (synopsis "Simple image resampling library in pure Rust")
+    (description
+     "This package provides a simple image resampling library in pure Rust.")
+    (license license:expat)))
+
 (define-public rust-resolv-conf-0.6
   (package
     (name "rust-resolv-conf")
-    (version "0.6.2")
+    (version "0.6.3")
     (source
       (origin
         (method url-fetch)
@@ -18940,13 +20630,13 @@ uses finite automata and guarantees linear time matching on all inputs.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1jvdsmksdf6yiipm3aqahyv8n1cjd7wqc8sa0p0gzsax3fmb8qxj"))))
+          "0jlzifww1h7j23jnjj49xz8q0fpd9rqpd0ks8c4y651vgw9lx0qi"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f  ; Not all test files included.
        #:cargo-inputs
        (("rust-quick-error" ,rust-quick-error-1.2)
-        ("rust-hostname", rust-hostname-0.1))))
+        ("rust-hostname" ,rust-hostname-0.3))))
     (home-page "https://github.com/tailhook/resolv-conf")
     (synopsis "Parser for /etc/resolv.conf")
     (description
@@ -18954,6 +20644,35 @@ uses finite automata and guarantees linear time matching on all inputs.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-rgb-0.8
+  (package
+    (name "rust-rgb")
+    (version "0.8.18")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rgb" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "15hrf0gb1l1a8rhx7b6gzrcmb43xlll4r1ym0mq55c7068dhc537"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1.0))
+       #:cargo-development-inputs
+       (("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://lib.rs/crates/rgb")
+    (synopsis "Struct for sharing pixels between crates")
+    (description
+     "This package provides @code{struct RGB/RGBA/etc.} for sharing pixels
+between crates + convenience methods for color manipulation.  It allows no-copy
+high-level interoperability.  It also adds common convenience methods and
+implements standard Rust traits to make `RGB`/`RGBA` pixels and slices
+first-class Rust objects.")
+    (license license:expat)))
+
 (define-public rust-ring-0.16
   (package
     (name "rust-ring")
@@ -19004,10 +20723,62 @@ uses finite automata and guarantees linear time matching on all inputs.")
         ;; build dependencies
         ("rust-cc" ,rust-cc-1.0))))))
 
+(define-public rust-rle-decode-fast-1
+  (package
+    (name "rust-rle-decode-fast")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rle-decode-fast" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1b4h7qs4mssc5dnlhs3f91ya8pb40bv72zzshl18gify2jllzgna"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-criterion" ,rust-criterion-0.2))))
+    (home-page "https://github.com/WanzenBug/rle-decode-helper")
+    (synopsis "Implement decoding for Run Length Encoded data in Rust")
+    (description
+     "This crate provides a fast way to implement any kind of decoding
+for Run Length Encoded data in Rust.
+
+Writing a fast decoder that is also safe can be quite challenging, so
+this crate is here to save you the hassle of maintaining and testing
+your own implementation.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rls-span-0.5
+  (package
+    (name "rust-rls-span")
+    (version "0.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rls-span" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0d6rwya5zsyw6vmrj8d8g3fgvic0xyp1lvfhv62vswk2dzavxsgj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/rust-lang/rls")
+    (synopsis "Types for identifying code spans/ranges")
+    (description
+     "Identify Rust code spans and ranges using these types - for use with the
+Rust Language Server.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-ron-0.4
   (package
     (name "rust-ron")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
@@ -19016,7 +20787,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1mrqdgw3w0yypg24jyq9mphp4zr9lr0ks7yam82m4n34x6njijyr"))))
+         "13ypx80ac1minrmn9w9sgnbxlknwiv7qhx5n50azh0s484j2mx8p"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -19025,7 +20796,7 @@ uses finite automata and guarantees linear time matching on all inputs.")
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-serde-bytes" ,rust-serde-bytes-0.11)
+       (;("rust-serde-bytes" ,rust-serde-bytes-0.10)
         ("rust-serde-json" ,rust-serde-json-1.0))))
     (home-page "https://github.com/ron-rs/ron")
     (synopsis "Rusty Object Notation")
@@ -19109,16 +20880,16 @@ console applications.")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libsqlite3-sys" ,rust-libsqlite3-sys-0.15)
         ("rust-lru-cache" ,rust-lru-cache-0.1)
-        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-memchr" ,rust-memchr-2)
         ("rust-serde-json" ,rust-serde-json-1.0)
         ("rust-time" ,rust-time-0.1)
         ("rust-url" ,rust-url-1.7)
         ("rust-uuid" ,rust-uuid-0.7))
        #:cargo-development-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-tempdir" ,rust-tempdir-0.3)
-        ("rust-unicase" ,rust-unicase-2.4)
+        ("rust-unicase" ,rust-unicase-2)
         ("rust-uuid" ,rust-uuid-0.7))))
     (home-page "https://github.com/rusqlite/rusqlite")
     (synopsis "Wrapper for SQLite")
@@ -19288,6 +21059,322 @@ password hashing function.")
      "This package provides a sys crate for the rust_hawktracer library.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-arena-654
+  (package
+    (name "rust-rustc-ap-arena")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-arena" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18yc4i5m2vf6w8na29i5jv8l4l0yknsf6xn0z2mk7mfz1nxwzpw1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page  "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the arena package used in rustc")
+    (description
+     "Use the arena library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-graphviz-654
+  (package
+    (name "rust-rustc-ap-graphviz")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-graphviz" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1z8rs3k9zcd1i2clrnzgvfaq1q05m02wjcyy3d9zk9qln03vp43l"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of the graphviz crate used in rustc")
+    (description
+     "Use the graphviz library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-ast-654
+  (package
+    (name "rust-rustc-ap-rustc-ast")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_ast" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0n4yhkd7x0c3nqyqz99lwjiix7mf1j5xbkn9fj90h4fxp3did7qq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654)
+        ("rust-rustc-ap-rustc-lexer" ,rust-rustc-ap-rustc-lexer-654)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654)
+        ("rust-rustc-ap-serialize" ,rust-rustc-ap-serialize-654)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654)
+        ("rust-scoped-tls" ,rust-scoped-tls-1.0)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the Rust ast used in rustc")
+    (description
+     "Use the Rust ast used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-data-structures-654
+  (package
+    (name "rust-rustc-ap-rustc-data-structures")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_data_structures" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fhppy18n1i2iykdihfs05d6s1ivwz882ipc9cpnjcvqcsbhj4yj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
+        ("rust-ena" ,rust-ena-0.13)
+        ("rust-indexmap" ,rust-indexmap-1)
+        ("rust-jobserver" ,rust-jobserver-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-measureme" ,rust-measureme-0.7)
+        ("rust-parking-lot" ,rust-parking-lot-0.10)
+        ("rust-rustc-ap-graphviz" ,rust-rustc-ap-graphviz-654)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654)
+        ("rust-rustc-ap-serialize" ,rust-rustc-ap-serialize-654)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
+        ("rust-rustc-rayon" ,rust-rustc-rayon-0.3)
+        ("rust-rustc-rayon-core" ,rust-rustc-rayon-core-0.3)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-stable-deref-trait" ,rust-stable-deref-trait-1.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis "Automatically published versions of rustc data structures")
+    (description
+     "Use data structures used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-index-654
+  (package
+    (name "rust-rustc-ap-rustc-index")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_index" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0qqnvdn3zbwrn884ziw0nrmi1wqmr9yp8js7whw6y8nzdhz0q8ij"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-rustc-ap-serialize" ,rust-rustc-ap-serialize-654)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page  "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the types of indexes in rustc")
+    (description
+     "Use the types of index used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-lexer-654
+  (package
+    (name "rust-rustc-ap-rustc-lexer")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_lexer" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19bx2z4gxxzqfjh9m11jp52lgdzz0k5fb0p1ad739bdc5cm4sciv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-unicode-xid" ,rust-unicode-xid-0.2))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis "Automatically published versions of rustc macros")
+    (description
+     "Use the lexer used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-macros-654
+  (package
+    (name "rust-rustc-ap-rustc-macros")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_macros" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03zfp8a10jz43z8lsx1drx7g5jimxmbw4w7hs13yvczismb6qs2r"))))
+    (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)
+        ("rust-synstructure" ,rust-synstructure-0.12))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis "Automatically published versions of rustc macros")
+    (description
+     "Use macros used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-span-654
+  (package
+    (name "rust-rustc-ap-rustc-span")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_span" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hj23syxxqqmk1y4kdvb0cb0xxi8wy429hhyd27bbmpya1h18j56"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-md-5" ,rust-md-5-0.8)
+        ("rust-rustc-ap-arena" ,rust-rustc-ap-arena-654)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654)
+        ("rust-rustc-ap-serialize" ,rust-rustc-ap-serialize-654)
+        ("rust-scoped-tls" ,rust-scoped-tls-1.0)
+        ("rust-sha-1" ,rust-sha-1-0.8)
+        ("rust-unicode-width" ,rust-unicode-width-0.1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the source code spans used in rustc")
+    (description
+     "Use the spans used in the Rust compiler to represent source code with
+this crate.  It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-target-654
+  (package
+    (name "rust-rustc-ap-rustc-target")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_target" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0i579l4jx4ky5wm0ah8zdy6dd6201rii6rv1wc4bi209ixwjikr8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654)
+        ("rust-rustc-ap-serialize" ,rust-rustc-ap-serialize-654)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the compile targets used in rustc")
+    (description
+     "Use the compile targets as expressed in the Rust compiler with this
+crate.  It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-serialize-654
+  (package
+    (name "rust-rustc-ap-serialize")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-serialize" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vwfa3q4f9k0nfryr53jnwmf8vhaq7ijbgw8449nx467dr98yvkm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-indexmap" ,rust-indexmap-1)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of the serialize crate used in rustc")
+    (description
+     "Use the serialize library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
@@ -19328,37 +21415,86 @@ password hashing function.")
             "1qkc5khrmv5pqi5l5ca9p5nl5hs742cagrndhbrlk3dhlrx3zm08"))))
     (build-system cargo-build-system)
     (arguments `(#:skip-build? #t))
-    (home-page
-      "https://github.com/rust-lang-nursery/rustc-hash")
+    (home-page "https://github.com/rust-lang/rustc-hash")
+    (synopsis "Speedy, non-cryptographic hash used in rustc")
+    (description
+     "This package provides a speedy, non-cryptographic hash used in rustc.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-rustc-rayon-0.3
+  (package
+    (name "rust-rustc-rayon")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-rayon" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fjvy8bf0hd1zq9d3fdxbdp4z4p1k8jfyx51k5qip3wk1pwnf9zk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f
+       #:cargo-inputs
+       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
+        ("rust-either" ,rust-either-1.5)
+        ("rust-rustc-rayon-core" ,rust-rustc-rayon-core-0.3))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-docopt" ,rust-docopt-1.1)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/rust-lang/rustc-rayon")
     (synopsis
-      "speed, non-cryptographic hash used in rustc")
+     "Simple work-stealing parallelism for Rust - fork for rustc")
     (description
-      "speed, non-cryptographic hash used in rustc")
+     "Rustc-rayon is a fork of the Rayon crate.  It adds a few \"in progress\"
+features that rustc is using, mostly around deadlock detection.  These features
+are not stable and should not be used by others -- though they may find their
+way into rayon proper at some point.  In general, if you are not rustc, you
+should be using the real rayon crate, not rustc-rayon.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-rustc-hash-1.0
+(define-public rust-rustc-rayon-core-0.3
   (package
-    (name "rust-rustc-hash")
-    (version "1.0.1")
+    (name "rust-rustc-rayon-core")
+    (version "0.3.0")
     (source
       (origin
         (method url-fetch)
-        (uri (crate-uri "rustc-hash" version))
-        (file-name (string-append name "-" version ".crate"))
+        (uri (crate-uri "rustc-rayon-core" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1f4cnbcmz2c3zjidqszc9c4fip37ch4xl74nkkp9dw291j5zqh3m"))))
+          "1cwc50mcclzfmhmi87953fjk6cc9ppmchn9mlwzfllq03y1jf97a"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
+     `(#:tests? #f
        #:cargo-inputs
-       (("rust-byteorder" ,rust-byteorder-1.3))))
-    (home-page "https://github.com/rust-lang/rustc-hash")
-    (synopsis "Speedy, non-cryptographic hash used in rustc")
+       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
+        ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-num-cpus" ,rust-num-cpus-1))
+       #:cargo-development-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+        ("rust-scoped-tls" ,rust-scoped-tls-1.0))))
+    (home-page "https://github.com/rust-lang/rustc-rayon")
+    (synopsis "Core APIs for Rayon - fork for rustc")
     (description
-     "This package provides a speedy, non-cryptographic hash used in rustc.")
-    (license (list license:asl2.0
-                   license:expat))))
+     "Note: This package is an unstable fork made for use in rustc
+
+Rayon-core represents the \"core, stable\" APIs of Rayon: join, scope, and so
+forth, as well as the ability to create custom thread-pools with ThreadPool.")
+    (license (list license:asl2.0 license:expat))))
 
 (define-public rust-rustc-serialize-0.3
   (package
@@ -19542,7 +21678,7 @@ rustc compiler.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/GuillaumeGomez/rustdoc-stripper")
     (synopsis "Nanipulate rustdoc comments")
     (description
@@ -19607,7 +21743,7 @@ rustc compiler.")
        (("rust-criterion" ,rust-criterion-0.2)
         ("rust-env-logger" ,rust-env-logger-0.6)
         ("rust-log" ,rust-log-0.4)
-        ("rust-tempfile" ,rust-tempfile-3.0)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-webpki-roots" ,rust-webpki-roots-0.17))))
     (home-page "https://github.com/ctz/rustls")
   (synopsis "Modern TLS library written in Rust")
@@ -19669,9 +21805,9 @@ rustc compiler.")
         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
         ("rust-libm" ,rust-libm-0.2)
         ("rust-linked-hash-map" ,rust-linked-hash-map-0.5)
-        ("rust-num-cpus" ,rust-num-cpus-1.11)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-ordered-float" ,rust-ordered-float-1.0)
-        ("rust-rustc-hash" ,rust-rustc-hash-1.0)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
         ("rust-stb-truetype" ,rust-stb-truetype-0.3))))
     (home-page "https://gitlab.redox-os.org/redox-os/rusttype")
     (synopsis "Pure Rust alternative to libraries like FreeType")
@@ -19778,7 +21914,7 @@ rustc compiler version.")
        #:cargo-inputs
        (("rust-fnv" ,rust-fnv-1.0)
         ("rust-quick-error" ,rust-quick-error-1.2)
-        ("rust-tempfile" ,rust-tempfile-3.0)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-wait-timeout" ,rust-wait-timeout-0.2))))
     (home-page "https://github.com/altsysrq/rusty-fork")
     (synopsis "Library for running Rust tests in sub-processes")
@@ -19804,7 +21940,7 @@ using a fork-like interface.")
      `(#:cargo-inputs
        (("rust-no-panic" ,rust-no-panic-0.1))
        #:cargo-development-inputs
-       (("rust-num-cpus" ,rust-num-cpus-1.11)
+       (("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-rand" ,rust-rand-0.7)
         ("rust-rand-xorshift" ,rust-rand-xorshift-0.2))))
     (home-page "https://github.com/dtolnay/ryu")
@@ -19900,7 +22036,7 @@ paths point to the same file.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-regex" ,rust-regex-1.3))))
+       (("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/wlentz/scan_fmt")
     (synopsis "Simple scanf()-like input for Rust")
     (description
@@ -20036,6 +22172,60 @@ with one of the implemented strategies.")
          (base32
           "09sy9wbqp409pkwmqni40qmwa99ldqpl48pp95m1xw8sc19qy9cl"))))))
 
+(define-public rust-scrypt-0.3
+  (package
+    (name "rust-scrypt")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "scrypt" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1apicbvp7cgc1z2nl5l48g8h3kp7p592r4zbkx9vsri2ivnvgv43"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.12)
+        ("rust-hmac" ,rust-hmac-0.8)
+        ("rust-pbkdf2" ,rust-pbkdf2-0.4)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-core" ,rust-rand-core-0.5)
+        ("rust-sha2" ,rust-sha2-0.9)
+        ("rust-subtle" ,rust-subtle-2))))
+    (home-page "https://github.com/RustCrypto/password-hashes")
+    (synopsis "Scrypt password-based key derivation function")
+    (description
+     "Scrypt password-based key derivation function.")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-scrypt-0.2
+  (package
+    (inherit rust-scrypt-0.3)
+    (name "rust-scrypt")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "scrypt" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1pfgqgzdjxjf7c8r1wfka0ackfpv1g8w7wvbr25b42hdx787jv35"))))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-base64" ,rust-base64-0.9)
+        ("rust-byte-tools" ,rust-byte-tools-0.3)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-hmac" ,rust-hmac-0.7)
+        ("rust-pbkdf2" ,rust-pbkdf2-0.3)
+        ("rust-rand" ,rust-rand-0.5)
+        ("rust-sha2" ,rust-sha2-0.8)
+        ("rust-subtle" ,rust-subtle-1.0))))))
+
 (define-public rust-scroll-0.10
   (package
     (name "rust-scroll")
@@ -20082,7 +22272,7 @@ endian-aware Read/Write traits for byte buffers.")
         ("rust-rustc-version" ,rust-rustc-version-0.2))
        #:cargo-development-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-rayon" ,rust-rayon-1.1))))
+        ("rust-rayon" ,rust-rayon-1))))
     (home-page "https://github.com/m4b/scroll")
     (synopsis "Read/Write traits for byte buffers")
     (description
@@ -20211,6 +22401,26 @@ Pwrite traits from the scroll crate.")
 proven statistical guarantees.")
     (license license:expat)))
 
+(define-public rust-section-testing-0.0
+  (package
+    (name "rust-section-testing")
+    (version "0.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "section-testing" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0a1zwpcs2dqhky2wd8y82cm25l3s9i5dbyn4ypgmvdysizcxgr7c"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/evanw/section_testing")
+    (synopsis "Library for section-style testing")
+    (description
+     "This package provides a library for section-style testing.")
+    (license license:expat)))
+
 (define-public rust-security-framework-0.3
   (package
     (name "rust-security-framework")
@@ -20265,6 +22475,40 @@ proven statistical guarantees.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-selectors-0.22
+  (package
+    (name "rust-selectors")
+    (version "0.22.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "selectors" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1zhjpvww238lh4nz7kdw4ywlpmjbmzvrm76w1jyacjxci4c0ycnz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cssparser" ,rust-cssparser-0.27)
+        ("rust-derive-more" ,rust-derive-more-0.99)
+        ("rust-fxhash" ,rust-fxhash-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-matches" ,rust-matches-0.1)
+        ("rust-phf" ,rust-phf-0.8)
+        ("rust-precomputed-hash" ,rust-precomputed-hash-0.1)
+        ("rust-servo-arc" ,rust-servo-arc-0.1)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-thin-slice" ,rust-thin-slice-0.1))
+       #:cargo-development-inputs
+       (("rust-phf-codegen" ,rust-phf-codegen-0.8))))
+    (home-page "https://github.com/servo/servo")
+    (synopsis "CSS Selectors matching for Rust")
+    (description "This package provides CSS Selectors matching for Rust.")
+    (license license:mpl2.0)))
+
 (define-public rust-sema-0.1
   (package
     (name "rust-sema")
@@ -20449,19 +22693,19 @@ proven statistical guarantees.")
      `(#:skip-build? #t
        #:cargo-inputs (("rust-num" ,rust-num-0.2))))))
 
-(define-public rust-serde-big-array-0.1
+(define-public rust-serde-big-array-0.2
   (package
     (name "rust-serde-big-array")
-    (version "0.1.5")
+    (version "0.2.0")
     (source
-     (origin
-       (method url-fetch)
-       (uri (crate-uri "serde-big-array" version))
-       (file-name
-        (string-append name "-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0gkyqxk760mp1lfcg6lhjk95ajc89nr0qdd0vl4ic0g8pyxcy9mr"))))
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serde-big-array" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0kj0h99y7ma9nsayv87fj2n680bcrwv2mrcbmc774lgak18ywgl8"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -20474,6 +22718,21 @@ proven statistical guarantees.")
     (description "This package provides a big array helper for serde.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-serde-big-array-0.1
+  (package
+    (inherit rust-serde-big-array-0.2)
+    (name "rust-serde-big-array")
+    (version "0.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "serde-big-array" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0gkyqxk760mp1lfcg6lhjk95ajc89nr0qdd0vl4ic0g8pyxcy9mr"))))))
+
 (define-public rust-serde-bytes-0.11
   (package
     (name "rust-serde-bytes")
@@ -20492,7 +22751,7 @@ proven statistical guarantees.")
        #:cargo-inputs
        (("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-test" ,rust-serde-test-1.0))))
     (home-page "https://github.com/serde-rs/bytes")
@@ -20673,7 +22932,7 @@ for the serde framework.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-       (("rust-indexmap" ,rust-indexmap-1.3)
+       (("rust-indexmap" ,rust-indexmap-1)
         ("rust-itoa" ,rust-itoa-0.4)
         ("rust-ryu" ,rust-ryu-1.0)
         ("rust-serde" ,rust-serde-1.0))
@@ -20856,6 +23115,78 @@ for the serde framework.")
     (description "YAML support for Serde.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-serial-test-0.1
+  (package
+    (name "rust-serial-test")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serial-test" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0qywhzjc4jh6dqqng90maai0mjlmafk9aa5rrl9g3d2g01wdn8ms"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1))))
+    (home-page "https://github.com/palfrey/serial_test/")
+    (synopsis "Serialised Rust tests")
+    (description
+     "Allows for the creation of serialised Rust tests.")
+    (license license:expat)))
+
+(define-public rust-serial-test-derive-0.1
+  (package
+    (name "rust-serial-test-derive")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "serial-test-derive" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "17fkqrba233sjhdak986y4w3z4yjxa4idjkh46l7zxgcgjlvrnic"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-quote" ,rust-quote-0.6)
+        ("rust-syn" ,rust-syn-0.15))))
+    (home-page "https://github.com/palfrey/serial_test/")
+    (synopsis "Helper crate for serial_test")
+    (description "This package provides a helper crate for @code{serial_test}.")
+    (license license:expat)))
+
+(define-public rust-servo-arc-0.1
+  (package
+    (name "rust-servo-arc")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "servo-arc" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0cjljr9znwahry6p95xvd3p4pmy24wlf6gbfidnmglg002w3i0nr"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-nodrop" ,rust-nodrop-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-stable-deref-trait" ,rust-stable-deref-trait-1.1))))
+    (home-page "https://github.com/servo/servo")
+    (synopsis "Fork of std::sync::Arc with some extra functionality")
+    (description
+     "This package provides a fork of @code{std::sync::Arc} with some extra
+functionality and without weak references.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-servo-fontconfig-0.4
   (package
     (name "rust-servo-fontconfig")
@@ -20949,10 +23280,42 @@ for the serde framework.")
      "This package provides a Rust wrapper around the FreeType library.")
     (license license:mpl2.0)))  ; build.rs is mpl2.0
 
+(define-public rust-sha-1-0.9
+  (package
+    (name "rust-sha-1")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "sha-1" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0w37j7swjkbzgi9mf7ihkw0zfik6vl97fs6jdpqs6r68hvm3c2hp"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-buffer" ,rust-block-buffer-0.9)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-cpuid-bool" ,rust-cpuid-bool-0.1)
+        ("rust-digest" ,rust-digest-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-opaque-debug" ,rust-opaque-debug-0.3)
+        ("rust-sha1-asm" ,rust-sha1-asm-0.4))
+       #:cargo-development-inputs
+       (("rust-digest" ,rust-digest-0.9)
+        ("rust-hex-literal" ,rust-hex-literal-0.2))))
+    (home-page "https://github.com/RustCrypto/hashes")
+    (synopsis "SHA-1 hash function")
+    (description "SHA-1 hash function.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-sha-1-0.8
   (package
+    (inherit rust-sha-1-0.9)
     (name "rust-sha-1")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
@@ -20961,23 +23324,18 @@ for the serde framework.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0s6fdy5wp3x4h2z4fcl2d9vjvrpzr87v4h49r51xcq8nm4qj35i3"))))
-    (build-system cargo-build-system)
+         "1pv387q0r7llk2cqzyq0nivzvkgqgzsiygqzlv7b68z9xl5lvngp"))))
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-block-buffer" ,rust-block-buffer-0.7)
         ("rust-digest" ,rust-digest-0.8)
         ("rust-fake-simd" ,rust-fake-simd-0.1)
         ("rust-opaque-debug" ,rust-opaque-debug-0.2)
+        ("rust-libc" ,rust-libc-0.2)
         ("rust-sha1-asm" ,rust-sha1-asm-0.4))
        #:cargo-development-inputs
        (("rust-digest" ,rust-digest-0.8)
-        ("rust-hex-literal" ,rust-hex-literal-0.2))))
-    (home-page "https://github.com/RustCrypto/hashes")
-    (synopsis "SHA-1 hash function")
-    (description "SHA-1 hash function.")
-    (license (list license:asl2.0 license:expat))))
+        ("rust-hex-literal" ,rust-hex-literal-0.1))))))
 
 (define-public rust-sha1-0.6
   (package
@@ -21050,8 +23408,7 @@ for the serde framework.")
          "1i1i8viy6y30mv9v5hwhg9w6b722qkyh9c6n8bn4d27jpv14pg0s"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-development-inputs
+     `(#:cargo-inputs
        (("rust-cc" ,rust-cc-1.0))))
     (home-page "https://github.com/RustCrypto/asm-hashes")
     (synopsis "Assembly implementation of SHA-1 compression function")
@@ -21059,18 +23416,51 @@ for the serde framework.")
      "Assembly implementation of SHA-1 compression function.")
     (license license:expat)))
 
+(define-public rust-sha2-0.9
+  (package
+    (name "rust-sha2")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "sha2" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1hdqrx2d9073hgf34y6ilgw6ni5vv3d5nmccyhkfm9zdvy6kfcr9"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-block-buffer" ,rust-block-buffer-0.9)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-cpuid-bool" ,rust-cpuid-bool-0.1)
+        ("rust-digest" ,rust-digest-0.9)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-opaque-debug" ,rust-opaque-debug-0.3)
+        ("rust-sha2-asm" ,rust-sha2-asm-0.5))
+       #:cargo-development-inputs
+       (("rust-digest" ,rust-digest-0.9)
+        ("rust-hex-literal" ,rust-hex-literal-0.2))))
+    (home-page "https://github.com/RustCrypto/hashes")
+    (synopsis "SHA-2 hash functions")
+    (description
+     "This package provides a pure Rust implementation of the SHA-2 hash
+function family including SHA-224, SHA-256, SHA-384, and SHA-512.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-sha2-0.8
   (package
+    (inherit rust-sha2-0.9)
     (name "rust-sha2")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "sha2" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1827pplynq0ahxid1xq281kiv56kj2afp7gm97v7gw71sbgll117"))))
-    (build-system cargo-build-system)
+        (base32 "0s9yddvyg6anaikdl86wmwfim25c0d4m0xq0y2ghs34alxpg8mm2"))))
     (arguments
      `(#:cargo-inputs
        (("rust-block-buffer" ,rust-block-buffer-0.7)
@@ -21080,25 +23470,20 @@ for the serde framework.")
         ("rust-opaque-debug" ,rust-opaque-debug-0.2)
         ("rust-sha2-asm" ,rust-sha2-asm-0.5))
        #:cargo-development-inputs
-       (("rust-cc" ,rust-cc-1.0) ;; FIXME for rust-sha2-asm, why again?
-        ("rust-digest" ,rust-digest-0.8)
-        ("rust-hex-literal" ,rust-hex-literal-0.1))))
-    (home-page "https://github.com/RustCrypto/hashes")
-    (synopsis "SHA-2 hash functions")
-    (description "SHA-2 hash functions")
-    (license (list license:expat license:asl2.0))))
+       (("rust-digest" ,rust-digest-0.8)
+        ("rust-hex-literal" ,rust-hex-literal-0.1))))))
 
 (define-public rust-sha2-asm-0.5
   (package
     (name "rust-sha2-asm")
-    (version "0.5.3")
+    (version "0.5.4")
     (source
      (origin
        (method url-fetch)
        (uri (crate-uri "sha2-asm" version))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0k3qwv2yl8fyi2i6cprfb8d874ii5kmcmckgnjkwnz2ac9fayyl1"))))
+        (base32 "0y4n8r4362y2fa6p2j0dgny4zfi194gdf01l6j850n9vf8ha3kwj"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -21245,7 +23630,7 @@ words, like Python's shlex.")
         ("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.2)
+        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1)
         ("rust-tokio-reactor" ,rust-tokio-reactor-0.1))
        #:cargo-development-inputs
        (("rust-tokio" ,rust-tokio-0.1)
@@ -21255,7 +23640,7 @@ words, like Python's shlex.")
     (description "Unix signal handling.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-signal-hook-registry-1.2
+(define-public rust-signal-hook-registry-1
   (package
     (name "rust-signal-hook-registry")
     (version "1.2.0")
@@ -21281,29 +23666,6 @@ words, like Python's shlex.")
     (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")
@@ -21581,7 +23943,7 @@ data type.")
 (define-public rust-smallvec-1
   (package
     (name "rust-smallvec")
-    (version "1.2.0")
+    (version "1.4.1")
     (source
      (origin
        (method url-fetch)
@@ -21590,13 +23952,13 @@ data type.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1z6f47i3qpg9pdjzzvb0g5i1vvdm2ymk3kqc1mdnl8fdkgnb4bsw"))))
+         "0gqgmbfj8228lc55xxg331flizzwq6hfyy6gw4j2y6hni6fwnmrp"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))
+       (("rust-bincode" ,rust-bincode-1))))
     (home-page "https://github.com/servo/rust-smallvec")
     (synopsis "Small vector optimization")
     (description
@@ -21623,7 +23985,7 @@ stack.")
        (("rust-maybe-uninit" ,rust-maybe-uninit-2.0)
         ("rust-serde" ,rust-serde-1.0))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1))))))
+       (("rust-bincode" ,rust-bincode-1))))))
 
 (define-public rust-smithay-client-toolkit-0.6
   (package
@@ -21763,7 +24125,7 @@ maximal amount of configuration possible intended.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.1))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/derekdreery/sourcefile-rs")
     (synopsis "Concatenate source from multiple files")
     (description
@@ -22231,8 +24593,37 @@ crate.")
 configurable byte storage.")
     (license license:expat)))
 
+(define-public rust-string-cache-0.8
+  (package
+    (name "rust-string-cache")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "string-cache" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "12i0synp8l0qpnzi5qki4pjq3jx28ykikyffjjjg6fsfxddwfh19"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-new-debug-unreachable" ,rust-new-debug-unreachable-1.0)
+        ("rust-phf-shared" ,rust-phf-shared-0.8)
+        ("rust-precomputed-hash" ,rust-precomputed-hash-0.1)
+        ("rust-serde" ,rust-serde-1.0))))
+    (home-page "https://github.com/servo/string-cache")
+    (synopsis "String interning library for Rust")
+    (description
+     "This package provides a string interning library for Rust,
+developed as part of the Servo project.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-string-cache-0.7
   (package
+    (inherit rust-string-cache-0.8)
     (name "rust-string-cache")
     (version "0.7.5")
     (source
@@ -22244,7 +24635,6 @@ configurable byte storage.")
        (sha256
         (base32
          "0rrdb822gc1fs3qq4camgj3kh4182bs79hpqxhdrpmlz5yl5ih49"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
@@ -22256,16 +24646,38 @@ configurable byte storage.")
         ("rust-string-cache-codegen" ,rust-string-cache-codegen-0.4)
         ("rust-string-cache-shared" ,rust-string-cache-shared-0.3))
        #:cargo-development-inputs
-       (("rust-rand" ,rust-rand-0.4))))
+       (("rust-rand" ,rust-rand-0.4))))))
+
+(define-public rust-string-cache-codegen-0.5
+  (package
+    (name "rust-string-cache-codegen")
+    (version "0.5.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "string-cache-codegen" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "15vbk5i7kkj5bbx7f0fi477js4svw5py39gi4rk74anj35g8wk7j"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-phf-generator" ,rust-phf-generator-0.8)
+        ("rust-phf-shared" ,rust-phf-shared-0.8)
+        ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0))))
     (home-page "https://github.com/servo/string-cache")
-    (synopsis "String interning library for Rust")
+    (synopsis "Codegen library for string-cache")
     (description
-     "This package provides a string interning library for Rust,
+     "This package provides a codegen library for string-cache,
 developed as part of the Servo project.")
     (license (list license:asl2.0 license:expat))))
 
 (define-public rust-string-cache-codegen-0.4
   (package
+    (inherit rust-string-cache-codegen-0.5)
     (name "rust-string-cache-codegen")
     (version "0.4.4")
     (source
@@ -22277,21 +24689,13 @@ developed as part of the Servo project.")
        (sha256
         (base32
          "1ik78h9gs874i24rkyh0myg6x4ni2a9cazbv5yzs9yavnv8mxx7h"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-phf-generator" ,rust-phf-generator-0.7)
         ("rust-phf-shared" ,rust-phf-shared-0.7)
         ("rust-proc-macro2" ,rust-proc-macro2-1.0)
         ("rust-quote" ,rust-quote-1.0)
-        ("rust-string-cache-shared"
-         ,rust-string-cache-shared-0.3))))
-    (home-page "https://github.com/servo/string-cache")
-    (synopsis "Codegen library for string-cache")
-    (description
-     "This package provides a codegen library for string-cache,
-developed as part of the Servo project.")
-    (license (list license:asl2.0 license:expat))))
+        ("rust-string-cache-shared" ,rust-string-cache-shared-0.3))))))
 
 (define-public rust-string-cache-shared-0.3
   (package
@@ -22481,8 +24885,31 @@ and Jaro-Winkler.")
      "Parse command line argument by defining a struct, derive crate.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-subtle-2
+  (package
+    (name "rust-subtle")
+    (version "2.2.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "subtle" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1h9jd7v0imksyl5mvnjk2rw54sa3xrril76z0md61mq2gh056bah"))))
+    (build-system cargo-build-system)
+    (home-page "https://dalek.rs/")
+    (synopsis
+     "Pure-Rust traits and utilities for cryptographic implementations")
+    (description
+     "This package provides Pure-Rust traits and utilities for constant-time
+cryptographic implementations.")
+    (license license:bsd-3)))
+
 (define-public rust-subtle-1.0
   (package
+    (inherit rust-subtle-2)
     (name "rust-subtle")
     (version "1.0.0")
     (source
@@ -22493,15 +24920,7 @@ and Jaro-Winkler.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1vm80mxbwfj334izwm8x8l65v1xl9hr0kwrg36r1rq565fkaarrd"))))
-    (build-system cargo-build-system)
-    (home-page "https://dalek.rs/")
-    (synopsis
-     "Pure-Rust traits and utilities for cryptographic implementations")
-    (description
-     "This package provides Pure-Rust traits and utilities for constant-time
-cryptographic implementations.")
-    (license license:bsd-3)))
+         "1vm80mxbwfj334izwm8x8l65v1xl9hr0kwrg36r1rq565fkaarrd"))))))
 
 (define-public rust-sval-0.4
   (package
@@ -22577,12 +24996,12 @@ cryptographic implementations.")
        (("rust-anyhow" ,rust-anyhow-1.0)
         ("rust-flate2" ,rust-flate2-1.0)
         ;("rust-insta" ,rust-insta-0.12)
-        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-ref-cast" ,rust-ref-cast-1.0)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ;("rust-reqwest" ,rust-reqwest-0.10)
         ("rust-tar" ,rust-tar-0.4)
-        ("rust-termcolor" ,rust-termcolor-1.0)
+        ("rust-termcolor" ,rust-termcolor-1)
         ("rust-walkdir" ,rust-walkdir-2.3))))
     (home-page "https://github.com/dtolnay/syn")
     (synopsis "Parser for Rust source code")
@@ -22611,11 +25030,11 @@ cryptographic implementations.")
         ("rust-unicode-xid" ,rust-unicode-xid-0.1))
        #:cargo-development-inputs
        (("rust-insta" ,rust-insta-0.8)
-        ("rust-rayon" ,rust-rayon-1.1)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-ref-cast" ,rust-ref-cast-0.2)
-        ("rust-regex" ,rust-regex-1.1)
-        ("rust-termcolor" ,rust-termcolor-1.0)
-        ("rust-walkdir" ,rust-walkdir-2.2))))
+        ("rust-regex" ,rust-regex-1)
+        ("rust-termcolor" ,rust-termcolor-1)
+        ("rust-walkdir" ,rust-walkdir-2.3))))
     (properties '())))
 
 (define-public rust-syn-0.11
@@ -22811,7 +25230,7 @@ cryptographic implementations.")
         ("rust-fnv" ,rust-fnv-1.0)
         ("rust-bitflags" ,rust-bitflags-1)
         ("rust-lazycell" ,rust-lazycell-1.2)
-        ("rust-bincode" ,rust-bincode-1.2)
+        ("rust-bincode" ,rust-bincode-1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-walkdir" ,rust-walkdir-2.3)
         ("rust-onig" ,rust-onig-5.0))))
@@ -22946,7 +25365,7 @@ syntax extension expansion.")
         ("rust-byteorder" ,rust-byteorder-1.3)
         ("rust-failure" ,rust-failure-0.1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-walkdir" ,rust-walkdir-2.2))))
+        ("rust-walkdir" ,rust-walkdir-2.3))))
     (home-page "https://github.com/johalun/sysctl-rs")
     (synopsis "Simplified interface to libc::sysctl")
     (description
@@ -23153,7 +25572,7 @@ deleting all contents when it's dropped.")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-tempfile-3.1
+(define-public rust-tempfile-3
   (package
     (name "rust-tempfile")
     (version "3.1.0")
@@ -23183,29 +25602,6 @@ directories.")
     (license (list license:asl2.0
                    license:expat))))
 
-(define-public rust-tempfile-3.0
-  (package
-    (inherit rust-tempfile-3.1)
-    (name "rust-tempfile")
-    (version "3.0.8")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "tempfile" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1vqk7aq2l04my2r3jiyyxirnf8f90nzcvjasvrajivb85s7p7i3x"))))
-    (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-cfg-if" ,rust-cfg-if-0.1)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-rand" ,rust-rand-0.6)
-        ("rust-redox-syscall" ,rust-redox-syscall-0.1)
-        ("rust-remove-dir-all" ,rust-remove-dir-all-0.5)
-        ("rust-winapi" ,rust-winapi-0.3))))))
-
 (define-public rust-tendril-0.4
   (package
     (name "rust-tendril")
@@ -23386,10 +25782,10 @@ grid layout.")
         ("rust-libc" ,rust-libc-0.2)
         ("rust-winapi" ,rust-winapi-0.2))))))
 
-(define-public rust-termcolor-1.0
+(define-public rust-termcolor-1
   (package
     (name "rust-termcolor")
-    (version "1.0.5")
+    (version "1.1.0")
     (source
       (origin
         (method url-fetch)
@@ -23397,12 +25793,13 @@ grid layout.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0vjfsn1a8zvqhnrbygrz1id6yckwv1dncw3w4zj65qdx0f00kmln"))))
+          "0pyp8vc0gx7124y80ixdl6plbfn1yjhw04i875k5fz2dk8lglsxv"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-wincolor" ,rust-wincolor-1.0))))
+     `(#:cargo-inputs
+       (("rust-winapi-util" ,rust-winapi-util-0.1))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3))))
     (home-page "https://github.com/BurntSushi/termcolor")
     (synopsis "Library for writing colored text to a terminal")
     (description "This package provides a simple cross platform library for
@@ -23410,6 +25807,31 @@ writing colored text to a terminal.")
     (license (list license:unlicense
                    license:expat))))
 
+(define-public rust-terminal-size-0.1
+  (package
+    (name "rust-terminal-size")
+    (version "0.1.13")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "terminal-size" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "04qy9i0k3qkhl749xk30xga0l7w61rf4bj5zy0r44w3jijgws54s"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; Tests expect access to /dev/stderr
+       #:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/eminence/terminal-size")
+    (synopsis "Gets the size of your Linux or Windows terminal")
+    (description
+     "This package gets the size of your Linux or Windows terminal.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-terminfo-0.6
   (package
     (name "rust-terminfo")
@@ -23563,6 +25985,27 @@ handle Unicode characters correctly.")
     (properties '((hidden? . #t)))
     (license license:expat)))
 
+(define-public rust-thin-slice-0.1
+  (package
+    (name "rust-thin-slice")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "thin-slice" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0g4z51g3yarah89ijpakbwhrrknw6d7k3ry0m1zqcn3hbhiq3alf"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/heycam/thin-slice")
+    (synopsis
+     "Owned slice that packs the slice storage into a single word when possible")
+    (description
+     "An owned slice that packs the slice storage into a single word when possible.")
+    (license license:mpl2.0)))
+
 (define-public rust-thiserror-1.0
   (package
     (name "rust-thiserror")
@@ -23734,7 +26177,7 @@ different for every thread.")
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-num-cpus" ,rust-num-cpus-1.11))))
+       (("rust-num-cpus" ,rust-num-cpus-1))))
     (home-page "https://github.com/rust-threadpool/rust-threadpool")
     (synopsis "Thread pool for running jobs on a fixed set of worker threads")
     (description
@@ -23743,8 +26186,36 @@ fixed set of worker threads.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-tiff-0.5
+  (package
+    (name "rust-tiff")
+    (version "0.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "tiff" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0bzzvxcx21pzryxgd7x7a1himiqs2y4k55754wzlr56sqj3qlfrz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f      ; not all test files included
+       #:cargo-inputs
+       (("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-lzw" ,rust-lzw-0.10)
+        ("rust-miniz-oxide" ,rust-miniz-oxide-0.3))))
+    (home-page "https://github.com/image-rs/image-tiff")
+    (synopsis
+     "TIFF decoding and encoding library in pure Rust")
+    (description
+     "TIFF decoding and encoding library in pure Rust.")
+    (license license:expat)))
+
 (define-public rust-tiff-0.3
   (package
+    (inherit rust-tiff-0.5)
     (name "rust-tiff")
     (version "0.3.1")
     (source
@@ -23756,7 +26227,6 @@ fixed set of worker threads.")
        (sha256
         (base32
          "0zgmbny2f8rssqmjdfvnysy0vqwcvlwl6q9f5yixhavlqk7w5dyp"))))
-    (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; Tests images not included with release.
        #:cargo-inputs
@@ -23765,13 +26235,7 @@ fixed set of worker threads.")
         ("rust-num-derive" ,rust-num-derive-0.2)
         ("rust-num-traits" ,rust-num-traits-0.2))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.0))))
-    (home-page "https://github.com/image-rs/image-tiff")
-    (synopsis
-     "TIFF decoding and encoding library in pure Rust")
-    (description
-     "TIFF decoding and encoding library in pure Rust.")
-    (license license:expat)))
+       (("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-tiff-0.2
   (package
@@ -23874,14 +26338,14 @@ in Rust.")
         ("rust-iovec" ,rust-iovec-0.1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-memchr" ,rust-memchr-2.2)
+        ("rust-memchr" ,rust-memchr-2)
         ("rust-mio" ,rust-mio-0.6)
         ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1)
         ("rust-mio-uds" ,rust-mio-uds-0.6)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-parking-lot" ,rust-parking-lot-0.10)
         ("rust-pin-project-lite" ,rust-pin-project-lite-0.1)
-        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1.2)
+        ("rust-signal-hook-registry" ,rust-signal-hook-registry-1)
         ("rust-slab" ,rust-slab-0.4)
         ("rust-tokio-macros" ,rust-tokio-macros-0.2)
         ("rust-winapi" ,rust-winapi-0.3))
@@ -23889,7 +26353,7 @@ in Rust.")
       (("rust-futures" ,rust-futures-0.3)
        ("rust-loom" ,rust-loom-0.3)
        ("rust-proptest" ,rust-proptest-0.9)
-       ("rust-tempfile" ,rust-tempfile-3.1)
+       ("rust-tempfile" ,rust-tempfile-3)
        ("rust-tokio-test" ,rust-tokio-test-0.2))))
     (home-page "https://tokio.rs")
     (synopsis "Event-driven, non-blocking I/O platform")
@@ -23913,13 +26377,12 @@ backed applications.")
          "11ra8jp3fj70a2zrqmd6as7wgpwiiyzjf50gz89i8r7wpksgqbzc"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-bytes" ,rust-bytes-0.4)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-mio" ,rust-mio-0.6)
         ("rust-miow" ,rust-miow-0.3)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-tokio-codec" ,rust-tokio-codec-0.1)
         ("rust-tokio-current-thread" ,rust-tokio-current-thread-0.1)
         ("rust-tokio-executor" ,rust-tokio-executor-0.1)
@@ -23934,13 +26397,13 @@ backed applications.")
         ("rust-tokio-udp" ,rust-tokio-udp-0.1)
         ("rust-tokio-uds" ,rust-tokio-uds-0.2))
        #:cargo-development-inputs
-       (("rust-env-logger" ,rust-env-logger-0.6)
+       (("rust-env-logger" ,rust-env-logger-0.5)
         ("rust-flate2" ,rust-flate2-1.0)
         ("rust-futures-cpupool" ,rust-futures-cpupool-0.1)
         ("rust-http" ,rust-http-0.1)
         ("rust-httparse" ,rust-httparse-1.3)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
@@ -24019,8 +26482,7 @@ backed applications.")
          "0wbgg59mxfvrhzv97y56nh3gmnmw3jj9dhgkmvz27410jjxzpvxf"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-bytes" ,rust-bytes-0.4)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-iovec" ,rust-iovec-0.1)
@@ -24039,7 +26501,7 @@ backed applications.")
         ("rust-http" ,rust-http-0.1)
         ("rust-httparse" ,rust-httparse-1.3)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
@@ -24129,7 +26591,7 @@ the current thread.")
        #:cargo-development-inputs
        (("rust-rand" ,rust-rand-0.4)
         ("rust-tempdir" ,rust-tempdir-0.3)
-        ("rust-tempfile" ,rust-tempfile-3.0)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-tokio" ,rust-tokio-0.1)
         ("rust-tokio-codec" ,rust-tokio-codec-0.1)
         ("rust-tokio-io" ,rust-tokio-io-0.1))))
@@ -24183,10 +26645,9 @@ the current thread.")
          "17lrjj7lcw13wchpbvr8cynmypd29h40clf9qxabh6fxva40kwm5"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-futures" ,rust-futures-0.1)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-tokio" ,rust-tokio-0.1)
         ("rust-tokio-executor" ,rust-tokio-executor-0.1))
        #:cargo-development-inputs
@@ -24349,21 +26810,20 @@ futures.")
          "1khip64cn63xvayq1db68kxcnhgw3cb449a4n2lbw4p1qzx6pwba"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4)
         ("rust-mio" ,rust-mio-0.6)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-parking-lot" ,rust-parking-lot-0.7)
         ("rust-slab" ,rust-slab-0.4)
         ("rust-tokio-executor" ,rust-tokio-executor-0.1)
         ("rust-tokio-io" ,rust-tokio-io-0.1)
         ("rust-tokio-sync" ,rust-tokio-sync-0.1))
        #:cargo-development-inputs
-       (("rust-num-cpus" ,rust-num-cpus-1.10)
+       (("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-tokio" ,rust-tokio-0.1)
         ("rust-tokio-io-pool" ,rust-tokio-io-pool-0.1))))
     (home-page "https://tokio.rs")
@@ -24541,19 +27001,19 @@ futures.")
          "1wkj3wixicsqvllm8w74b24knw6mdn00zslm8l9fm1p81gr8lmbj"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
         ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
+        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
-        ("rust-rand" ,rust-rand-0.4)
+        ("rust-num-cpus" ,rust-num-cpus-1)
+        ("rust-rand" ,rust-rand-0.6)
         ("rust-slab" ,rust-slab-0.4)
         ("rust-tokio-executor" ,rust-tokio-executor-0.1))
        #:cargo-development-inputs
-       (("rust-env-logger" ,rust-env-logger-0.6)
+       (("rust-env-logger" ,rust-env-logger-0.5)
         ("rust-futures-cpupool" ,rust-futures-cpupool-0.1)
         ("rust-threadpool" ,rust-threadpool-1.7))))
     (home-page "https://github.com/tokio-rs/tokio")
@@ -24676,7 +27136,7 @@ pool.")
         ("rust-tokio-io" ,rust-tokio-io-0.1)
         ("rust-tokio-reactor" ,rust-tokio-reactor-0.1))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.0)
+       (("rust-tempfile" ,rust-tempfile-3)
         ("rust-tokio" ,rust-tokio-0.1))))
     (home-page "https://github.com/tokio-rs/tokio")
     (synopsis "Unix Domain sockets for Tokio")
@@ -24699,7 +27159,7 @@ pool.")
     (arguments
      `(#:skip-build? #t
        #:cargo-inputs
-        (("rust-indexmap" ,rust-indexmap-1.0)
+        (("rust-indexmap" ,rust-indexmap-1)
          ("rust-serde" ,rust-serde-1.0))
         #:cargo-development-inputs
         (("rust-serde-derive" ,rust-serde-derive-1.0)
@@ -24784,6 +27244,26 @@ serializing Rust str")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-treeline-0.1
+  (package
+    (name "rust-treeline")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "treeline" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0hcdgyk5xzcx2ylm0fr9czzs9cjznm7l9q5qz51qi97i82r43xx7"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/softprops/treeline")
+    (synopsis "Library for visualizing tree structured data")
+    (description
+     "This package provides a library for visualizing tree structured data.")
+    (license license:expat)))
+
 (define-public rust-try-from-0.3
   (package
     (name "rust-try-from")
@@ -24846,7 +27326,7 @@ serializing Rust str")
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-termcolor" ,rust-termcolor-1.0)
+        ("rust-termcolor" ,rust-termcolor-1)
         ("rust-toml" ,rust-toml-0.5))))
     (home-page "https://github.com/dtolnay/trybuild")
     (synopsis "Test harness for ui tests of compiler diagnostics")
@@ -24915,10 +27395,10 @@ serializing Rust str")
      "A typesafe store for many value types.")
     (license license:expat)))
 
-(define-public rust-typenum-1.10
+(define-public rust-typenum-1
   (package
     (name "rust-typenum")
-    (version "1.10.0")
+    (version "1.12.0")
     (source
       (origin
         (method url-fetch)
@@ -24926,7 +27406,7 @@ serializing Rust str")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0sc1jirllfhdi52z1xv9yqzxzpk6v7vadd13n7wvs1wnjipn6bb1"))))
+          "0cvbksljz61ian21fnn0h51kphl0pwpzb932bv4s0rwy1wh8lg1p"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/paholg/typenum")
     (synopsis "Rust library for type-level numbers evaluated at compile time")
@@ -24955,7 +27435,7 @@ implementation is incomplete.")
      `(#:skip-build? #t
        #:cargo-inputs
        (("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.1))))
+        ("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/BurntSushi/ucd-generate")
     (synopsis "Parse data files in the Unicode character database")
     (description
@@ -25027,7 +27507,7 @@ with the Unicode character database.")
      "Unchecked indexing wrapper using regular index syntax.")
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-unicase-2.6
+(define-public rust-unicase-2
   (package
     (name "rust-unicase")
     (version "2.6.0")
@@ -25051,31 +27531,9 @@ with the Unicode character database.")
      "This package provides a case-insensitive wrapper around strings.")
     (license (list license:expat license:asl2.0))))
 
-(define-public rust-unicase-2.4
-  (package
-    (name "rust-unicase")
-    (version "2.4.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "unicase" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "1xmpmkakhhblq7dzab1kwyv925kv7fqjkjsxjspg6ix9n88makm8"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs (("rust-version-check" ,rust-version-check-0.1))))
-    (home-page "https://github.com/seanmonstar/unicase")
-    (synopsis "Case-insensitive wrapper around strings")
-    (description
-     "A case-insensitive wrapper around strings.")
-    (license (list license:asl2.0
-                   license:expat))))
-
 (define-public rust-unicase-1
   (package
-    (inherit rust-unicase-2.4)
+    (inherit rust-unicase-2)
     (name "rust-unicase")
     (version "1.4.2")
     (source
@@ -25125,7 +27583,7 @@ with the Unicode character database.")
 (define-public rust-unicode-normalization-0.1
   (package
     (name "rust-unicode-normalization")
-    (version "0.1.9")
+    (version "0.1.11")
     (source
      (origin
        (method url-fetch)
@@ -25133,12 +27591,11 @@ with the Unicode character database.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1kviyqg3bmds4p5hgwf9qgihw8xxvq7ljgyrrk7ygxa2k450gj09"))))
+        (base32 "1kxxb5ndb5dzyp1flajjdxnbwyjw6ml9xvy0pz7b8srjn9ky4qdm"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
-       (("rust-smallvec" ,rust-smallvec-0.6))))
+     `(#:cargo-inputs
+       (("rust-smallvec" ,rust-smallvec-1))))
     (home-page "https://github.com/unicode-rs/unicode-normalization")
     (synopsis
      "This crate provides functions for normalization of Unicode strings")
@@ -25215,7 +27672,7 @@ boundaries according to Unicode Standard Annex #29 rules.")
 (define-public rust-unicode-xid-0.2
   (package
     (name "rust-unicode-xid")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
       (origin
         (method url-fetch)
@@ -25224,7 +27681,7 @@ boundaries according to Unicode Standard Annex #29 rules.")
           (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0z09fn515xm7zyr0mmdyxa9mx2f7azcpv74pqmg611iralwpcvl2"))))
+          "0r6mknipyy9vpz8mwmxvkx65ff2ha1n2pxqjj6f46lcn8yrhpzpp"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/unicode-rs/unicode-xid")
     (synopsis "Determine Unicode XID related properties")
@@ -25264,14 +27721,14 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
 (define-public rust-unindent-0.1
   (package
     (name "rust-unindent")
-    (version "0.1.5")
+    (version "0.1.6")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "unindent" version))
         (file-name (string-append name "-" version ".crate"))
         (sha256
-         (base32 "14s97blyqgf9hzxk22iazrghj60midajkw2801dfspz3n2iqmwb3"))))
+         (base32 "0hl9l4w9mhv5qacx7cirm6rarrphw35b5syw2plx13vz884dfhdg"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/dtolnay/indoc")
     (synopsis "Remove a column of leading whitespace from a string")
@@ -25352,7 +27809,7 @@ whitespace from a string.")
 (define-public rust-untrusted-0.7
   (package
     (name "rust-untrusted")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
       (origin
         (method url-fetch)
@@ -25360,7 +27817,7 @@ whitespace from a string.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1kmfykcwif6ashkwg54gcnhxj03kpba2i9vc7z5rpr0xlgvrwdk0"))))
+          "0jkbqaj9d3v5a91pp3wp9mffvng1nhycx6sh4qkdd9qyr62ccmm1"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/briansmith/untrusted")
     (synopsis "Zero-allocation parsing of untrusted inputs in Rust")
@@ -25445,7 +27902,7 @@ untrusted inputs in Rust.")
 (define-public rust-urlocator-0.1
  (package
    (name "rust-urlocator")
-   (version "0.1.2")
+   (version "0.1.3")
    (source
     (origin
       (method url-fetch)
@@ -25454,9 +27911,9 @@ untrusted inputs in Rust.")
        (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "1xzhwmqrqyk8p3s5npqpidrn0gjapqx5fshrx633fk56j7cm8qm1"))))
+        "0r5ig00np3svjpvb1gha3ni798cwj2w7rnlwrc8jrrw7bvlb2yri"))))
    (build-system cargo-build-system)
-   (home-page "https://github.com/chrisduerr/urlocator.git")
+   (home-page "https://github.com/alacritty/urlocator")
    (synopsis "Locate URLs in character streams")
    (description "Locate URLs in character streams.")
    (license (list license:expat license:asl2.0))))
@@ -25494,10 +27951,10 @@ untrusted inputs in Rust.")
 See winapi for types and constants.")
     (license license:expat)))
 
-(define-public rust-users-0.9
+(define-public rust-users-0.10
   (package
     (name "rust-users")
-    (version "0.9.1")
+    (version "0.10.0")
     (source
       (origin
         (method url-fetch)
@@ -25506,16 +27963,37 @@ See winapi for types and constants.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1kxl3y2hcrqqip7jpqn5mz7xlpbwmmpfmaza0xnyrhx0mrkl4by7"))))
+          "11plda5r3dl8hs0sl0jskazam4ayv3a06vmhzk4l7914agljfhma"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+     `(#:cargo-inputs
+       (("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4))
+       #:cargo-development-inputs
+       (("rust-env-logger" ,rust-env-logger-0.7))))
     (home-page "https://github.com/ogham/rust-users")
     (synopsis "Library for getting information on Unix users and groups")
     (description "This package provides a library for getting information on
 Unix users and groups.")
     (license license:expat)))
 
+(define-public rust-users-0.9
+  (package
+    (inherit rust-users-0.10)
+    (name "rust-users")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "users" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "1kxl3y2hcrqqip7jpqn5mz7xlpbwmmpfmaza0xnyrhx0mrkl4by7"))))
+    (arguments
+     `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2))))))
+
 (define-public rust-utf-8-0.7
   (package
     (name "rust-utf-8")
@@ -25655,7 +28133,7 @@ Unix users and groups.")
         ("rust-slog" ,rust-slog-2.4)
         ("rust-winapi" ,rust-winapi-0.3))
        #:cargo-development-inputs
-       (("rust-bincode" ,rust-bincode-1.1)
+       (("rust-bincode" ,rust-bincode-1)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
         ("rust-serde-json" ,rust-serde-json-1.0)
         ("rust-serde-test" ,rust-serde-test-1.0))))
@@ -25690,7 +28168,7 @@ Unix users and groups.")
 (define-public rust-vcpkg-0.2
   (package
     (name "rust-vcpkg")
-    (version "0.2.8")
+    (version "0.2.10")
     (source
       (origin
         (method url-fetch)
@@ -25698,7 +28176,7 @@ Unix users and groups.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0s1ijdrsg6917imja2hb07l0z4vbx7ydm8m2i1n9g62fg7r3ki1z"))))
+          "132hlmsc4maava91vl4lh677sl1c7vr8ccl53fnr5w41y6dh4m34"))))
     (build-system cargo-build-system)
     (arguments
      `(#:tests? #f      ; Tests want mysql, harfbuzz, graphite2.
@@ -25716,7 +28194,7 @@ Unix users and groups.")
 (define-public rust-vec-map-0.8
   (package
     (name "rust-vec-map")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
       (origin
         (method url-fetch)
@@ -25724,7 +28202,7 @@ Unix users and groups.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5"))))
+          "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -25781,7 +28259,7 @@ designed for reexporting.")
        (("rust-chrono" ,rust-chrono-0.4)
         ("rust-chrono" ,rust-chrono-0.4)
         ("rust-bitflags" ,rust-bitflags-1))))
-    (home-page "http://github.com/rustyhorde/vergen")
+    (home-page "https://github.com/rustyhorde/vergen")
     (synopsis "Generate version related functions")
     (description
      "Generate version related functions.")
@@ -25844,7 +28322,7 @@ If that fails, no determination is made, and calls return None.")
        (("rust-itertools" ,rust-itertools-0.8)
         ("rust-proc-macro2" ,rust-proc-macro2-0.4)
         ("rust-pulldown-cmark" ,rust-pulldown-cmark-0.4)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-semver-parser" ,rust-semver-parser-0.9)
         ("rust-syn" ,rust-syn-0.15)
         ("rust-toml" ,rust-toml-0.5)
@@ -25997,35 +28475,9 @@ specified across Unix and Windows platforms.")
     (description "Recursively walk a directory.")
     (license (list license:unlicense license:expat))))
 
-(define-public rust-walkdir-2.2
-  (package
-    (name "rust-walkdir")
-    (version "2.2.9")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "walkdir" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "07ppalpvxkf8cnqr64np422792y4z5bs9m8b4nrflh5rm17wjn4n"))))
-    (build-system cargo-build-system)
-    (arguments
-     `(#:cargo-inputs
-       (("rust-same-file" ,rust-same-file-1.0)
-        ("rust-winapi" ,rust-winapi-0.3)
-        ("rust-winapi-util" ,rust-winapi-util-0.1))
-       #:cargo-development-inputs
-       (("rust-doc-comment" ,rust-doc-comment-0.3))))
-    (home-page  "https://github.com/BurntSushi/walkdir")
-    (synopsis "Recursively walk a directory")
-    (description "Recursively walk a directory.")
-    (license (list license:unlicense
-                   license:expat))))
-
 (define-public rust-walkdir-1.0
   (package
-    (inherit rust-walkdir-2.2)
+    (inherit rust-walkdir-2.3)
     (name "rust-walkdir")
     (version "1.0.7")
     (source
@@ -26520,7 +28972,7 @@ attribute that is not in the shared backend crate.")
         ("rust-wayland-scanner" ,rust-wayland-scanner-0.23))
        #:cargo-development-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-tempfile" ,rust-tempfile-3.1))))
+        ("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/smithay/wayland-rs")
     (synopsis
      "Rust bindings to the standard C implementation of the wayland protocol")
@@ -26556,7 +29008,7 @@ the wayland protocol, client side.")
         ("rust-wayland-scanner" ,rust-wayland-scanner-0.21))
        #:cargo-development-inputs
        (("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-tempfile" ,rust-tempfile-3.1))))))
+        ("rust-tempfile" ,rust-tempfile-3))))))
 
 (define-public rust-wayland-commons-0.23
   (package
@@ -26673,13 +29125,12 @@ the wayland protocol, client side.")
         ("rust-quote" ,rust-quote-0.6)
         ("rust-xml-rs" ,rust-xml-rs-0.8))))
     (home-page "https://github.com/smithay/wayland-rs")
-    (synopsis
-     "Wayland Scanner for generating rust APIs from XML wayland protocol files")
+    (synopsis "Generate Rust APIs from XML Wayland protocol files")
     (description
-     "Wayland Scanner for generating rust APIs from XML wayland protocol files.
-Intented for use with wayland-sys.  You should only need this crate if
-you are working on custom wayland protocol extensions.
-Look at the crate wayland-client for usable bindings.")
+     "Wayland Scanner generates Rust APIs from XML Wayland protocol files.
+It is intended for use with wayland-sys.  You should only need this crate if
+you are working on custom Wayland protocol extensions.
+Look at the wayland-client crate for usable bindings.")
     (license license:expat)))
 
 (define-public rust-wayland-scanner-0.21
@@ -27017,7 +29468,7 @@ Locate installed executable in cross platforms.")
 (define-public rust-widestring-0.4
   (package
     (name "rust-widestring")
-    (version "0.4.0")
+    (version "0.4.2")
     (source
       (origin
         (method url-fetch)
@@ -27025,11 +29476,10 @@ Locate installed executable in cross platforms.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1dhx6dndjsz1y7c9w06922412kdxyrrkqblvggm76mh8z17hxz7g"))))
+          "13565qy4jhpg4x0xw8mwxzzsh0p8c93p5208lh6kpwp0q01y6qx7"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-development-inputs
+     `(#:cargo-development-inputs
        (("rust-winapi" ,rust-winapi-0.3))))
     (home-page "https://github.com/starkat99/widestring-rs")
     (synopsis "Wide string Rust FFI library")
@@ -27043,7 +29493,7 @@ UTF-32 types are provided, including support for malformed encoding.")
 (define-public rust-winapi-0.3
   (package
     (name "rust-winapi")
-    (version "0.3.8")
+    (version "0.3.9")
     (source
       (origin
         (method url-fetch)
@@ -27051,7 +29501,7 @@ UTF-32 types are provided, including support for malformed encoding.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1ii9j9lzrhwri0902652awifzx9fpayimbp6hfhhc296xcg0k4w0"))))
+          "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw"))))
     (build-system cargo-build-system)
     ;; This package depends unconditionally on these two crates.
     (arguments
@@ -27123,7 +29573,7 @@ i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
 (define-public rust-winapi-util-0.1
   (package
     (name "rust-winapi-util")
-    (version "0.1.4")
+    (version "0.1.5")
     (source
       (origin
         (method url-fetch)
@@ -27131,7 +29581,7 @@ i686-pc-windows-gnu target.  Please don't use this crate directly, depend on
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0vj3984cxwnf1ys3fdz6bpl7p0kdsgykpzbhmcmwi759cd8mqlgs"))))
+          "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs (("rust-winapi" ,rust-winapi-0.3))))
@@ -27167,7 +29617,7 @@ x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
 (define-public rust-wincolor-1.0
   (package
     (name "rust-wincolor")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
       (origin
         (method url-fetch)
@@ -27175,7 +29625,7 @@ x86_64-pc-windows-gnu target.  Please don't use this crate directly, depend on
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "1agaf3hcav113i86912ajnw6jxcy4rvkrgyf8gdj8kc031mh3xcn"))))
+          "017x33ljndwc76cp5z9llgndn0nh7v8jcjaykbizkawmwy9n3pyp"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -27436,7 +29886,7 @@ color in a Windows console.")
 (define-public rust-x11-dl-2
   (package
     (name "rust-x11-dl")
-    (version "2.18.4")
+    (version "2.18.5")
     (source
      (origin
        (method url-fetch)
@@ -27444,8 +29894,7 @@ color in a Windows console.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32
-         "0n1w837xagxqgwx2880d7c9ks6l3g1kk00yd75afdaiv58sf2rdy"))))
+        (base32 "1y7yq4sfvv56shk4v3s7gvlrwk9d0migj622fl4i4c5klpiq3y9b"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -27476,7 +29925,7 @@ color in a Windows console.")
        #:cargo-inputs
        (("rust-libc" ,rust-libc-0.2))
        #:cargo-development-inputs
-       (("rust-tempfile" ,rust-tempfile-3.0))))
+       (("rust-tempfile" ,rust-tempfile-3))))
     (home-page "https://github.com/Stebalien/xattr")
     (synopsis "Unix extended filesystem attributes")
     (description
@@ -27524,19 +29973,18 @@ extended attributes.")
     (name "rust-xdg")
     (version "2.2.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (crate-uri "xdg" version))
-        (file-name (string-append name "-" version ".crate"))
-        (sha256
-         (base32
-          "0mws8a0fr3cqk5nh7aq9lmkmhzghvasqy4mhw6nnza06l4d6i2fh"))))
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "xdg" version))
+       (file-name (string-append name "-" version ".crate"))
+       (sha256
+        (base32 "0mws8a0fr3cqk5nh7aq9lmkmhzghvasqy4mhw6nnza06l4d6i2fh"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/whitequark/rust-xdg")
     (synopsis "Store and retrieve files according to XDG specification")
     (description
      "This package provides a library for storing and retrieving files according
-to XDG Base Directory specification")
+to XDG Base Directory specification.")
     (license (list license:asl2.0
                    license:expat))))
 
@@ -27570,10 +30018,40 @@ to XDG Base Directory specification")
     (description "An XML library in pure Rust.")
     (license license:expat)))
 
+(define-public rust-xml5ever-0.16
+  (package
+    (name "rust-xml5ever")
+    (version "0.16.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "xml5ever" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0nbapmdrn4zqry5p01l2mmbb48fcq0gga377p1c4lkb1x3k546qb"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-log" ,rust-log-0.4)
+        ("rust-mac" ,rust-mac-0.1)
+        ("rust-markup5ever" ,rust-markup5ever-0.10)
+        ("rust-time" ,rust-time-0.1))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.3)
+        ("rust-rustc-test" ,rust-rustc-test-0.3))))
+    (home-page
+     "https://github.com/servo/html5ever/blob/master/xml5ever/README.md")
+    (synopsis "Push based streaming parser for xml")
+    (description
+     "Push based streaming parser for xml.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-y4m-0.5
   (package
     (name "rust-y4m")
-    (version "0.5.0")
+    (version "0.5.3")
     (source
       (origin
         (method url-fetch)
@@ -27581,10 +30059,12 @@ to XDG Base Directory specification")
         (file-name
           (string-append name "-" version ".tar.gz"))
         (sha256
-          (base32
-            "06g8c53qk4cla3xczywx5qlklvzsw54x77vm727mhizlsp5n93ar"))))
+         (base32
+          "1933677by64y06zfgip2yq8b2dza8xnljhaksx93czq90b54kscz"))))
     (build-system cargo-build-system)
-    (arguments `(#:skip-build? #t))
+    (arguments
+     `(#:cargo-development-inputs
+       (("rust-resize" ,rust-resize-0.3))))
     (home-page "https://github.com/image-rs/y4m")
     (synopsis "YUV4MPEG2 (.y4m) Encoder/Decoder.")
     (description "YUV4MPEG2 (.y4m) Encoder/Decoder.")
@@ -27654,10 +30134,60 @@ to XDG Base Directory specification")
     (description "This package provides an implementation of zbase32.")
     (license license:lgpl3+)))
 
+(define-public rust-zeroize-1
+  (package
+    (name "rust-zeroize")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "zeroize" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1f5547q8l8bpi16yy6lix2gl9rf1qz45lj06bq7wjk525gnw5fiw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:tests? #f                      ;2 doc tests fail
+       #:cargo-inputs
+       (("rust-zeroize-derive" ,rust-zeroize-derive-1))))
+    (home-page "https://github.com/iqlusioninc/crates/")
+    (synopsis "Securely clear secrets from memory")
+    (description
+     "Zeroize securely clears secrets from memory with a simple trait built on
+stable Rust primitives, which guarantee memory is zeroed using an operation
+will not be ``optimized away'' by the compiler.  It uses a portable pure Rust
+implementation that works everywhere, even WASM!")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-zeroize-derive-1
+  (package
+    (name "rust-zeroize-derive")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "zeroize-derive" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "18lc9xq9dwvmv81y3bqnw20974nbrs7d20rljb1inz7wd7n1w9fy"))))
+    (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)
+        ("rust-synstructure" ,rust-synstructure-0.12))))
+    (home-page "https://github.com/iqlusioninc/crates/")
+    (synopsis "Custom derive support for zeroize")
+    (description "This crate provides custom derive support for Zeroize.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-zip-0.5
   (package
     (name "rust-zip")
-    (version "0.5.4")
+    (version "0.5.6")
     (source
      (origin
        (method url-fetch)
@@ -27666,7 +30196,7 @@ to XDG Base Directory specification")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1biv5kh4fl7wpjlsxfczvgrdjlybf0xjaw7s36didql8lxxz67z4"))))
+         "0zfv0ascxl8gqqxgjck99kypcb0f67lg2k1a3zwza1w5swl7qa2q"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 9b4aa103da..b35a3cb40b 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -373,7 +373,7 @@ target that libc."
                                     ',%gcc-cross-include-paths)
                           #t))))
          #:configure-flags (list ,(string-append "--target=" target))
-         ,@(package-arguments mig)))
+         #:tests? #f))
 
       (propagated-inputs `(("cross-gnumach-headers" ,xgnumach-headers)))
       (native-inputs `(("cross-gcc" ,xgcc)
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index be8f8b9f05..5532f7e9f8 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
@@ -16,6 +16,7 @@
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,9 +42,11 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages image)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libbsd)
@@ -69,8 +72,10 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
   #:use-module (guix build-system perl)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
@@ -170,6 +175,58 @@ OpenBSD tool of the same name.")
                                           "See base64.c in the distribution for
                                            the license from IBM.")))))
 
+(define-public rust-minisign
+  (package
+    (name "rust-minisign")
+    (version "0.5.20")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "minisign" version))
+        (file-name
+         (string-append name "-" version ".tar.gz"))
+        (sha256
+         (base32
+          "0xmcvh2snravghaar8igc6b9r3s1snnmf9qam9l3zyhm4987767y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-getrandom" ,rust-getrandom-0.1)
+        ("rust-rpassword" ,rust-rpassword-4)
+        ("rust-scrypt" ,rust-scrypt-0.3))))
+    (home-page "https://github.com/jedisct1/rust-minisign")
+    (synopsis "Crate to sign files and verify signatures")
+    (description
+     "This package provides a crate to sign files and verify signatures.")
+    (license license:expat)))
+
+(define-public go-minisign
+  (package
+    (name "go-minisign")
+    (version "0.1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jedisct1/go-minisign")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0wc0rk5m60yz52f0cncmbgq67yvb1rcx91gvzjg6jpc4mpw2db27"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin (delete-file-recursively "vendor") #t))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/jedisct1/go-minisign"))
+    (propagated-inputs
+     `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
+    (home-page "https://github.com/jedisct1/go-minisign")
+    (synopsis "Minisign verification library for Golang")
+    (description "A Golang library to verify Minisign signatures.")
+    (license license:expat)))
+
 (define-public encfs
   (package
     (name "encfs")
@@ -389,7 +446,7 @@ no man page, refer to the home page for usage details.")
                                  (error "program not found:" program)))
                            '("seq" "mkfs.ext4" "pinentry"
                              "gpg" "cryptsetup" "gettext" "lsof"
-                             "qrencode" "steghide" "findmnt")))))
+                             "qrencode" "steghide" "findmnt" "getent")))))
                #t)))
          (delete 'check)
          (add-after 'wrap 'check
@@ -456,7 +513,7 @@ attacks than alternative functions such as @code{PBKDF2} or @code{bcrypt}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/technion/libscrypt.git")
+             (url "https://github.com/technion/libscrypt")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -850,7 +907,7 @@ security.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/vstakhov/asignify.git")
+                       (url "https://github.com/vstakhov/asignify")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm
index bd6e046452..57333ea13d 100644
--- a/gnu/packages/cryptsetup.scm
+++ b/gnu/packages/cryptsetup.scm
@@ -35,7 +35,7 @@
 (define-public cryptsetup
   (package
    (name "cryptsetup")
-   (version "2.2.2")
+   (version "2.3.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/linux/utils/cryptsetup/v"
@@ -43,7 +43,7 @@
                                 "/cryptsetup-" version ".tar.xz"))
             (sha256
              (base32
-              "0ija889kfhg4n2fshpq9yh2b1jl2ipvd7sfafh08g75ba6ayrw1a"))))
+              "1pw2bq4nv2z3xyycckxkbp7dp9kkp2n6bspna3plryg277z4zjiv"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags
@@ -58,7 +58,7 @@
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("argon2" ,argon2)
-      ("json-c" ,json-c-0.13)   ;XXX update this for cryptsetup >= 2.3
+      ("json-c" ,json-c)
       ("libgcrypt" ,libgcrypt)
       ("lvm2" ,lvm2)                    ; device-mapper
       ("popt" ,popt)
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 8bfe96079c..281c2718e8 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -422,7 +422,7 @@ should only be used as part of the Guix cups-pk-helper service.")
                                   "/hplip-" version ".tar.gz"))
               (sha256
                (base32
-                "0rmk7i28mb0q66i5l9d0fq2j23dkhz5gx5g2xvi16ga0dnprcilp"))
+                "083w58wpvvm6sir6rf5dwx3r0rman9sv1zpl26chl0a88crjsjy6"))
               (modules '((guix build utils)))
               (patches (search-patches "hplip-remove-imageprocessor.patch"))
               (snippet
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 48d7dd40bd..55b7e4393b 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Dale Mellor <guix-devel-0brg6b@rdmp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (gnu packages)
@@ -52,6 +54,7 @@
   (package
    (name "curl")
    (version "7.69.1")
+   (replacement curl-7.71.0)
    (source (origin
             (method url-fetch)
             (uri (string-append "https://curl.haxx.se/download/curl-"
@@ -168,6 +171,31 @@ tunneling, and so on.")
     (name "curl-minimal")
     (inputs (alist-delete "openldap" (package-inputs curl))))))
 
+;; Replacement package to fix CVE-2020-8169 and CVE-2020-8177.
+(define curl-7.71.0
+  (package
+    (inherit curl)
+    (version "7.71.0")
+    (source (origin
+              (inherit (package-source curl))
+              (uri (string-append "https://curl.haxx.se/download/curl-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0wlppmx9iry8slh4pqcxj7lwc6fqwnlhh9ri2pcym2rx76a8gwfd"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments curl)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'check
+             (lambda _
+               ;; Test 1510 is now disabled upstream, and the test runner
+               ;; complains that it can not disable a non-existing test.
+               ;; Thus, override the phase to not delete the test.
+               (substitute* "tests/runtests.pl"
+                 (("/bin/sh") (which "sh")))
+               (invoke "make" "-C" "tests" "test")))))))))
+
 (define-public kurly
   (package
     (name "kurly")
@@ -258,3 +286,34 @@ not offer a replacement for libcurl.")
 Guile to do client-side URL transfers, like requesting documents from HTTP or
 FTP servers.  It is based on the curl library.")
    (license license:gpl3+)))
+
+(define-public curlpp
+  (package
+    (name "curlpp")
+    (version "0.8.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jpbarrette/curlpp")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "1b0ylnnrhdax4kwjq64r1fk0i24n5ss6zfzf4hxwgslny01xiwrk"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    ;; There are no build tests to be had.
+    (arguments
+     '(#:tests? #f))
+    ;; The installed version needs the header files from the C library.
+    (propagated-inputs
+     `(("curl" ,curl)))
+    (synopsis "C++ wrapper around libcURL")
+    (description
+     "This package provides a free and easy-to-use client-side C++ URL
+transfer library, supporting FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT,
+FILE and LDAP; in particular it supports HTTPS certificates, HTTP POST, HTTP
+PUT, FTP uploading, kerberos, HTTP form based upload, proxies, cookies,
+user+password authentication, file transfer resume, http proxy tunneling and
+more!")
+    (home-page "http://www.curlpp.org")
+    (license license:expat)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index e2eb0f396d..0e6ad4e291 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -42,6 +42,7 @@
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
+;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -147,7 +148,7 @@
     (source (origin
       (method git-fetch)
       (uri (git-reference
-             (url "https://github.com/4store/4store.git")
+             (url "https://github.com/4store/4store")
              (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -609,6 +610,37 @@ RDBMS systems (which are deep in functionality).")
                    ;; Some parts are licensed under the Apache License
                    license:asl2.0))))
 
+(define-public mycli
+  (package
+    (name "mycli")
+    (version "1.21.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "mycli" version))
+        (sha256
+          (base32
+            "1q9p0yik9cpvpxjs048anvhicfcna84mpl7axv9bwgr48w40lqwg"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))                    ; tests expect a running MySQL
+    (propagated-inputs
+      `(("python-cli-helpers" ,python-cli-helpers)
+        ("python-click" ,python-click)
+        ("python-configobj" ,python-configobj)
+        ("python-cryptography" ,python-cryptography)
+        ("python-prompt-toolkit" ,python-prompt-toolkit)
+        ("python-pygments" ,python-pygments)
+        ("python-pymysql" ,python-pymysql)
+        ("python-sqlparse" ,python-sqlparse)))
+    (home-page "http://mycli.net")
+    (synopsis
+      "Terminal Client for MySQL with AutoCompletion and Syntax Highlighting")
+    (description
+      "MyCLI is a command line interface for MySQL, MariaDB, and Percona with
+auto-completion and syntax highlighting.")
+    (license license:bsd-3)))
+
 ;; XXX When updating, check whether boost-for-mysql is still needed.
 ;; It might suffice to patch ‘cmake/boost.cmake’ as done in the past.
 (define-public mysql
@@ -938,7 +970,7 @@ as a drop-in replacement of MySQL.")
 (define-public mariadb-connector-c
   (package
     (name "mariadb-connector-c")
-    (version "3.1.8")
+    (version "3.1.9")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -947,7 +979,7 @@ as a drop-in replacement of MySQL.")
                     version "-src.tar.gz"))
               (sha256
                (base32
-                "0yrzhsxmjiwkhchagx8dymzhvxl3k5h40wn9wpicqjvgjb9k8523"))))
+                "1izjzf7yzjqzlk8dkp327fa9lawsv2hnnlnr7g5lshyx5azrk38h"))))
     (inputs
      `(("openssl" ,openssl)))
     (build-system cmake-build-system)
@@ -1401,7 +1433,7 @@ which uses SQL to describe changes.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/coffeeandscripts/sqlcrush.git")
+                      (url "https://github.com/coffeeandscripts/sqlcrush")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1481,15 +1513,14 @@ extremely small.")
 (define-public perl-dbix-class
   (package
     (name "perl-dbix-class")
-    (version "0.082841")
+    (version "0.082842")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
                            "DBIx-Class-" version ".tar.gz"))
        (sha256
-        (base32
-         "1gf3hgv8f9rnr8bl4ljgsqk4aliphmvljhsk4282kvdc4mcgh1fp"))))
+        (base32 "1rh7idjjbibc1zmiaaarask434lh0lx7f2xyfwmy37k9fa0xcpmh"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
@@ -1517,7 +1548,7 @@ extremely small.")
        ("perl-path-class" ,perl-path-class)
        ("perl-scalar-list-utils" ,perl-scalar-list-utils)
        ("perl-scope-guard" ,perl-scope-guard)
-       ("perl-sql-abstract" ,perl-sql-abstract)
+       ("perl-sql-abstract-classic" ,perl-sql-abstract-classic)
        ("perl-sub-name" ,perl-sub-name)
        ("perl-text-balanced" ,perl-text-balanced)
        ("perl-try-tiny" ,perl-try-tiny)))
@@ -1782,6 +1813,42 @@ structures you provide it, so that you don't have to modify your code every
 time your data changes.")
     (license license:perl-license)))
 
+(define-public perl-sql-abstract-classic
+  (package
+    (name "perl-sql-abstract-classic")
+    (version "1.91")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
+                           "SQL-Abstract-Classic-" version ".tar.gz"))
+       (sha256
+        (base32 "0a7g13hs3kdxrjn43sfli09mgsi9d6w0dfw6hlk268av17yisgaf"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-warn" ,perl-test-warn)))
+    (propagated-inputs
+     `(("perl-mro-compat" ,perl-mro-compat)
+       ("perl-sql-abstract" ,perl-sql-abstract)))
+    (home-page "https://metacpan.org/release/SQL-Abstract-Classic")
+    (synopsis "Generate SQL from Perl data structures")
+    (description
+     "This module is nearly identical to @code{SQL::Abstract} 1.81, and exists
+to preserve the ability of users to opt into the new way of doing things in
+later versions according to their own schedules.
+
+It is an abstract SQL generation module based on the concepts used by
+@code{DBIx::Abstract}, with several important differences, especially when it
+comes to @code{WHERE} clauses.  These concepts were modified to make the SQL
+easier to generate from Perl data structures.
+
+The underlying idea is for this module to do what you mean, based on the data
+structures you provide it.  You shouldn't have to modify your code every time
+your data changes, as this module figures it out.")
+    (license license:perl-license)))
+
 (define-public perl-sql-splitstatement
   (package
     (name "perl-sql-splitstatement")
@@ -1909,8 +1976,8 @@ sets, bitmaps and hyperloglogs.")
     (version "1.2.77")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://fallabs.com/kyotocabinet/pkg/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "https://fallabs.com/kyotocabinet/pkg/"
+                                  "kyotocabinet-" version ".tar.gz"))
               (sha256
                (base32
                 "1rlx4307adbzd842b4npq6cwlw8h010ingxaz3qz1ijc70lr72an"))))
@@ -1922,7 +1989,7 @@ sets, bitmaps and hyperloglogs.")
         (string-append "LDFLAGS=-Wl,-rpath="
                        (assoc-ref %outputs "out") "/lib"))))
     (inputs `(("zlib" ,zlib)))
-    (home-page "http://fallabs.com/kyotocabinet/")
+    (home-page "https://fallabs.com/kyotocabinet/")
     (synopsis
      "Kyoto Cabinet is a modern implementation of the DBM database")
     (description
@@ -2125,7 +2192,7 @@ virtual address space — not physical RAM.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/drycpp/lmdbxx.git")
+             (url "https://github.com/drycpp/lmdbxx")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2354,7 +2421,7 @@ for ODBC.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/brianb/mdbtools.git")
+             (url "https://github.com/brianb/mdbtools")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2553,13 +2620,13 @@ Database API 2.0T.")
 (define-public python-sqlalchemy
   (package
     (name "python-sqlalchemy")
-    (version "1.3.15")
+    (version "1.3.18")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "SQLAlchemy" version))
       (sha256
-       (base32 "0iglkvymfp35zm5pxy5kzqvcv96kkas0chqdx7xpla86sspa9k64"))))
+       (base32 "1rwc6ss1cnz3kxx0p9p6xw0w79r8qw03lcc29k31yb3rcigvfbys"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-cython" ,python-cython) ; for C extensions
@@ -3090,7 +3157,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
     (source
      (origin (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/kayak/pypika.git")
+                   (url "https://github.com/kayak/pypika")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index 0f106b7ce9..b996a537cf 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -21,6 +21,7 @@
 
 (define-module (gnu packages datastructures)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages perl)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -55,20 +56,23 @@ and heaps.")
 (define-public marisa
   (package
     (name "marisa")
-    (version "0.2.5")
+    (version "0.2.6")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/s-yata/marisa-trie"
-                           "/releases/download/v" version "/" name "-"
-                           version ".tar.gz"))
+       (uri (string-append "https://github.com/s-yata/marisa-trie/files/"
+                           "4832504/marisa-" version ".tar.gz"))
        (sha256
-        (base32 "19ifrcmnbr9whaaf4ly3s9ndyiq9sjqhnfkrxbz9zsb44w2n36hf"))))
+        (base32 "1pk6wmi28pa8srb4szybrwfn71jldb61c5vgxsiayxcyg1ya4qqh"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
     (home-page "https://github.com/s-yata/marisa-trie")
     (synopsis "Trie data structure C++ library")
-    (description "Matching Algorithm with Recursively Implemented
-StorAge (MARISA) is a static and space-efficient trie data structure C++
+    (description "@acronym{MARISA, Matching Algorithm with Recursively
+Implemented StorAge} is a static and space-efficient trie data structure C++
 library.")
 
     ;; Dual-licensed, according to docs/readme.en.html (source files lack
@@ -82,7 +86,7 @@ library.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/sparsehash/sparsehash.git")
+                     (url "https://github.com/sparsehash/sparsehash")
                      (commit (string-append name "-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -157,7 +161,7 @@ queues, stacks, and doubly-linked lists.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/troydhanson/uthash.git")
+             (url "https://github.com/troydhanson/uthash")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -259,7 +263,7 @@ equivalent succinct data structure are (most of the time) identical.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/y-256/libdivsufsort.git")
+                    (url "https://github.com/y-256/libdivsufsort")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 1b837dfe40..b9e210c84b 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,13 +61,14 @@ clients.")
 (define-public vdirsyncer
   (package
     (name "vdirsyncer")
-    (version "0.16.7")
+    ;; When updating, check whether python-click-5 can be removed entirely.
+    (version "0.16.8")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri name version))
              (sha256
               (base32
-               "1vqjhn2bffy2bx45a1r14crsyn2cylf5by567g44c4mhpjwwz6vc"))))
+               "1i8kp9j99rs8xdhrc1vx749zd9wznlzj0pb3s05xdm71a8pl5nxz"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; The test suite is very flakey.
@@ -105,9 +107,11 @@ clients.")
        ("python-urllib3" ,python-urllib3)
        ("python-wsgi-intercept" ,python-wsgi-intercept)
        ("radicale" ,radicale)))
+    (inputs
+     `(;; XXX https://github.com/mitsuhiko/click/issues/200
+       ("python-click" ,python-click-5)))
     (propagated-inputs
      `(("python-atomicwrites" ,python-atomicwrites)
-       ("python-click" ,python-click)
        ("python-click-log" ,python-click-log)
        ("python-click-threading" ,python-click-threading)
        ("python-requests-toolbelt" ,python-requests-toolbelt)))
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index a3bbd2b907..1112a90a2e 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,8 +25,10 @@
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages wget)
   #:use-module (gnu packages perl))
@@ -181,7 +184,11 @@ contains the archive keys used for that.")
     (inputs
      `(("debian-keyring" ,debian-archive-keyring)
        ("ubuntu-keyring" ,ubuntu-keyring)
-       ("tzdata" ,tzdata)))
+       ("tzdata" ,tzdata)
+
+       ;; Called at run-time from various places, needs to be in PATH.
+       ("gnupg" ,gnupg)
+       ("wget" ,wget)))
     (native-inputs
      `(("perl" ,perl)))
     (home-page "https://tracker.debian.org/pkg/debootstrap")
@@ -192,6 +199,46 @@ It does this by downloading .deb files from a mirror site, and carefully
 unpacking them into a directory which can eventually be chrooted into.")
     (license license:gpl2)))
 
+(define-public debianutils
+  (package
+    (name "debianutils")
+    (version "4.11")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://salsa.debian.org/debian/debianutils.git")
+                    (commit (string-append "debian/" version))))
+              (file-name (git-file-name "debianutils" version))
+              (sha256
+               (base32
+                "1fmhzvymajack7kh8g4qjbwd9mq85z6rxl1psd1sm67s5695i9rc"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'bootstrap 'create-translations
+                    (lambda _
+                      (with-directory-excursion "po4a"
+                        (invoke "po4a" "--no-backups" "po4a.conf"))
+                      #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("po4a" ,po4a)))
+    (home-page "https://packages.debian.org/unstable/debianutils")
+    (synopsis "Miscellaneous shell utilities")
+    (description
+     "This package provides a number of utilities which are mostly for use
+in installation scripts of Debian packages.  The programs included are
+@command{add-shell}, @command{installkernel}, @command{ischroot},
+@command{remove-shell}, @command{run-parts}, @command{savelog},
+@command{tempfile}, and @command{which}.")
+    (license (list license:gpl2+
+                   ;; The 'savelog' program is distributed under a
+                   ;; GPL-compatible copyleft license.
+                   (license:fsf-free "file://debian/copyright"
+                                     "The SMAIL General Public License, see
+debian/copyright for more information.")))))
 
 (define-public apt-mirror
   (let ((commit "e664486a5d8947c2579e16dd793d762ea3de4202")
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index cceebb00c8..2a3e6edc31 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
@@ -393,8 +393,8 @@ server and embedded PowerPC, and S390 guests.")
     (supported-systems (delete "mips64el-linux" %supported-systems))))))
 
 (define-public stress-make
-  (let ((commit "9e92dff8f0157f012aaf31de5b8b8112ad720100")
-        (revision "1"))                 ;No official source distribution
+  (let ((commit "97815bed8060de33952475b3498767c91f59ffd9")
+        (revision "2"))                 ;No official source distribution
     (package
       (name "stress-make")
       (version (git-version "1.0" revision commit))
@@ -402,12 +402,12 @@ server and embedded PowerPC, and S390 guests.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lanl/stress-make.git")
+               (url "https://github.com/lanl/stress-make")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1z1yiwnqyzv3v6152fnjbfh2lr8q8fi5xxfdclnr8l8sd4c1rasp"))))
+           "0k55cy7x0hlc6rgpascl6ibhcfxaash3p9r9r8kwvbm3zag1rmac"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -431,7 +431,7 @@ server and embedded PowerPC, and S390 guests.")
              (add-after 'unpack-make 'set-default-shell
                (lambda _
                  ;; Taken mostly directly from (@ (gnu packages base) gnu-make)
-                 (substitute* (string-append ,make-dir "/job.c")
+                 (substitute* (string-append ,make-dir "/src/job.c")
                    (("default_shell = .*$")
                     (format #f "default_shell = \"~a\";\n"
                             (which "sh"))))))
@@ -606,7 +606,7 @@ fun.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dlbeer/mspdebug.git")
+                    (url "https://github.com/dlbeer/mspdebug")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm
index f5387f8501..9480f1f226 100644
--- a/gnu/packages/diffoscope.scm
+++ b/gnu/packages/diffoscope.scm
@@ -72,7 +72,7 @@
 (define-public diffoscope
   (package
     (name "diffoscope")
-    (version "148")
+    (version "151")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -81,7 +81,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0siv5z8iqgkzl51dmv69ifqids6hqmiir00yyl1aaqbginrwyhyv"))))
+                "1lv44ngqij9dp3xk9jj95w7an7h03iac6b2ifpq33j5fffswa1sm"))))
     (build-system python-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -132,17 +132,25 @@
                         (("\\['getfacl',")
                          (string-append "['" (which "getfacl") "',")))
                       #t))
+                  (add-after 'build 'build-man-page
+                    (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                      (apply invoke "make" "-C" "doc" make-flags)))
                   (add-before 'check 'writable-test-data
                     (lambda _
-                      ;; tests may need needs write access to tests
-                      ;; directory
+                      ;; Tests may need write access to tests directory.
                       (for-each make-file-writable (find-files "tests"))
                       #t))
                   (add-before 'check 'delete-failing-test
                     (lambda _
-                      ;; this requires /sbin to be on the path
+                      ;; This requires /sbin to be in $PATH.
                       (delete-file "tests/test_tools.py")
-                      #t)))))
+                      #t))
+                  (add-after 'install 'install-man-page
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (man (string-append out "/share/man/man1")))
+                        (install-file "doc/diffoscope.1" man)
+                        #t))))))
     (inputs `(("rpm" ,rpm)              ;for rpm-python
               ("python-file" ,python-file)
               ("python-debian" ,python-debian)
@@ -151,14 +159,15 @@
               ("acl" ,acl)              ;for getfacl
               ("colordiff" ,colordiff)
               ("xxd" ,xxd)))
-    ;; Below are modules used for tests.
-    (native-inputs `(("python-pytest" ,python-pytest)
+    (native-inputs `(("help2man" ,help2man)
+                     ;; Below are modules used for tests.
+                     ("python-pytest" ,python-pytest)
                      ("python-chardet" ,python-chardet)
                      ("python-binwalk" ,python-binwalk)
                      ("python-h5py" ,python-h5py)
                      ("python-pypdf2" ,python-pypdf2)
                      ("python-progressbar33" ,python-progressbar33)
-                     ;; test suite skips tests when tool is missing
+                     ;; The test suite skips tests when these are missing.
                      ,@(match (%current-system)
                          ;; ghc is only available on x86 currently.
                          ((or "x86_64-linux" "i686-linux")
@@ -171,8 +180,7 @@
                          ((or "x86_64-linux")
                           `(("enjarify" ,enjarify)
                             ;; no unversioned openjdk available
-                            ("openjdk:jdk" ,openjdk12 "jdk")
-                            ))
+                            ("openjdk:jdk" ,openjdk12 "jdk")))
                          (_
                           `()))
                      ("abootimg" ,abootimg)
diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scm
index 1a9d58c0d3..78eeb7e286 100644
--- a/gnu/packages/digest.scm
+++ b/gnu/packages/digest.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,12 +20,14 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix git-download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix utils)
+  #:use-module (ice-9 match))
 
 (define-public xxhash
   (package
     (name "xxhash")
-    (version "0.7.3")
+    (version "0.7.4")
     (source
      (origin
        (method git-fetch)
@@ -34,11 +36,16 @@
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bin0jch6lbzl4f8y052a7azfgq2n7iwqihzgqmcccv5vq4vcx5a"))))
+        (base32 "08j7wxshhzpyrnyilfnvhyv5ycm0yv5m7jf6q4kxcd7j4dcbhmpb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
-       (list "CC=gcc"
+       (list ,(string-append "CC=" (cc-for-target))
+             ,(match (or (%current-target-system)
+                         (%current-system))
+                ;; Detect vector instruction set at run time.
+                ((or "i686-linux" "x86_64-linux") "DISPATCH=1")
+                (_ "DISPATCH=0"))
              "XXH_FORCE_MEMORY_ACCESS=1" ; improved performance with GCC
              (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 6b86f6ff76..6d812f560c 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -78,6 +78,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
@@ -96,7 +97,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/IgnorantGuru/udevil.git")
+         (url "https://github.com/IgnorantGuru/udevil")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -432,7 +433,7 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
                            version "/gparted-" version ".tar.gz"))
        (sha256
         (base32 "092rgwjh1825fal6v3yafq2wr0i61hh0a2n0j4296zn0zdx7pzp2"))))
-    (build-system gnu-build-system)
+    (build-system glib-or-gtk-build-system)
     (arguments
       ;; Tests require access to paths outside the build container, such
       ;; as '/dev/disk/by-id'
@@ -486,7 +487,7 @@ systems.  Output format is completely customizable.")
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/AltraMayor/f3.git")
+            (url "https://github.com/AltraMayor/f3")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -524,7 +525,7 @@ a card with a smaller capacity than stated.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dcantrell/pyparted.git")
+             (url "https://github.com/dcantrell/pyparted")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -565,7 +566,7 @@ a card with a smaller capacity than stated.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/markfasheh/duperemove.git")
+             (url "https://github.com/markfasheh/duperemove")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1scz76pvpljvrpfn176125xwaqwyy4pirlm11sc9spb2hyzknw2z"))
@@ -695,7 +696,7 @@ passphrases.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pmem/ndctl.git")
+                    (url "https://github.com/pmem/ndctl")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -846,7 +847,7 @@ LVM D-Bus API).")
 (define-public rmlint
   (package
     (name "rmlint")
-    (version "2.9.0")
+    (version "2.10.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -855,7 +856,7 @@ LVM D-Bus API).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b5cziam14h80xrfb285fmfrzz2rligxcpsq1xsig14xf4l2875i"))))
+                "15xfkcw1bkfyf3z8kl23k3rlv702m0h7ghqxvhniynvlwbgh6j2x"))))
     (build-system scons-build-system)
     (arguments
      `(#:scons ,scons-python2
@@ -918,7 +919,7 @@ on your file system and offers to remove it.  @command{rmlint} can find:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/gokcehan/lf.git")
+                    (url "https://github.com/gokcehan/lf")
                     (commit (string-append "r" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm
index c96b693dc3..ef6e549d09 100644
--- a/gnu/packages/display-managers.scm
+++ b/gnu/packages/display-managers.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 L  p R n  d n <guix@lprndn.info>
+;;; Copyright © 2020 Fredrik Salomonsson <plattfot@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,9 +28,11 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system qt)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages)
@@ -123,6 +126,37 @@ create smooth, animated user interfaces.")
     ;; QML files are MIT licensed and images are CC BY 3.0.
     (license (list license:gpl2+ license:expat license:cc-by3.0))))
 
+(define-public guix-simplyblack-sddm-theme
+  (package
+    (name "guix-simplyblack-sddm-theme")
+    (version "0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/plattfot/guix-simplyblack-sddm")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1fwny6b0xpjs8ad2b16pyxd27gf0sr0nillmhc2h5k0q7dva21vi"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let* ((out (assoc-ref %outputs "out"))
+                (sddm-themes (string-append out "/share/sddm/themes")))
+           (mkdir-p sddm-themes)
+           (copy-recursively (assoc-ref %build-inputs "source")
+                             (string-append sddm-themes "/guix-simplyblack-sddm"))))))
+    (home-page "https://github.com/plattfot/guix-simplyblack-sddm")
+    (synopsis "Guix based theme for SDDM")
+    (description
+     "This package provides a simple theme for SDDM, black background with
+Guix's logo.  Based on Arch linux's archlinux-simplyblack theme.")
+    ;; Theme under cc-by-sa3.0, guix logo under license:cc-by-sa4.0
+    (license (list license:cc-by-sa3.0 license:cc-by-sa4.0))))
+
 (define-public lightdm
   (package
     (name "lightdm")
diff --git a/gnu/packages/distributed.scm b/gnu/packages/distributed.scm
index d861484d22..0e5fe5ef69 100644
--- a/gnu/packages/distributed.scm
+++ b/gnu/packages/distributed.scm
@@ -48,7 +48,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/boinc/boinc.git")
+                    (url "https://github.com/boinc/boinc")
                     (commit (string-append "client_release/"
                                            (version-major+minor version)
                                            "/" version))))
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 0cf414ad41..2370de62f5 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
@@ -32,7 +32,10 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-compression)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sphinx)
@@ -42,13 +45,13 @@
 (define-public python-django
   (package
     (name "python-django")
-    (version "1.11.28")
+    (version "1.11.29")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "Django" version))
               (sha256
                (base32
-                "1ss1jyip7mlbfjn27m0j6wx80s8h4ksg6g5annkgwigp8xgy6g5k"))))
+                "171jsi54fbnxzi2n3l4hkdmmwfnfrwacs180rw59l0bqcvxsw022"))))
     (build-system python-build-system)
     (arguments
      '(#:modules ((srfi srfi-1)
@@ -82,9 +85,6 @@
     ;; TODO: Install extras/django_bash_completion.
     (native-inputs
      `(("tzdata" ,tzdata-for-tests)
-       ;; bcrypt and argon2-cffi are extra requirements not yet in guix
-       ;;("python-argon2-cffi" ,python-argon2-cffi) ; >= 16.1.0
-       ;;("python-bcrypt" ,python-bcrypt) ; not py-bcrypt!
        ;; Remaining packages are test requirements taken from
        ;; tests/requirements/py3.txt
        ("python-docutils" ,python-docutils)
@@ -98,7 +98,9 @@
        ("python-sqlparse" ,python-sqlparse)
        ("python-tblib" ,python-tblib)))
     (propagated-inputs
-     `(("python-pytz" ,python-pytz)))
+     `(("python-argon2-cffi" ,python-argon2-cffi)
+       ("python-bcrypt" ,python-bcrypt)
+       ("python-pytz" ,python-pytz)))
     (home-page "https://www.djangoproject.com/")
     (synopsis "High-level Python Web framework")
     (description
@@ -132,7 +134,7 @@ to the @dfn{don't repeat yourself} (DRY) principle.")
        (method git-fetch)
        ;; Fetch from the git repository, so that the tests can be run.
        (uri (git-reference
-             (url "https://github.com/django-extensions/django-extensions.git")
+             (url "https://github.com/django-extensions/django-extensions")
              (commit version)))
        (file-name (string-append name "-" version))
        (sha256
@@ -191,6 +193,31 @@ with arguments to the field constructor.")
 (define-public python2-django-simple-math-captcha
   (package-with-python2 python-django-simple-math-captcha))
 
+(define-public python-django-classy-tags
+  (package
+    (name "python-django-classy-tags")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-classy-tags" version))
+        (sha256
+         (base32
+          "1cayqddvxd5prhybqi77lif2z4j7mmfmxgc61pq9i82q5gy2asmd"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Test script not distributed with release.
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/divio/django-classy-tags")
+    (synopsis "Class based template tags for Django")
+    (description
+     "@code{django-classy-tags} is an approach at making writing template tags
+in Django easier, shorter and more fun.  It provides an extensible argument
+parser which reduces most of the boiler plate code you usually have to write
+when coding custom template tags.")
+    (license license:bsd-3)))
+
 (define-public python-django-taggit
   (package
     (name "python-django-taggit")
@@ -281,6 +308,54 @@ useful tools for testing Django applications and projects.")
 (define-public python2-pytest-django
   (package-with-python2 python-pytest-django))
 
+(define-public python-django-haystack
+  (package
+    (name "python-django-haystack")
+    (version "2.8.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-haystack" version))
+        (sha256
+         (base32
+          "1302fqsrx8w474xk5cmnmg3hjqfprlxnjg9qlg86arsr4v4vqm4b"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'loosen-verion-restrictions
+           (lambda _
+             (substitute* "setup.py"
+               (("geopy.*") "geopy',\n"))
+             #t))
+         (add-before 'check 'set-gdal-lib-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "GDAL_LIBRARY_PATH"
+                     (string-append (assoc-ref inputs "gdal")
+                                    "/lib"))
+             #t)))
+       #:tests? #f)) ; OSError: libgdal.so.27: cannot open shared object file
+    (propagated-inputs
+     `(("python-django" ,python-django)))
+    (native-inputs
+     `(("gdal" ,gdal)
+       ("python-coverage" ,python-coverage)
+       ("python-dateutil" ,python-dateutil)
+       ("python-geopy" ,python-geopy)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-requests" ,python-requests)
+       ("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-pysolr" ,python-pysolr)
+       ("python-whoosh" ,python-whoosh)))
+    (home-page "http://haystacksearch.org/")
+    (synopsis "Pluggable search for Django")
+    (description "Haystack provides modular search for Django.  It features a
+unified, familiar API that allows you to plug in different search backends
+(such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify
+your code.")
+    (license license:bsd-3)))
+
 (define-public python-django-filter
   (package
     (name "python-django-filter")
@@ -318,36 +393,23 @@ them do this.")
 (define-public python-django-allauth
   (package
     (name "python-django-allauth")
-    (version "0.39.1")
+    (version "0.40.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "django-allauth" version))
        (sha256
         (base32
-         "17l0acpr3cihdndzccjhgv58f9z170v2qwx7w0b8w6235x646i24"))))
+         "12f5gjidcpb7a0d1f601k0c5dcdmb6fg9sfn7xn5j8zfsg29y63a"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         ;; TODO: Tagging the tests requiring the web could be done upstream.
-         (add-before 'check 'skip-test-requiring-network-access
-           (lambda _
-             (substitute* "allauth/socialaccount/providers/openid/tests.py"
-               (("import override_settings") "import tag, override_settings")
-               (("def test_login")
-                "@tag('requires-web')
-    def test_login"))))
          (replace 'check
            (lambda _
-             ;; TODO: investigate why this test fails
-             (delete-file "allauth/socialaccount/providers/cern/tests.py")
              (setenv "DJANGO_SETTINGS_MODULE" "test_settings")
-             (invoke "django-admin"
-                     "test"
-                     "allauth"
-                     "--verbosity=2"
-                     "--exclude-tag=requires-web"))))))
+             (invoke "django-admin" "test" "allauth.tests"
+                     "--pythonpath=."))))))
     (propagated-inputs
      `(("python-openid" ,python-openid)
        ("python-requests" ,python-requests)
@@ -375,7 +437,7 @@ account authentication.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jazzband/django-debug-toolbar.git")
+             (url "https://github.com/jazzband/django-debug-toolbar")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -483,7 +545,7 @@ merging, minifying and compiling CSS and Javascript files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/niwinz/django-jinja.git")
+             (url "https://github.com/niwinz/django-jinja")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -572,6 +634,25 @@ conn_max_age argument to easily enable Django’s connection pool.")
 (define-public python2-dj-database-url
   (package-with-python2 python-dj-database-url))
 
+(define-public python-django-picklefield
+  (package
+    (name "python-django-picklefield")
+    (version "2.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-picklefield" version))
+        (sha256
+         (base32
+          "0imncys5s3vsy2q79nn7k5d670da1xgmcr9gmhn06fry6ibf39b7"))))
+    (build-system python-build-system)
+    (propagated-inputs `(("python-django" ,python-django)))
+    (native-inputs `(("python-tox" ,python-tox)))
+    (home-page "https://github.com/gintas/django-picklefield")
+    (synopsis "Pickled object field for Django")
+    (description "Pickled object field for Django")
+    (license license:expat)))
+
 (define-public python-django-bulk-update
   (package
     (name "python-django-bulk-update")
@@ -794,7 +875,7 @@ support, and optional data-URI image and font embedding.")
              (invoke "redis-server" "--daemonize" "yes")
              (invoke "django-admin.py" "test" "django_rq"
                      "--settings=django_rq.tests.settings"
-                     "--pythonpath="))))))
+                     "--pythonpath=."))))))
     (native-inputs
      `(("python-mock" ,python-mock)
        ("redis" ,redis)))
@@ -812,6 +893,41 @@ settings.py and easily use them in your project.")
 (define-public python2-django-rq
   (package-with-python2 python-django-rq))
 
+(define-public python-django-q
+  (package
+    (name "python-django-q")
+    (version "1.3.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-q" version))
+        (sha256
+         (base32
+          "0ac3rjxv37bn97a62ly8b7qvbv765z6paiinzpwxx83nal2icc42"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (setenv "DJANGO_SETTINGS_MODULE" "django_q.tests.settings")
+             (invoke "django-admin" "test" "django_q.tests"
+                     "--pythonpath=."))))))
+    (propagated-inputs
+     `(("python-arrow" ,python-arrow)
+       ("python-blessed" ,python-blessed)
+       ("python-django" ,python-django)
+       ("python-django-picklefield" ,python-django-picklefield)))
+    (native-inputs
+     `(("python-django-redis" ,python-django-redis)
+       ("python-pytest-django" ,python-pytest-django)))
+    (home-page "https://django-q.readthedocs.io/")
+    (synopsis "Multiprocessing distributed task queue for Django")
+    (description
+     "Django Q is a native Django task queue, scheduler and worker application
+using Python multiprocessing.")
+    (license license:expat)))
+
 (define-public python-django-sortedm2m
   (package
     (name "python-django-sortedm2m")
@@ -965,24 +1081,45 @@ higher quality while welcoming newcomers.")
 (define-public python-django-tagging
   (package
     (name "python-django-tagging")
-    (version "0.4.6")
+    (version "0.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "django-tagging" version))
        (sha256
         (base32
-         "0s7b4v45j783yaxs7rni10k24san0ya77nqz4s7zdf3jhfpk42r1"))))
+         "13afxx30chssclxzd9gqnvwm9qyrdpnlbs6iswdfa18phfj8zmi8"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (setenv "DJANGO_SETTINGS_MODULE" "tagging.tests.settings")
+             (invoke "django-admin" "test" "--pythonpath=."))))))
+    (inputs
+     `(("python-django" ,python-django)))
     (home-page "https://github.com/Fantomas42/django-tagging")
     (synopsis "Generic tagging application for Django")
     (description "This package provides a generic tagging application for
 Django projects, which allows association of a number of tags with any
 @code{Model} instance and makes retrieval of tags simple.")
+    (properties `((python2-variant . ,(delay python2-django-tagging))))
     (license license:bsd-3)))
 
 (define-public python2-django-tagging
-  (package-with-python2 python-django-tagging))
+  (let ((base (package-with-python2
+                (strip-python2-variant python-django-tagging))))
+    (package
+      (inherit base)
+      (version "0.4.6")
+      (source
+        (origin
+          (method url-fetch)
+          (uri (pypi-uri "django-tagging" version))
+          (sha256
+           (base32
+            "0s7b4v45j783yaxs7rni10k24san0ya77nqz4s7zdf3jhfpk42r1")))))))
 
 (define-public python-djangorestframework
   (package
@@ -1008,6 +1145,35 @@ Django projects, which allows association of a number of tags with any
 provides features like a web browseable API and authentication policies.")
     (license license:bsd-2)))
 
+(define-public python-django-sekizai
+  (package
+    (name "python-django-sekizai")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-sekizai" version))
+        (sha256
+         (base32
+          "1nc4sv109valdn6azmgm2j01k7khxy2wnji84z63x7fxsikfdxp2"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Tests not included with release.
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-django-classy-tags" ,python-django-classy-tags)
+       ("python-six" ,python-six)))
+    (home-page "https://github.com/divio/django-sekizai")
+    (synopsis "Template blocks for Django projects")
+    (description "Sekizai means blocks in Japanese, and thats what this app
+provides.  A fresh look at blocks.  With @code{django-sekizai} you can define
+placeholders where your blocks get rendered and at different places in your
+templates append to those blocks.  This is especially useful for css and
+javascript.  Your subtemplates can now define css and javscript files to be
+included, and the css will be nicely put at the top and the javascript to the
+bottom, just like you should.  Also sekizai will ignore any duplicate content in
+a single block.")
+    (license license:bsd-3)))
+
 (define-public python-django-crispy-forms
   (package
     (name "python-django-crispy-forms")
@@ -1033,6 +1199,51 @@ provides features like a web browseable API and authentication policies.")
 forms using your favorite CSS framework, without writing template code.")
     (license license:expat)))
 
+(define-public python-django-compressor
+  (package
+    (name "python-django-compressor")
+    (version "2.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django_compressor" version))
+        (sha256
+         (base32
+          "0kx7bclfa0sxlsz6ka70zr9ra00lks0hmv1kc99wbanx6xhirvfj"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+               (begin
+                 (setenv "DJANGO_SETTINGS_MODULE" "compressor.test_settings")
+                 (invoke "django-admin" "test"
+                         "--pythonpath=."))
+               #t))))
+       ;; Tests fail with beautifulsoup 4.9+
+       ;; https://github.com/django-compressor/django-compressor/issues/998
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-django-appconf" ,python-django-appconf)
+       ("python-rcssmin" ,python-rcssmin)
+       ("python-rjsmin" ,python-rjsmin)))
+    (native-inputs
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-brotli" ,python-brotli)
+       ("python-csscompressor" ,python-csscompressor)
+       ("python-django-sekizai" ,python-django-sekizai)
+       ("python-mock" ,python-mock)))
+    (home-page "https://django-compressor.readthedocs.io/en/latest/")
+    (synopsis
+     "Compress linked and inline JavaScript or CSS into single cached files")
+    (description
+     "Django Compressor combines and compresses linked and inline Javascript or
+CSS in a Django templates into cacheable static files by using the compress
+template tag.")
+    (license license:expat)))
+
 (define-public python-django-override-storage
   (package
     (name "python-django-override-storage")
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 5db012c680..6cdb2efd14 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -88,7 +88,7 @@ and freshness without requiring additional information from the user.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ldc-developers/ldc.git")
+               (url "https://github.com/ldc-developers/ldc")
                (commit (string-append "v" version))))
          (file-name (git-file-name name version))
          (sha256
@@ -156,7 +156,7 @@ and freshness without requiring additional information from the user.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/phobos.git")
+                   (url "https://github.com/ldc-developers/phobos")
                    (commit (string-append "ldc-v" version))))
              (file-name (git-file-name "phobos" version))
              (sha256
@@ -166,7 +166,7 @@ and freshness without requiring additional information from the user.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/druntime.git")
+                   (url "https://github.com/ldc-developers/druntime")
                    (commit (string-append "ldc-v" version))))
              (file-name (git-file-name "druntime" version))
              (sha256
@@ -175,7 +175,7 @@ and freshness without requiring additional information from the user.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (url "https://github.com/ldc-developers/dmd-testsuite")
                    (commit (string-append "ldc-v" version))))
              (file-name (git-file-name "dmd-testsuite" version))
              (sha256
@@ -206,7 +206,7 @@ bootstrapping more recent compilers written in D.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ldc-developers/ldc.git")
+               (url "https://github.com/ldc-developers/ldc")
                (commit (string-append "v" version))))
          (file-name (git-file-name name version))
          (sha256
@@ -273,7 +273,7 @@ bootstrapping more recent compilers written in D.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/phobos.git")
+                   (url "https://github.com/ldc-developers/phobos")
                    (commit (string-append "ldc-v" older-version))))
              (file-name (git-file-name "phobos" older-version))
              (sha256
@@ -292,7 +292,7 @@ bootstrapping more recent compilers written in D.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/druntime.git")
+                   (url "https://github.com/ldc-developers/druntime")
                    (commit (string-append "ldc-v" older-version))))
              (file-name (git-file-name "druntime" older-version))
              (sha256
@@ -301,7 +301,7 @@ bootstrapping more recent compilers written in D.")
           ,(origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/ldc-developers/dmd-testsuite.git")
+                   (url "https://github.com/ldc-developers/dmd-testsuite")
                    (commit (string-append "ldc-v" older-version))))
              (file-name (git-file-name "dmd-testsuite" older-version))
              (sha256
@@ -315,7 +315,7 @@ bootstrapping more recent compilers written in D.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dlang/dub.git")
+             (url "https://github.com/dlang/dub")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index e4cc4a111b..8c4369dbd8 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -119,7 +119,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
 (define-public isc-bind
   (package
     (name "bind")
-    (version "9.16.4")
+    (version "9.16.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -127,7 +127,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
                     "/bind-" version ".tar.xz"))
               (sha256
                (base32
-                "02ip1xvmnqla3p5k2rmfrksrw4q9iqbrhyg3mamvrj5a7n6hh8km"))))
+                "0xf07mmd0vi91jd15z8d3hhjva8v27l4ip4l8yzah4gg3zjv6y33"))))
     (build-system gnu-build-system)
     (outputs `("out" "utils"))
     (inputs
@@ -177,14 +177,28 @@ and BOOTP/TFTP for network booting of diskless machines.")
              (with-directory-excursion "fuzz"
                (invoke "make" "check"))
              #t)))))
-    (synopsis "An implementation of the Domain Name System")
+    (synopsis "Domain Name System (DNS) implementation")
     (description "BIND is an implementation of the @dfn{Domain Name System}
 (DNS) protocols for the Internet.  It is a reference implementation of those
 protocols, but it is also production-grade software, suitable for use in
-high-volume and high-reliability applications. The name BIND stands for
-\"Berkeley Internet Name Domain\", because the software originated in the early
-1980s at the University of California at Berkeley.")
-    (home-page "https://www.isc.org/downloads/bind")
+high-volume and high-reliability applications.  The name BIND stands for
+\"Berkeley Internet Name Domain\", because the software originated in the
+early 1980s at the University of California at Berkeley.  The @code{utils}
+output of this package contains the following DNS name servers related command
+line utilities:
+@table @code
+@item delv
+DNS lookup and validation utility
+@item dig
+DNS lookup utility
+@item host
+DNS lookup utility
+@item nslookup
+Internet name servers interactive query utility
+@item nsupdate
+Dynamic DNS update utility
+@end table")
+    (home-page "https://www.isc.org/bind/")
     (license (list license:mpl2.0))))
 
 (define-public dnscrypt-proxy
@@ -321,14 +335,14 @@ asynchronous fashion.")
 (define-public nsd
   (package
     (name "nsd")
-    (version "4.2.4")
+    (version "4.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0z7j3vwqqj0hh8n5irb2yqwzl45k4sn2wczbq1b1lqv5cxv6vgcy"))))
+        (base32 "0ac3mbn5z4nc18782m9aswdpi2m9f4665vidw0ciyigdh0pywp2v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -723,8 +737,9 @@ synthesis, and on-the-fly re-configuration.")
        ("libuv" ,libuv)
        ("lmdb" ,lmdb)
        ("luajit" ,luajit)
-       ;; TODO: Add optional lua modules: basexx, cqueues and psl.
+       ;; TODO: Add optional lua modules: basexx and psl.
        ("lua-bitop" ,lua5.1-bitop)
+       ("lua-cqueues" ,lua5.1-cqueues)
        ("lua-filesystem" ,lua5.1-filesystem)
        ("lua-sec" ,lua5.1-sec)
        ("lua-socket" ,lua5.1-socket)))
@@ -747,7 +762,7 @@ LuaJIT, both a resolver library and a daemon.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ddclient/ddclient.git")
+             (url "https://github.com/ddclient/ddclient")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -914,7 +929,7 @@ local networks.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/publicsuffix/list.git")
+                      (url "https://github.com/publicsuffix/list")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -951,7 +966,7 @@ known public suffixes.")
 (define-public maradns
   (package
     (name "maradns")
-    (version "3.5.0004")
+    (version "3.5.0007")
     (source
      (origin
        (method url-fetch)
@@ -959,18 +974,13 @@ known public suffixes.")
                            (version-major+minor version) "/"
                            version "/maradns-" version ".tar.xz"))
        (sha256
-        (base32
-         "1zv0i6m4m05ay5zlhwq1h88hgjq2d81cjanpnb3gyhr0xhmjwk6a"))))
+        (base32 "0bc19xylg4whww9qaj5i4izwxcrh0c0ja7l1pfcn2la02hlvg1a6"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; need to be root to run tests
+     `(#:tests? #f                      ; need to be root to run tests
        #:make-flags
        (list
-        (string-append "CC="
-                       (if ,(%current-target-system)
-                           (string-append (assoc-ref %build-inputs "cross-gcc")
-                                          "/bin/" ,(%current-target-system) "-gcc")
-                           "gcc"))
+        ,(string-append "CC=" (cc-for-target))
         (string-append "PREFIX=" %output)
         (string-append "RPM_BUILD_ROOT=" %output))
        #:phases
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index cdde807046..4beba12c11 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,7 +48,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization))
 
-(define %docker-version "19.03.11")
+(define %docker-version "19.03.12")
 
 (define-public python-docker-py
   (package
@@ -65,7 +66,6 @@
     (arguments '(#:tests? #f))
     (inputs
      `(("python-requests" ,python-requests-2.20)
-       ("python-ipaddress" ,python-ipaddress)
        ("python-six" ,python-six)
        ("python-urllib3" ,python-urllib3-1.24)
        ("python-websocket-client" ,python-websocket-client)))
@@ -178,7 +178,7 @@ Python without keeping their credentials in a Docker configuration file.")
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/containerd/containerd.git")
+            (url "https://github.com/containerd/containerd")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -256,7 +256,7 @@ network attachments.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/docker/libnetwork.git")
+                      (url "https://github.com/docker/libnetwork")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -310,11 +310,11 @@ built-in registry server of Docker.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/docker/engine.git")
+             (url "https://github.com/docker/engine")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1pmbggxbazipl24hxiaccbj32379zv79xba76l78v5131ihx922h"))
+        (base32 "1dj6llfcgcbpq9q9j6b4wb0anbn1g5wzm8ikq2lyhg54i3154m93"))
        (patches
         (search-patches "docker-fix-tests.patch"))))
     (build-system gnu-build-system)
@@ -390,6 +390,17 @@ built-in registry server of Docker.")
              (substitute* "pkg/archive/archive.go"
                (("string\\{\"xz")
                 (string-append "string{\"" (assoc-ref inputs "xz") "/bin/xz")))
+             ;; TODO: Remove when Docker proper uses v1.14.x to build
+             (substitute* "registry/resumable/resumablerequestreader_test.go"
+               (("I%27m%20not%20an%20url" all)
+                (string-append "\"" all "\"")))
+             ;; TODO: Remove when Docker proper uses v1.14.x to build
+             (substitute* "vendor/gotest.tools/x/subtest/context.go"
+               (("func \\(tc \\*testcase\\) Cleanup\\(" all)
+                (string-append all "func()"))
+               (("tc\\.Cleanup\\(" all)
+                (string-append all "nil")))
+
              (let ((source-files (filter (lambda (name)
                                            (not (string-contains name "test")))
                                          (find-files "." "\\.go$"))))
@@ -488,6 +499,7 @@ built-in registry server of Docker.")
              ;; Timeouts after 5 min.
              (delete-file "plugin/manager_linux_test.go")
              ;; Operation not permitted.
+             (delete-file "daemon/graphdriver/aufs/aufs_test.go")
              (delete-file "daemon/graphdriver/btrfs/btrfs_test.go")
              (delete-file "daemon/graphdriver/overlay/overlay_test.go")
              (delete-file "daemon/graphdriver/overlay2/overlay_test.go")
@@ -588,11 +600,11 @@ provisioning etc.")
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/docker/cli.git")
+            (url "https://github.com/docker/cli")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "1y9ymv70r1hndblr64h19q34arxl2f3dqqi2qcrai5zfimcml6lr"))))
+       (base32 "1bynmnaykhh1m42v6bxparlpm9kajpqsvlrlwgz1b9ivcklf5ik6"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/docker/cli"
@@ -658,7 +670,7 @@ provisioning etc.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/savoirfairelinux/cqfd.git")
+                    (url "https://github.com/savoirfairelinux/cqfd")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -696,7 +708,7 @@ defined in a per-project configuration file.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/krallin/tini.git")
+                    (url "https://github.com/krallin/tini")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index a3a07f56db..ac3fa7b78c 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -127,7 +127,7 @@ markup) can be customized and extended by the user.")
 (define-public asciidoc-py3
   (package (inherit asciidoc)
     (name "asciidoc-py3")
-    (version "9.0.0rc1")
+    (version "9.0.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -136,7 +136,7 @@ markup) can be customized and extended by the user.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1v815dgab62970m9cr2crwbh4kvlzk6pv3hk4bzv6gfa4lbwfkfl"))))
+                "1xpws5lgzaqwgbc7sq6bp8adjxy8qb4qb9nj4vvpxamjgx3pny54"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)))
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index cba061f195..99e7b669b4 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -274,16 +274,16 @@ easy.")
 (define-public snap
   (package
     (name "snap")
-    (version "5.4.5")
+    (version "6.0.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jmoenig/Snap.git")
+             (url "https://github.com/jmoenig/Snap")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1z6dbcsgvxxs40p23qysfsk4vzpg8jlrr5pqfnjf8q3kpz1xvzxf"))))
+        (base32 "1j5hcnms12hpnl2ba7haf00l08rkpb5wpfsgax07p838q5dc7cam"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
@@ -612,14 +612,14 @@ Portuguese, Spanish and Italian.")
 (define-public fet
   (package
     (name "fet")
-    (version "5.45.0")
+    (version "5.45.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.lalescu.ro/liviu/fet/download/"
                            "fet-" version ".tar.bz2"))
        (sha256
-        (base32 "04jns6wc20rz6cp410znsllknhp4zlf4rn8wgv712855nffs42c6"))))
+        (base32 "1pg47jk6fw46fr7m32l1ypm1zyjfz1ik5f333ynqqr705f1c0ij5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1000,7 +1000,8 @@ machine, and more.")
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/exercism/cli/exercism"
-       #:unpack-path "github.com/exercism/cli"))
+       #:unpack-path "github.com/exercism/cli"
+       #:install-source? #f))
     (inputs
      `(("github.com/blang/semver" ,go-github-com-blang-semver)
        ("github.com/spf13/cobra" ,go-github-com-spf13-cobra)
diff --git a/gnu/packages/efi.scm b/gnu/packages/efi.scm
index bc27a7a504..12cadd6036 100644
--- a/gnu/packages/efi.scm
+++ b/gnu/packages/efi.scm
@@ -187,7 +187,7 @@ and EFI variable management.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mfleming/efilinux.git")
+                    (url "https://github.com/mfleming/efilinux")
                     (commit (string-append "efilinux-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index 0613acff27..8a2b6b302c 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -33,16 +33,16 @@
 (define-public elixir
   (package
     (name "elixir")
-    (version "1.10.3")
+    (version "1.10.4")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/elixir-lang/elixir.git")
+             (url "https://github.com/elixir-lang/elixir")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "18bqqqzvhr1zj491wc3d36a310mg1wcs12npp70zfmgqrc60q65a"))
+        (base32 "16j4rmm3ix088fvxhvyjqf1hnfg7wiwa87gml3b2mrwirdycbinv"))
        (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 866a5c8ced..d997360c8c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -75,6 +75,9 @@
 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
 ;;; Copyright © 2020 Fredrik Salomonsson <plattfot@gmail.com>
 ;;; Copyright © 2020 Ryan Desfosses <rdes@protonmail.com>
+;;; Copyright © 2020 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 Peng Mei Yu <i@pengmeiyu.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -120,6 +123,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages haskell-apps)
+  #:use-module (gnu packages ibus)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -141,6 +145,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages w3m)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
@@ -154,6 +159,7 @@
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pdf)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages rust-apps)
   #:use-module (gnu packages scheme)
   #:use-module (gnu packages speech)
@@ -175,6 +181,7 @@
   #:use-module (gnu packages wordnet)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages uml)
+  #:use-module (gnu packages finance)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match))
@@ -233,7 +240,7 @@ metadata.")
       (source
        (origin
          (uri (git-reference
-               (url "https://github.com/xiaohanyu/ac-geiser.git")
+               (url "https://github.com/xiaohanyu/ac-geiser")
                (commit commit)))
          (method git-fetch)
          (sha256
@@ -253,14 +260,14 @@ using geiser.")
 (define-public emacs-hyperbole
   (package
     (name "emacs-hyperbole")
-    (version "7.0.6")
+    (version "7.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "hyperbole-" version ".tar"))
        (sha256
-        (base32 "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab"))
+        (base32 "1bspmqnbniwr9385wh823dsr5fgch5qnlkf45s4vi0nvg8jdccp1"))
        (patches
         (search-patches "emacs-hyperbole-toggle-messaging.patch"))))
     (build-system emacs-build-system)
@@ -377,7 +384,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magit/with-editor.git")
+             (url "https://github.com/magit/with-editor")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -403,7 +410,7 @@ on stdout instead of using a socket as the Emacsclient does.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/magit/libegit2.git")
+                      (url "https://github.com/magit/libegit2")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -472,19 +479,20 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
 
 (define-public emacs-magit
   ;; There hasn't been an official release since 2018-11-16.
-  (let ((commit "0746bf1bacfe896d3917ccc19c7fb9d95c18b1e9"))
+  (let ((commit "7f486d47fe7042edba8d9a855a4c2c301a30bc6b")
+        (revision "6"))
     (package
       (name "emacs-magit")
-      (version (git-version "2.90.1" "5" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/magit/magit.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1sgdygr81s2qxq2ahf998hl89qrb0r2wbgnsiz3hdda1431p0wzg"))))
+      (version (git-version "2.90.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/magit/magit")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "05kyc5y5wa1p3h8j7mbgvfc4zcj998zi26lnnmksj9wnvahzxfms"))))
       (build-system emacs-build-system)
       (arguments
        `(#:emacs ,emacs-no-x            ;module support is required
@@ -549,11 +557,12 @@ libgit2 bindings for Emacs, intended to boost the performance of Magit.")
          ("emacs-with-editor" ,emacs-with-editor)))
       (home-page "https://magit.vc/")
       (synopsis "Emacs interface for the Git version control system")
-      (description "With Magit, you can inspect and modify your Git
-repositories with Emacs.  You can review and commit the changes you have made
-to the tracked files, for example, and you can browse the history of past
-changes.  There is support for cherry picking, reverting, merging, rebasing,
-and other common Git operations.")
+      (description
+       "With Magit, you can inspect and modify your Git repositories
+with Emacs.  You can review and commit the changes you have made to
+the tracked files, for example, and you can browse the history of past
+changes.  There is support for cherry picking, reverting, merging,
+rebasing, and other common Git operations.")
       (license license:gpl3+))))
 
 (define-public emacs-magit-svn
@@ -590,7 +599,7 @@ support for Git-SVN.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magit/magit-popup.git")
+             (url "https://github.com/magit/magit-popup")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -624,7 +633,7 @@ process, passing on the arguments as command line arguments.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/magit/magit-annex.git")
+                      (url "https://github.com/magit/magit-annex")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -647,7 +656,7 @@ process, passing on the arguments as command line arguments.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/tarsius/minions.git")
+                    (url "https://github.com/tarsius/minions")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -679,7 +688,7 @@ Alternatively the menu can be bound globally, for example:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/volrath/treepy.el.git")
+                    (url "https://github.com/volrath/treepy.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -707,7 +716,7 @@ clojure.walk and clojure.zip respectively.")
                        #t))
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vermiculus/graphql.el.git")
+                    (url "https://github.com/vermiculus/graphql.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -770,7 +779,7 @@ handful of functions that are not resource-specific.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mrkkrp/typit.git")
+               (url "https://github.com/mrkkrp/typit")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -807,7 +816,7 @@ until time is up.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/emacs-pe/scribble-mode.git")
+                      (url "https://github.com/emacs-pe/scribble-mode")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1070,7 +1079,7 @@ provides an optional IDE-like error list.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/federicotdn/flymake-shellcheck.git")
+               (url "https://github.com/federicotdn/flymake-shellcheck")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1091,7 +1100,7 @@ scripts.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/plexus/a.el.git")
+                    (url "https://github.com/plexus/a.el")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1138,7 +1147,7 @@ directly.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rolandwalker/anaphora.git")
+             (url "https://github.com/rolandwalker/anaphora")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1244,7 +1253,7 @@ terminals.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/purcell/reformatter.el.git")
+             (url "https://github.com/purcell/reformatter.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1291,7 +1300,7 @@ regexp-like arguments to @code{skip-chars-forward} and
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Malabarba/elisp-bug-hunter.git")
+               (url "https://github.com/Malabarba/elisp-bug-hunter")
                (commit commit)))
          (file-name (git-file-name name commit))
          (sha256
@@ -1453,7 +1462,7 @@ or unexpected behavior inside an elisp configuration file (typically
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/m00natic/eww-lnum.git")
+                    (url "https://github.com/m00natic/eww-lnum")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1591,7 +1600,7 @@ within a specified width.  It is useful for displaying long track titles.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/abo-abo/ace-link.git")
+             (url "https://github.com/abo-abo/ace-link")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1619,7 +1628,7 @@ letter to each link using avy.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ncaq/auto-sudoedit.git")
+             (url "https://github.com/ncaq/auto-sudoedit")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1660,6 +1669,31 @@ like.  It can be linked with various Emacs mail clients (Message and Mail
 mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
     (license license:gpl3+)))
 
+(define-public emacs-bluetooth
+  (package
+    (name "emacs-bluetooth")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "bluetooth-" version ".el"))
+       (sha256
+        (base32 "1vp2vpyq0ybjni35ics1mg1kiwgvc7x12dlmvygy78sqp52sfkcv"))))
+    (build-system emacs-build-system)
+    (inputs
+     `(("bluez" ,bluez)))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)))
+    (home-page "https://gitlab.com/rstocker/emacs-bluetooth")
+    (synopsis "Manage Bluetooth devices using Emacs")
+    (description
+     "This package implements basic Bluetooth management functionality, such
+as connecting and disconnecting devices, setting properties and aliases,
+putting the adapter in discovery mode and controlling its power supply.  It
+also includes a pairing agent.")
+    (license license:gpl3+)))
+
 (define-public emacs-aggressive-indent
   (package
     (name "emacs-aggressive-indent")
@@ -1688,7 +1722,7 @@ than @code{electric-indent-mode}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/raxod502/ctrlf.git")
+             (url "https://github.com/raxod502/ctrlf")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1772,7 +1806,7 @@ links.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Wilfred/ag.el.git")
+                    (url "https://github.com/Wilfred/ag.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1835,14 +1869,14 @@ as a library for other Emacs packages.")
 (define-public emacs-auctex
   (package
     (name "emacs-auctex")
-    (version "12.2.3")
+    (version "12.2.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "auctex-" version ".tar"))
        (sha256
-        (base32 "1rbn6pghkll5apjv1fyn82v523fch9l5ksi5lnh439nq460wx1yf"))))
+        (base32 "1yz2h692mr35zgqwlxdq8rzv8n0jixhpaqmbiki00hlysm4zh9py"))))
     (build-system emacs-build-system)
     ;; We use 'emacs' because AUCTeX requires dbus at compile time
     ;; ('emacs-minimal' does not provide dbus).
@@ -1883,7 +1917,7 @@ or XEmacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sebastiansturm/autothemer.git")
+             (url "https://github.com/sebastiansturm/autothemer")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1943,7 +1977,7 @@ searches.  Unlike code@{emacs-wiki.el}, it can be combined with any format.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joodland/bm.git")
+             (url "https://github.com/joodland/bm")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1963,7 +1997,7 @@ the ability to jump forward and backward to the next bookmark.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kiwanami/emacs-calfw.git")
+             (url "https://github.com/kiwanami/emacs-calfw")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2039,7 +2073,7 @@ Its features are:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wbolster/emacs-direnv.git")
+             (url "https://github.com/wbolster/emacs-direnv")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2091,7 +2125,7 @@ that the binary uses instead of the actual binary contents.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wasamasa/form-feed.git")
+             (url "https://github.com/wasamasa/form-feed")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2170,7 +2204,7 @@ current match, total matches and exit status.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dominikh/go-mode.el.git")
+                    (url "https://github.com/dominikh/go-mode.el")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2198,7 +2232,7 @@ written in the Go programming language.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jd/google-maps.el.git")
+                    (url "https://github.com/jd/google-maps.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2219,7 +2253,7 @@ Maps directly inside Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ppareit/graphviz-dot-mode.git")
+             (url "https://github.com/ppareit/graphviz-dot-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2310,7 +2344,7 @@ a single buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mrkkrp/mmt.git")
+             (url "https://github.com/mrkkrp/mmt")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2329,7 +2363,7 @@ Lisp developers who want to write macros with convenience.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/politza/tablist.git")
+                    (url "https://github.com/politza/tablist")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2470,7 +2504,7 @@ and stored in memory.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/magnars/dash.el.git")
+                    (url "https://github.com/magnars/dash.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2533,7 +2567,7 @@ type, for example: packages, buffers, files, etc.")
      `(("pkg-config" ,pkg-config)
        ("emacs" ,emacs-minimal)))
     (inputs
-     `(("guile" ,guile-3.0)
+     `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
        ("guix" ,guix)))
     (propagated-inputs
      `(("geiser" ,emacs-geiser)
@@ -2585,7 +2619,7 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode.git")
+             (url "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2611,7 +2645,7 @@ work with Emacs 24 and 25.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/extemporelang/extempore-emacs-mode.git")
+               (url "https://github.com/extemporelang/extempore-emacs-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2637,7 +2671,7 @@ running Extempore process, and more.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jmorag/kakoune.el.git")
+               (url "https://github.com/jmorag/kakoune.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2682,7 +2716,7 @@ a command.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rnkn/olivetti.git")
+                    (url "https://github.com/rnkn/olivetti")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2723,7 +2757,7 @@ allows easily move between them.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magnars/s.el.git")
+             (url "https://github.com/magnars/s.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2747,7 +2781,7 @@ strings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/zk-phi/symon.git")
+             (url "https://github.com/zk-phi/symon")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2796,7 +2830,7 @@ Stack Overflow, Super User, and other StackExchange sites.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dryman/toml-mode.el.git")
+               (url "https://github.com/dryman/toml-mode.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2840,7 +2874,7 @@ Emacs.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rejeep/f.el.git")
+                    (url "https://github.com/rejeep/f.el")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2886,7 +2920,7 @@ using the Fountain plain text markup format.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/nschum/fringe-helper.el.git")
+               (url "https://github.com/nschum/fringe-helper.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2912,7 +2946,7 @@ representation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-git-gutter.git")
+             (url "https://github.com/syohex/emacs-git-gutter")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2940,7 +2974,7 @@ display and behaviour is easily customisable.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/syohex/git-gutter-fringe.git")
+               (url "https://github.com/syohex/git-gutter-fringe")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2964,7 +2998,7 @@ window.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sshaw/git-link.git")
+             (url "https://github.com/sshaw/git-link")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2989,7 +3023,7 @@ the URL for a commit.  URLs are added to the kill ring.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/raxod502/apheleia.git")
+             (url "https://github.com/raxod502/apheleia")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3066,7 +3100,7 @@ This package also includes relevant snippets for yasnippet.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rejeep/el-mock.el.git")
+             (url "https://github.com/rejeep/el-mock.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3088,7 +3122,7 @@ Expectations, but it can be used in other contexts.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ecukes/espuds.git")
+             (url "https://github.com/ecukes/espuds")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3115,7 +3149,7 @@ definitions for testing with the Ecukes framework.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alvinfrancis/spark.git")
+               (url "https://github.com/alvinfrancis/spark")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3137,7 +3171,7 @@ port of @code{cl-spark} to Emacs Lisp.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dakrone/es-mode.git")
+             (url "https://github.com/dakrone/es-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3167,7 +3201,7 @@ mode, which displays information about Elasticsearch clusters.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magnars/expand-region.el.git")
+             (url "https://github.com/magnars/expand-region.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3189,7 +3223,7 @@ keep pressing the key until it selects what you want.  There's also
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alpaker/Fill-Column-Indicator.git")
+             (url "https://github.com/alpaker/Fill-Column-Indicator")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3210,7 +3244,7 @@ column by drawing a thin line down the length of the editing window.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
+             (url "https://github.com/ZungBang/emacs-grep-a-lot")
              (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
        (file-name (git-file-name name version))
        (sha256
@@ -3222,6 +3256,26 @@ 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-fd
+  (package
+    (name "emacs-fd")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/yqrashawn/fd-dired")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fas0fpvym2lyzybwm44gly9jz6a2fpp72yxnwfbqqjkfgk9910y"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/yqrashawn/fd-dired")
+    (synopsis "Dired-mode interface for fd result")
+    (description "This package provides a dired-mode interface for fd's
+result.")
+    (license license:gpl3+)))
+
 (define-public emacs-rg
   (package
     (name "emacs-rg")
@@ -3230,7 +3284,7 @@ column by drawing a thin line down the length of the editing window.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dajva/rg.el.git")
+             (url "https://github.com/dajva/rg.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3267,7 +3321,7 @@ then refine or modify the search results.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nonsequitur/inf-ruby.git")
+             (url "https://github.com/nonsequitur/inf-ruby")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3312,7 +3366,7 @@ IRC bouncer with ERC.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/drewbarbs/erc-status-sidebar.git")
+               (url "https://github.com/drewbarbs/erc-status-sidebar")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3336,7 +3390,7 @@ ERC, an Emacs client for IRC (Internet Relay Chat).  It relies on the
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cask/shut-up.git")
+             (url "https://github.com/cask/shut-up")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3356,7 +3410,7 @@ Emacs shell script.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sviridov/undercover.el.git")
+             (url "https://github.com/sviridov/undercover.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3375,26 +3429,25 @@ Lisp.")
 (define-public emacs-paren-face
   (package
     (name "emacs-paren-face")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tarsius/paren-face.git")
+             (url "https://github.com/tarsius/paren-face")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "04vkg8fhdn8x02dydxbwpizh2yn3sbmn9432v770vbbq6b62k2lx"))))
+        (base32 "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/paren-face")
-    (synopsis "Face for parentheses in lisp modes")
+    (synopsis "Face for parentheses in Lisp modes")
     (description
      "This library defines a face named @code{parenthesis} used just for
 parentheses.  The intended purpose of this face is to make parentheses less
 visible in Lisp code by dimming them.  Lispers probably don't need to be
 constantly made aware of the existence of the parentheses.  Dimming them might
-be even more useful for people new to lisp who have not yet learned to
+be even more useful for people new to Lisp who have not yet learned to
 subconsciously blend out the parentheses.")
     (license license:gpl3+)))
 
@@ -3406,7 +3459,7 @@ subconsciously blend out the parentheses.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/purcell/page-break-lines.git")
+             (url "https://github.com/purcell/page-break-lines")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3427,7 +3480,7 @@ as horizontal rules.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/skeeto/emacs-web-server.git")
+             (url "https://github.com/skeeto/emacs-web-server")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3448,7 +3501,7 @@ serve files and directory listings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/skeeto/skewer-mode.git")
+             (url "https://github.com/skeeto/skewer-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3475,7 +3528,7 @@ in Lisp modes.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Fuco1/litable.git")
+                      (url "https://github.com/Fuco1/litable")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3489,6 +3542,34 @@ in Lisp modes.")
       (description "This package provides dynamic evaluation in Emacs.")
       (license license:gpl3+))))
 
+(define-public emacs-literate-calc-mode
+  (let ((commit "e855bd718fa7d0d70b8f43264e10664369dd3a37")
+        (revision "0"))
+    (package
+      (name "emacs-literate-calc-mode")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sulami/literate-calc-mode.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0mk4cig8g8ibz97mvyan79fkypyanh7r0h7h20ibafq09nb0mw01"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/sulami/literate-calc-mode.el")
+      (synopsis "Literate programming for Emacs Calc")
+      (description
+       "This library provides literate programming for Calc.  There is both
+a major and a minor mode.  The major mode does some basic syntax highlighting,
+while the minor mode only evaluates all Calc statements while typing.  In
+particular, the minor mode works quite well with Org or Markdown modes, or
+other markup language major modes.")
+      (license license:gpl3+))))
+
 (define-public emacs-string-inflection
   (package
     (name "emacs-string-inflection")
@@ -3531,7 +3612,7 @@ naming style of a symbol.  It supports different naming conventions such as:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sabof/stripe-buffer.git")
+             (url "https://github.com/sabof/stripe-buffer")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3544,6 +3625,31 @@ naming style of a symbol.  It supports different naming conventions such as:
 tables.")
     (license license:gpl2+)))
 
+(define-public emacs-org-beautify-theme
+  ;; Latest release (0.4) is not tagged, use commit hash.
+  (let ((commit "df6a1114fda313e1689363e196c8284fbe2a2738")
+        (revision "0"))
+    (package
+      (name "emacs-org-beautify-theme")
+      (version "0.4")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jonnay/org-beautify-theme")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1lkz7736swimad12khwbbqc4gxjydgr1k45p4mx03s25pv1w920y"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/jonnay/org-beautify-theme")
+      (synopsis "Theme to make Org mode look more beautiful")
+      (description
+       "The theme adds padding between headings, increases the size of titles,
+strike through completed TODO headings, changes Org blocks, changes Org check
+boxes, and more.")
+      (license license:gpl3+))))
+
 (define-public emacs-org-rich-yank
   (package
     (name "emacs-org-rich-yank")
@@ -3552,7 +3658,7 @@ tables.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/unhammer/org-rich-yank.git")
+             (url "https://github.com/unhammer/org-rich-yank")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3567,6 +3673,28 @@ tables.")
 been copied from an Emacs major mode.")
     (license license:gpl2+)))
 
+(define-public emacs-ob-erlang
+  (let ((revision "1")
+        (commit "f1a8c665b8f7d0ab32267a9961de8eed872e6333"))
+    (package
+      (name "emacs-ob-erlang")
+      (version (git-version "20180827" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/xfwduke/ob-erlang")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0b5zajqiy6955yvlqwy92prrqy89lqchsv4ss2ylws3p4s14rhij"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/xfwduke/ob-erlang/")
+      (synopsis "Org-babel support for Erlang")
+      (description "This package adds support for working with Erlang code
+blocks with @code{org-babel} in @code{org-mode}.")
+      (license license:gpl3+))))
+
 (define-public emacs-ob-restclient
   (let ((commit "53376667eeddb1388fd6c6976f3222e7c8adcd46"))
     (package
@@ -3576,7 +3704,7 @@ been copied from an Emacs major mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alf/ob-restclient.el.git")
+               (url "https://github.com/alf/ob-restclient.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3599,7 +3727,7 @@ been copied from an Emacs major mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alphapapa/org-now.git")
+               (url "https://github.com/alphapapa/org-now")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3624,7 +3752,7 @@ their original location with another.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Malabarba/rich-minority.git")
+             (url "https://github.com/Malabarba/rich-minority")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3646,7 +3774,7 @@ mode-line.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dgutov/robe.git")
+             (url "https://github.com/dgutov/robe")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3675,7 +3803,7 @@ method and constant name completion.")
                 (method git-fetch)
                 (uri (git-reference
                       ;; A better maintained fork of robot-mode.
-                      (url "https://github.com/jvalkeejarvi/robot-mode.git")
+                      (url "https://github.com/jvalkeejarvi/robot-mode")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3700,7 +3828,7 @@ completing keywords and smart indentation.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/pezra/rspec-mode.git")
+               (url "https://github.com/pezra/rspec-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3729,7 +3857,7 @@ snippets for yasnippet.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Malabarba/smart-mode-line.git")
+             (url "https://github.com/Malabarba/smart-mode-line")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3755,7 +3883,7 @@ truncation.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsorphanage/sr-speedbar.git")
+               (url "https://github.com/emacsorphanage/sr-speedbar")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3778,7 +3906,7 @@ the speedbar window.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DamienCassou/shell-switcher.git")
+             (url "https://github.com/DamienCassou/shell-switcher")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3976,6 +4104,41 @@ repetitions for example).")
 compile}.")
     (license license:gpl3+)))
 
+(define-public emacs-flycheck-ledger
+  (package
+    (name "emacs-flycheck-ledger")
+    (version "0.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/flycheck-ledger.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50"))))
+    (inputs `(("ledger" ,ledger)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((ledger (assoc-ref inputs "ledger")))
+               ;; Specify the absolute executable location of ledger.
+               (substitute* "flycheck-ledger.el"
+                 (("\"ledger\"") (string-append "\"" ledger "\""))))
+             #t)))))
+    (propagated-inputs
+     `(("emacs-flycheck" ,emacs-flycheck)))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/purcell/flycheck-ledger")
+    (synopsis "Ledger support for Flycheck")
+    (description
+     "This Flycheck checker uses the output of @code{ledger balance} on the
+current file to find errors such as unbalanced transactions and syntax
+errors.")
+    (license license:gpl3+)))
+
 (define-public emacs-flycheck-rust
   (package
     (name "emacs-flycheck-rust")
@@ -4176,7 +4339,7 @@ minibuffer to enable editing the minibuffer input in another buffer with
               (method git-fetch)
               (uri (git-reference
                     (commit "7147455230841744fb5b95dcbe03320313a77124")
-                    (url "https://github.com/gregsexton/ob-ipython.git")))
+                    (url "https://github.com/gregsexton/ob-ipython")))
               (file-name (git-file-name name version))
               (sha256
                (base32
@@ -4193,14 +4356,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.24")
+    (version "0.25")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                            version ".tar"))
        (sha256
-        (base32 "1b8qwdvf3jvw0chrdgbymb2ci9ms45mf90nrljxx7jql2lsr3x63"))))
+        (base32 "0h0pxav170yzfpjf4vb8simiw67x9dkcjx9m4ghdk6wia25y8jni"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -4315,7 +4478,7 @@ build jobs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/company-mode/company-mode.git")
+             (url "https://github.com/company-mode/company-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4354,7 +4517,7 @@ These are distributed in separate files and can be used individually.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/tumashu/company-posframe.git")
+                      (url "https://github.com/tumashu/company-posframe")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -4431,7 +4594,7 @@ described on the homepage.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Sarcasm/company-irony.git")
+                    (url "https://github.com/Sarcasm/company-irony")
                     (commit (string-append "v" version))))
               (sha256 (base32
                        "1qgyam2vyjw90kpxns5cd6bq3qiqjhzpwrlvmi18vyb69qcgqd8a"))
@@ -4453,7 +4616,7 @@ with irony-mode using clang-tooling.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Sarcasm/flycheck-irony.git")
+                    (url "https://github.com/Sarcasm/flycheck-irony")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4477,7 +4640,7 @@ irony-mode do the syntax checking.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ikirill/irony-eldoc.git")
+             (url "https://github.com/ikirill/irony-eldoc")
              (commit "0df5831eaae264a25422b061eb2792aadde8b3f2")))
        (file-name (git-file-name name version))
        (sha256
@@ -4503,7 +4666,7 @@ for the current function or variable in the minibuffer.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/expez/company-quickhelp.git")
+               (url "https://github.com/expez/company-quickhelp")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4528,7 +4691,7 @@ completion candidate when using the Company text completion framework.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/vspinu/math-symbol-lists.git")
+               (url "https://github.com/vspinu/math-symbol-lists")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4587,7 +4750,7 @@ features:
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/vspinu/company-math.git")
+               (url "https://github.com/vspinu/company-math")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4634,7 +4797,7 @@ completion backends according to mode, and integrates with
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/oantolin/icomplete-vertical.git")
+             (url "https://github.com/oantolin/icomplete-vertical")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4685,7 +4848,7 @@ succeeds.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/joostkremers/nswbuff.git")
+               (url "https://github.com/joostkremers/nswbuff")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4707,7 +4870,7 @@ a customizable list.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/zk-phi/phi-search.git")
+               (url "https://github.com/zk-phi/phi-search")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4729,7 +4892,7 @@ provide an incremental search that moves all fake cursors in sync.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/knu/phi-search-mc.el.git")
+               (url "https://github.com/knu/phi-search-mc.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4754,7 +4917,7 @@ interactive searches to move multiple fake cursors.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magnars/multiple-cursors.el.git")
+             (url "https://github.com/magnars/multiple-cursors.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4777,7 +4940,7 @@ simultaneous cursors.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/knu/mc-extras.el.git")
+               (url "https://github.com/knu/mc-extras.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4824,7 +4987,7 @@ on context.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/tigersoldier/company-lsp.git")
+                    (url "https://github.com/tigersoldier/company-lsp")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -4850,6 +5013,30 @@ on context.")
 characters and asynchronous fetching of completion candidates.")
     (license license:gpl3+)))
 
+(define-public emacs-scala-mode
+  (package
+    (name "emacs-scala-mode")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hvesalai/emacs-scala-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1072lsin7dxadc0xyhy42wd0cw549axbbd4dy95wfmfcc1xbzjwv"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/hvesalai/emacs-scala-mode")
+    (synopsis "Emacs major mode for Scala")
+    (description
+     "This package provides basic Emacs support for the Scala language,
+including: local indenting of code, comments and multi-line strings, motion
+commands and highlighting.")
+    ;; There are no copyright headers in the source code.  The LICENSE file
+    ;; indicates GPL3.
+    (license license:gpl3)))
+
 (define-public emacs-scheme-complete
   (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
     (package
@@ -4859,7 +5046,7 @@ characters and asynchronous fetching of completion candidates.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ashinn/scheme-complete.git")
+               (url "https://github.com/ashinn/scheme-complete")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4888,7 +5075,7 @@ to a key in your preferred mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/supercollider/scel.git")
+               (url "https://github.com/supercollider/scel")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5006,7 +5193,7 @@ identifiers in the MIT-Scheme documentation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fedeinthemix/emacs-constants.git")
+             (url "https://github.com/fedeinthemix/emacs-constants")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5026,7 +5213,7 @@ constants and units into an Emacs buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/magnars/tagedit.git")
+             (url "https://github.com/magnars/tagedit")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5050,7 +5237,7 @@ in @code{html-mode}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/slime/slime.git")
+             (url "https://github.com/slime/slime")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5115,7 +5302,7 @@ for compilation, debugging, documentation lookup, and so on.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/auto-complete/popup-el.git")
+             (url "https://github.com/auto-complete/popup-el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5236,7 +5423,7 @@ linting of manifests and integration with Puppet Debugger.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/chrisdone/god-mode.git")
+             (url "https://github.com/chrisdone/god-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5260,7 +5447,7 @@ insertion mode.  When enabled all keys are implicitly prefixed with
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/paradoxxxzero/jinja2-mode.git")
+             (url "https://github.com/paradoxxxzero/jinja2-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5349,6 +5536,32 @@ that it correctly finds RFCs even when a space appears before the
 number.")
     (license license:gpl3+)))
 
+(define-public emacs-feature-mode
+  (let ((version "20190801")
+        (revision "1")
+        (commit "11ae1671629bfedaa553c7b819676d64eb320992"))
+    (package
+      (name "emacs-feature-mode")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/michaelklishin/cucumber.el")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0yd4gkxz9xcbgibfgr8apsid3f83nmg5jgqk5nql0linj5gymc28"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:include (cons* "^features\\/" "snippets\\/" "^support\\/"
+                          %default-include)))
+      (home-page "https://github.com/michaelklishin/cucumber.el/")
+      (synopsis "Emacs mode for editing Gherkin plain text user stories")
+      (description "Major mode for editing Gherkin (popularized by the
+Cucumber tool) user stories.  Also known by the name @code{cucumber.el}.")
+      (license license:gpl2+))))
+
 (define-public emacs-org-bullets
   (package
     (name "emacs-org-bullets")
@@ -5357,7 +5570,7 @@ number.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sabof/org-bullets.git")
+             (url "https://github.com/sabof/org-bullets")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5370,6 +5583,31 @@ number.")
 @code{org-mode} to be rendered as UTF-8 characters.")
     (license license:gpl3+)))
 
+(define-public emacs-org-drill
+  (package
+    (name "emacs-org-drill")
+    (version "2.7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.com/phillord/org-drill")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13y302lyscdqrba1sfx60yf5ji2xi7fbsvjsjbw7hiz63kg6rccy"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-org" ,emacs-org)
+       ("emacs-persist" ,emacs-persist)))
+    (home-page "https://gitlab.com/phillord/org-drill")
+    (synopsis "Flash card memorization system using Org mode")
+    (description
+     "This package uses spaced repetition algorithms to conduct interactive
+drill sessions to aid in memorization.  In these sessions you are shown flash
+cards created in Org mode.")
+    (license license:gpl3+)))
+
 (define-public emacs-org-superstar
   (package
     (name "emacs-org-superstar")
@@ -5378,7 +5616,7 @@ number.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/integral-dw/org-superstar-mode.git")
+             (url "https://github.com/integral-dw/org-superstar-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5422,7 +5660,7 @@ Features degrade gracefully when viewed from terminal.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/marcinkoziej/org-pomodoro.git")
+               (url "https://github.com/marcinkoziej/org-pomodoro")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5473,7 +5711,7 @@ started with 20 minutes.  All values are customizable.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alphapapa/org-sidebar.git")
+             (url "https://github.com/alphapapa/org-sidebar")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5503,7 +5741,7 @@ overview of tasks in a subtree.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/org-trello/org-trello.git")
+             (url "https://github.com/org-trello/org-trello")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5534,7 +5772,7 @@ organizer.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mtekman/org-tanglesync.el.git")
+               (url "https://github.com/mtekman/org-tanglesync.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5582,7 +5820,7 @@ to their corresponding tangled blocks.")
      (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jonathanchu/atom-one-dark-theme.git")
+                    (url "https://github.com/jonathanchu/atom-one-dark-theme")
                     (commit commit)))
               (sha256
                (base32
@@ -5602,7 +5840,7 @@ to their corresponding tangled blocks.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bbatsov/zenburn-emacs.git")
+             (url "https://github.com/bbatsov/zenburn-emacs")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5672,7 +5910,7 @@ package provides a light and a dark variant.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/kunalb/poet.git")
+               (url "https://github.com/kunalb/poet")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5716,7 +5954,7 @@ dark background.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/greduan/emacs-theme-gruvbox.git")
+                    (url "https://github.com/greduan/emacs-theme-gruvbox")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5745,7 +5983,7 @@ for the eyes.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/bruce/emacs-spacegray-theme.git")
+                      (url "https://github.com/bruce/emacs-spacegray-theme")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -5781,6 +6019,37 @@ The goal of this game is to create a tile with value 2048.  The size of the
 board and goal value can be customized.")
     (license license:gpl3+)))
 
+(define-public emacs-chess
+  (package
+    (name "emacs-chess")
+    (version "2.0.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "chess-" version ".tar"))
+       (sha256
+        (base32 "1sq1bjmp513vldfh7hc2bbfc54665abqiz0kqgqq3gijckaxn5js"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-pieces
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (pieces
+                     (string-append out "/share/emacs/site-lisp/pieces")))
+               (mkdir-p pieces)
+               (copy-recursively "pieces" pieces)
+               #t))))))
+    (home-page "https://elpa.gnu.org/packages/chess.html")
+    (synopsis "Play chess in GNU Emacs")
+    (description
+     "Chess is an Emacs Lisp library and several clients on top of the
+underlying library functionality for performing various activities related to
+the game of chess.")
+    (license license:gpl3+)))
+
 (define-public emacs-4clojure
   ;; There is no release.  Base version is extracted from Version keyword in
   ;; the main file.
@@ -5793,7 +6062,7 @@ board and goal value can be customized.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsorphanage/4clojure.git")
+               (url "https://github.com/emacsorphanage/4clojure")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5817,7 +6086,7 @@ answers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/belak/base16-emacs.git")
+             (url "https://github.com/belak/base16-emacs")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5839,7 +6108,7 @@ single theme but a set of guidelines with numerous implementations.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/hlissner/emacs-solaire-mode.git")
+             (url "https://github.com/hlissner/emacs-solaire-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5862,7 +6131,7 @@ them easier to distinguish from other, less important buffers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/raxod502/prescient.el.git")
+             (url "https://github.com/raxod502/prescient.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5887,7 +6156,7 @@ for Ivy and Company that make use of the library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/raxod502/selectrum.git")
+             (url "https://github.com/raxod502/selectrum")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5913,7 +6182,7 @@ interface.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Fuco1/smartparens.git")
+             (url "https://github.com/Fuco1/smartparens")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5950,7 +6219,7 @@ well as completely new features.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/nschum/highlight-symbol.el.git")
+               (url "https://github.com/nschum/highlight-symbol.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5984,7 +6253,7 @@ regardless of @code{highlight-symbol-idle-delay}.
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/wolray/symbol-overlay.git")
+               (url "https://github.com/wolray/symbol-overlay")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6028,7 +6297,7 @@ regexp that matches all known keywords.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nex3/perspective-el.git")
+             (url "https://github.com/nex3/perspective-el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6056,7 +6325,7 @@ perspective only its buffers are available by default.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Bad-ptr/persp-mode.el.git")
+             (url "https://github.com/Bad-ptr/persp-mode.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6208,7 +6477,7 @@ parallel.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/tkf/emacs-request.git")
+                    (url "https://github.com/tkf/emacs-request")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6306,43 +6575,17 @@ by side to an Org buffer with your notes relevant to the current page.")
 (define-public emacs-ivy
   (package
     (name "emacs-ivy")
-    (version "0.13.0")
+    (version "0.13.1")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/abo-abo/swiper.git")
-             (commit version)))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/ivy-" version ".tar"))
        (sha256
-        (base32
-         "0ghcwrg8a6r5q6fw2x8s08cwlmnz2d8qjhisnjwbnc2l4cgqpd9p"))))
+        (base32 "0n0ixhdykbdpis4krkqq6zncbby28p34742q96n0l91w0p19slcx"))))
     (build-system emacs-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'install-doc
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (info (string-append out "/share/info")))
-               (with-directory-excursion "doc"
-                 (invoke "makeinfo" "ivy.texi")
-                 (install-file "ivy.info" info)
-                 #t))))
-         (add-before 'check 'make-dummy-git-directory
-           (lambda _
-             (mkdir-p ".git")))
-         (add-after 'check 'delete-dummy-git-directory
-           (lambda _
-             (delete-file-recursively ".git"))))
-       #:tests? #t
-       #:test-command '("make" "test")))
     (propagated-inputs
      `(("emacs-hydra" ,emacs-hydra)))
-    (native-inputs
-     `(("texinfo" ,texinfo)
-       ("emacs-wgrep" ,emacs-wgrep)))
-    (home-page "http://oremacs.com/swiper/")
+    (home-page "https://github.com/abo-abo/swiper")
     (synopsis "Incremental vertical completion for Emacs")
     (description
      "This package provides @code{ivy-read} as an alternative to
@@ -6353,6 +6596,64 @@ splitting the input text by spaces and re-building it into a regular
 expression.")
     (license license:gpl3+)))
 
+(define-public emacs-counsel
+  (package
+    (name "emacs-counsel")
+    (version "0.13.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "counsel-" version ".el"))
+       (sha256
+        (base32 "1y3hr3j5bh5mbyh1cqzxx04181qpvj4xyv1gym2gxcjd30nfllli"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-swiper" ,emacs-swiper)))
+    (home-page "https://github.com/abo-abo/swiper")
+    (synopsis "Various completion functions using Ivy")
+    (description
+     "Just call one of the interactive functions in a file to complete the
+corresponding thing using Ivy.
+
+The following completions are currently available:
+@itemize
+@item Symbol completion for Elisp, Common Lisp, Python, Clojure, C, C++.
+@item Describe functions for Elisp: function, variable, library, command,
+@item bindings, theme.
+@item Navigation functions: imenu, ace-line, semantic, outline.
+@item Git utilities: git-files, git-grep, git-log, git-stash, git-checkout.
+@item Grep utilities: grep, ag, pt, recoll, ack, rg.
+@item System utilities: process list, rhythmbox, linux-app.
+@item Many more.
+@end itemize")
+    (license license:gpl3+)))
+
+(define-public emacs-swiper
+  (package
+    (name "emacs-swiper")
+    (version "0.13.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "swiper-" version ".el"))
+       (sha256
+        (base32 "06ild7kck0x5ry8bf0al24nh04q01q3jhj6jjl4xz8n2s6jnn70y"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/abo-abo/swiper")
+    (synopsis "Isearch with an overview")
+    (description
+     "This package gives an overview of the current regex search candidates.
+The search regex can be split into groups with a space.  Each group is
+highlighted with a different face.
+
+It can double as a quick `regex-builder', although only single lines will be
+matched.")
+    (license license:gpl3+)))
+
 (define-public emacs-ivy-xref
   (let ((commit "1a35fc0f070388701b05b0a455cbe262e924d547")
         (revision "1"))
@@ -6363,7 +6664,7 @@ expression.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alexmurray/ivy-xref.git")
+               (url "https://github.com/alexmurray/ivy-xref")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6388,7 +6689,7 @@ expression.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ecraven/ivy-pass.git")
+               (url "https://github.com/ecraven/ivy-pass")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6415,7 +6716,7 @@ the password store @code{pass}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mkcms/ivy-yasnippet.git")
+               (url "https://github.com/mkcms/ivy-yasnippet")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6447,7 +6748,7 @@ use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Yevgnen/ivy-rich.git")
+               (url "https://github.com/Yevgnen/ivy-rich")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6472,7 +6773,7 @@ show icons as well.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/abo-abo/avy.git")
+             (url "https://github.com/abo-abo/avy")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6504,7 +6805,7 @@ windows.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/abo-abo/ace-window.git")
+             (url "https://github.com/abo-abo/ace-window")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6533,7 +6834,7 @@ highlighted.  Pressing that character will switch to that window.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/victorhge/iedit.git")
+               (url "https://github.com/victorhge/iedit")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6590,9 +6891,9 @@ navigate code in a tree-like fashion.")
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-ace-window" ,emacs-ace-window)
-       ("emacs-iedit" ,emacs-iedit)
-       ("emacs-ivy" ,emacs-ivy)
        ("emacs-hydra" ,emacs-hydra)
+       ("emacs-iedit" ,emacs-iedit)
+       ("emacs-swiper" ,emacs-swiper)
        ("emacs-zoutline" ,emacs-zoutline)))
     (native-inputs
      `(("emacs-clojure-mode" ,emacs-clojure-mode)
@@ -6696,7 +6997,7 @@ allowing unprefixed keys to insert their respective characters as expected.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure-emacs/clojure-mode.git")
+             (url "https://github.com/clojure-emacs/clojure-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6725,7 +7026,7 @@ It is recommended to use @code{clojure-mode} with Paredit or Smartparens.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cask/epl.git")
+             (url "https://github.com/cask/epl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6740,6 +7041,46 @@ The purpose of this library is to wrap all the quirks and hassle of
 @code{package.el} into a sane API.")
     (license license:gpl3+)))
 
+(define-public emacs-counsel-notmuch
+  ;; Upstream provides no release.  Extract version for main file.
+  (let ((commit "a4a1562935e4180c42524c51609d1283e9be0688")
+        (revision "0"))
+    (package
+      (name "emacs-counsel-notmuch")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fuxialexander/counsel-notmuch.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "01k1321d961kc2i660a5595bqk0d85f16snsxngsn5si6y83kqr7"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'locate-notmuch
+             (lambda* (#:key inputs #:allow-other-keys)
+               (make-file-writable "counsel-notmuch.el")
+               (emacs-substitute-variables "counsel-notmuch.el"
+                 ("counsel-notmuch-path"
+                  (string-append (assoc-ref inputs "notmuch")
+                                 "/bin/notmuch")))
+               #t)))))
+      (inputs
+       `(("emacs-counsel" ,emacs-counsel)
+         ("notmuch" ,notmuch)
+         ("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/fuxialexander/counsel-notmuch")
+      (synopsis "Search emails in Notmuch asynchronously with Ivy")
+      (description
+       "This package can be used to search emails in Notmuch
+asynchronously, with Counsel and Ivy.  Simply call
+@code{counsel-notmuch} and input your Notmuch query.")
+      (license license:gpl3+))))
+
 (define-public emacs-counsel-projectile
   (package
     (name "emacs-counsel-projectile")
@@ -6755,7 +7096,7 @@ The purpose of this library is to wrap all the quirks and hassle of
                 "1inc4ndl0ysfwvxk4avbgpj4qi9rc93da6476a5c81xmwpsv8wmq"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-ivy" ,emacs-ivy)
+     `(("emacs-counsel" ,emacs-counsel)
        ("emacs-projectile" ,emacs-projectile)))
     (home-page "https://github.com/ericdanan/counsel-projectile")
     (synopsis "Enhance Projectile with Ivy")
@@ -6764,6 +7105,29 @@ The purpose of this library is to wrap all the quirks and hassle of
 commands and replacements for existing functions.")
     (license license:gpl3+)))
 
+(define-public emacs-qml-mode
+  (package
+    (name "emacs-qml-mode")
+    (version "0.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/coldnew/qml-mode")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1sncsvzjfgmhp4m8w5jd4y51k24n2jfpgvrkd64wlhhzbj3wb947"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/coldnew/qml-mode/")
+    (synopsis "Qt Modeling Language (QML) mode for Emacs")
+    (description "This package provides the @code{qml-mode} major Emacs mode
+for editing source files written in the Qt Modeling Language (QML) user
+interface markup language.  It provides syntax highlighting and basic
+navigation commands.  @code{qml-mode} is derived from code{js-mode}, the Emacs
+builtin JavaScript mode.")
+    (license license:gpl2+)))
+
 (define-public emacs-queue
   (package
     (name "emacs-queue")
@@ -6794,7 +7158,7 @@ be removed from the front.  This type of data structure is sometimes called an
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lunaryorn/pkg-info.el.git")
+             (url "https://github.com/lunaryorn/pkg-info.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6834,7 +7198,7 @@ ongoing operations.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ljos/sparql-mode.git")
+             (url "https://github.com/ljos/sparql-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6930,7 +7294,7 @@ E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
+               (url "https://github.com/JuliaEditorSupport/julia-emacs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6977,7 +7341,7 @@ to all the other commands, too.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mooz/js2-mode.git")
+             (url "https://github.com/mooz/js2-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -7122,16 +7486,16 @@ provides the following features:
 (define-public emacs-markdown-mode
   (package
     (name "emacs-markdown-mode")
-    (version "2.3")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/jrblevin/markdown-mode.git")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1zm1j4w0f3h01bmmpsv4j4mh6i13nnl8fcqlj2hsa1ncy1lgi8q7"))))
+    (version "2.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jrblevin/markdown-mode")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0g0ja4h651yfabm3k6gbw4y8w7wibc9283fyfzb33kjj38ivl5d7"))))
     (build-system emacs-build-system)
     (home-page "https://jblevins.org/projects/markdown-mode/")
     (synopsis "Emacs Major mode for Markdown files")
@@ -7150,7 +7514,7 @@ in Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Somelauw/evil-markdown.git")
+               (url "https://github.com/Somelauw/evil-markdown")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7190,7 +7554,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
 (define-public emacs-projectile
   (package
     (name "emacs-projectile")
-    (version "2.1.0")
+    (version "2.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
@@ -7198,7 +7562,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
               (file-name (string-append "projectile-" version ".el"))
               (sha256
                (base32
-                "1jj9wk91clyph3zmxkd7y7d6gdqmjd1vndhyq5fxp7i7dy013571"))))
+                "1d983siysg98bjbb2r99qbrpvpf6dn85si8gyak4z05m67s8sn6v"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -7222,7 +7586,7 @@ If you want to mark a folder manually as a project just create an empty
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/chrisbarrett/skeletor.el.git")
+                      (url "https://github.com/chrisbarrett/skeletor.el")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -7274,7 +7638,7 @@ and tooling.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/skeeto/elfeed.git")
+             (url "https://github.com/skeeto/elfeed")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -7299,7 +7663,7 @@ and RSS, with a user interface inspired by notmuch.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/remyhonig/elfeed-org.git")
+               (url "https://github.com/remyhonig/elfeed-org")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7339,7 +7703,7 @@ much easier.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sigma/el-x.git")
+                    (url "https://github.com/sigma/el-x")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7372,7 +7736,7 @@ provide the historic behavior of @code{flet}, as well as
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sigma/mocker.el.git")
+                    (url "https://github.com/sigma/mocker.el")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7400,7 +7764,7 @@ maximizes flexibility (at the expense of conciseness).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/technomancy/find-file-in-project.git")
+                    (url "https://github.com/technomancy/find-file-in-project")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7427,7 +7791,7 @@ functions to assist in reviewing changes on files.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jorgenschaefer/pyvenv.git")
+                    (url "https://github.com/jorgenschaefer/pyvenv")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7462,7 +7826,7 @@ environments (virtualenv) inside Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/DarthFennec/highlight-indent-guides.git")
+               (url "https://github.com/DarthFennec/highlight-indent-guides")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7491,7 +7855,7 @@ buffers.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/antonj/Highlight-Indentation-for-Emacs.git")
+               (url "https://github.com/antonj/Highlight-Indentation-for-Emacs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7518,7 +7882,7 @@ indentation guides in Emacs:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jorgenschaefer/elpy.git")
+                    (url "https://github.com/jorgenschaefer/elpy")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7605,7 +7969,7 @@ completion, interactive development and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Fanael/rainbow-delimiters.git")
+                    (url "https://github.com/Fanael/rainbow-delimiters")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7680,7 +8044,7 @@ names, e.g., @samp{#0000ff} is displayed in white with a blue background.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Kungsgeten/ryo-modal.git")
+               (url "https://github.com/Kungsgeten/ryo-modal")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7724,7 +8088,7 @@ window edge.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joostkremers/writeroom-mode.git")
+             (url "https://github.com/joostkremers/writeroom-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -7795,7 +8159,7 @@ that uses the standard completion function completing-read.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/yoshiki/yaml-mode.git")
+                    (url "https://github.com/yoshiki/yaml-mode")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7868,7 +8232,7 @@ Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fxbois/web-mode.git")
+             (url "https://github.com/fxbois/web-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -7909,16 +8273,16 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.6.2")
+    (version "3.6.3")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacs-helm/helm.git")
+             (url "https://github.com/emacs-helm/helm")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0bf2glydc0vhp52z8zg8phmsglb63nac15zd82zr35dscc50bzrb"))))
+        (base32 "175v0x2w3if2r9k5l8n7gf256v9y8zwxwgfnpm3j4bldrnyxqjg0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -7945,7 +8309,7 @@ not tied in the trap of backward compatibility.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-helm/helm-org.git")
+               (url "https://github.com/emacs-helm/helm-org")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7968,7 +8332,7 @@ as well as features for editing search results.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacsorphanage/helm-swoop.git")
+             (url "https://github.com/emacsorphanage/helm-swoop")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -7991,7 +8355,7 @@ for search-based navigation of buffers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-helm-ag.git")
+             (url "https://github.com/syohex/emacs-helm-ag")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -8006,33 +8370,28 @@ for search-based navigation of buffers.")
 as well as features for editing search results.")
     (license license:gpl3+)))
 
-;; There hasn't been a tag or release since 2016, so we take the latest
-;; commit.
 (define-public emacs-helm-projectile
-  (let ((commit "5328b74dddcee8d1913803ca8167868831a07463")
-        (version "0.14.0")
-        (revision "1"))
-    (package
-      (name "emacs-helm-projectile")
-      (version (git-version version revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/bbatsov/helm-projectile.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0a811cblrvc8llpv771b8dppgxs6bwjyvjy3qn2xns4nigvn93s0"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-projectile" ,emacs-projectile)))
-      (home-page "https://github.com/bbatsov/helm-projectile")
-      (synopsis "Helm integration for Projectile")
-      (description
-       "This Emacs library provides a Helm interface for Projectile.")
-      (license license:gpl3+))))
+  (package
+    (name "emacs-helm-projectile")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bbatsov/helm-projectile")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05gpg90gg03yalmv9fw1y9k21i2l617iipvs0p9n80aln8nrzs8g"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-projectile" ,emacs-projectile)))
+    (home-page "https://github.com/bbatsov/helm-projectile")
+    (synopsis "Helm integration for Projectile")
+    (description
+     "This Emacs library provides a Helm interface for Projectile.")
+    (license license:gpl3+)))
 
 (define-public emacs-taskrunner
   (let ((commit "3afd4a546d42339543d3d4e51b175fc3e82b3358")
@@ -8044,7 +8403,7 @@ as well as features for editing search results.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-taskrunner/emacs-taskrunner.git")
+               (url "https://github.com/emacs-taskrunner/emacs-taskrunner")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8070,7 +8429,7 @@ multiple project types.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-taskrunner/ivy-taskrunner.git")
+               (url "https://github.com/emacs-taskrunner/ivy-taskrunner")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8097,7 +8456,7 @@ Makefile targets.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-taskrunner/helm-taskrunner.git")
+               (url "https://github.com/emacs-taskrunner/helm-taskrunner")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8124,7 +8483,7 @@ Makefile targets.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/abo-abo/helm-make.git")
+               (url "https://github.com/abo-abo/helm-make")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8149,7 +8508,7 @@ target will call @code{compile} on it.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure-emacs/cider.git")
+             (url "https://github.com/clojure-emacs/cider")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8184,8 +8543,9 @@ CIDER).")
 ;; There hasn't been a tag or release since 2016, so we take the latest
 ;; commit.
 (define-public emacs-sly
-  (let ((commit "86a63df73360be51529806c7ed9b775b3f02284d")
-        (revision "4"))
+  (let ((commit "6a2f543cb21f14104c2253af5a1427b884a987ae")
+        ;; Update together with sbcl-slynk-boot0.
+        (revision "5"))
     (package
       (name "emacs-sly")
       (version (git-version "1.0.0" revision commit))
@@ -8193,12 +8553,12 @@ CIDER).")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/joaotavora/sly.git")
+               (url "https://github.com/joaotavora/sly")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0sx6fdckcfcld41db0695svvlvllnfaazwx513686gnykwfd209n"))))
+           "0wbpg9p9yg2hd62l15pvy50fk3hndq5zzyqlyyf04g368s895144"))))
       (build-system emacs-build-system)
       (native-inputs
        `(("texinfo" ,texinfo)))
@@ -8514,8 +8874,8 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "d062cc206d671fb5aefb1e0e679a9cb1d6c73e33")
-        (revision "14"))
+  (let ((commit "c68aed6a9694836602ada224160bc5b4c0a37919")
+        (revision "15"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.3" revision commit))
@@ -8527,7 +8887,7 @@ extensions.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1zizfqmfrxx3shgggwa74rg2qqbrs8704wf94ajx0k11dbm1dbrp"))))
+                  "1xhrzl0vy540a572f9fnh5a039bpqsrkv0kh6bqw0rki70w7x0xx"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -8635,7 +8995,7 @@ a popup window for previewing candidates.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/wcsmith/evil-args.git")
+               (url "https://github.com/wcsmith/evil-args")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8928,7 +9288,7 @@ to search.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ananthakumaran/monky.git")
+                    (url "https://github.com/ananthakumaran/monky")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -8955,7 +9315,7 @@ can selectively commit files, view the diffs, and other things.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sanel/monroe.git")
+             (url "https://github.com/sanel/monroe")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9118,7 +9478,7 @@ files that you would find in @file{contrib/} from the git repository.")))
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/lewang/flx.git")
+              (url "https://github.com/lewang/flx")
               (commit (string-append "v" version))))
        (sha256
         (base32
@@ -9239,7 +9599,7 @@ package provides the Emacs theme.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/auto-complete/auto-complete.git")
+              (url "https://github.com/auto-complete/auto-complete")
               (commit (string-append "v" version))))
        (sha256
         (base32
@@ -9266,7 +9626,7 @@ extensibility.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ajc/nginx-mode.git")
+             (url "https://github.com/ajc/nginx-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9307,7 +9667,7 @@ Streams are implemented as delayed evaluation of cons cells.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsmirror/cl-print.git")
+               (url "https://github.com/emacsmirror/cl-print")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9330,7 +9690,7 @@ please.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsmirror/el-search.git")
+               (url "https://github.com/emacsmirror/el-search")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9353,7 +9713,7 @@ procedures for emacs-lisp-mode.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Wilfred/ht.el.git")
+             (url "https://github.com/Wilfred/ht.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9380,7 +9740,7 @@ provides functions to convert hash tables from and to alists and plists.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/aki2o/log4e.git")
+             (url "https://github.com/aki2o/log4e")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9410,7 +9770,7 @@ you to deal with multiple log levels.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tekai/gntp.el.git")
+             (url "https://github.com/tekai/gntp.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9433,7 +9793,7 @@ notifications.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jwiegley/alert.git")
+             (url "https://github.com/jwiegley/alert")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9480,7 +9840,7 @@ a (typically) noncontiguous set of text.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/iqbalansari/mu4e-alert.git")
+             (url "https://github.com/iqbalansari/mu4e-alert")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9582,7 +9942,7 @@ been adapted to work with mu4e.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joaotavora/yasnippet.git")
+             (url "https://github.com/joaotavora/yasnippet")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9815,7 +10175,7 @@ package.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/skeeto/emacs-memoize.git")
+             (url "https://github.com/skeeto/emacs-memoize")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9840,7 +10200,7 @@ memoizing functions.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/coldnew/linum-relative.git")
+             (url "https://github.com/coldnew/linum-relative")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9860,7 +10220,7 @@ number on the left margin in Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nonsequitur/idle-highlight-mode.git")
+             (url "https://github.com/nonsequitur/idle-highlight-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9882,7 +10242,7 @@ number on the left margin in Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/marsmining/ox-twbs.git")
+             (url "https://github.com/marsmining/ox-twbs")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9905,7 +10265,7 @@ jQuery and Bootstrap resources included via osscdn.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/daimrod/highlight-sexp.git")
+             (url "https://github.com/daimrod/highlight-sexp")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9927,7 +10287,7 @@ jQuery and Bootstrap resources included via osscdn.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/zk-phi/highlight-stages.git")
+               (url "https://github.com/zk-phi/highlight-stages")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10078,7 +10438,7 @@ the hunks and revert them selectively.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/myrjola/diminish.el.git")
+             (url "https://github.com/myrjola/diminish.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10232,7 +10592,7 @@ to the home page or read the comments in the source file,
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/hniksic/emacs-htmlize.git")
+             (url "https://github.com/hniksic/emacs-htmlize")
              (commit (string-append "release/" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10253,7 +10613,7 @@ fonts is supported.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/philjackson/xmlgen.git")
+             (url "https://github.com/philjackson/xmlgen")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10279,7 +10639,7 @@ conversion for Emacs Lisp.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cdominik/cdlatex.git")
+             (url "https://github.com/cdominik/cdlatex")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10305,7 +10665,7 @@ constructs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tumashu/cnfonts.git")
+             (url "https://github.com/tumashu/cnfonts")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10325,7 +10685,7 @@ configuration of Chinese fonts.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ejmr/php-mode.git")
+             (url "https://github.com/ejmr/php-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10349,7 +10709,7 @@ documentation search and a source and class browser.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pitkali/pos-tip.git")
+             (url "https://github.com/pitkali/pos-tip")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10375,7 +10735,7 @@ function to be used by other frontend programs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tumashu/pyim-basedict.git")
+             (url "https://github.com/tumashu/pyim-basedict")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10443,7 +10803,7 @@ posframe is a child frame displayed within its root window's buffer.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tumashu/el2org.git")
+             (url "https://github.com/tumashu/el2org")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10463,7 +10823,7 @@ to org file, you can use this tool to write orgify commentary.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Wilfred/mustache.el.git")
+             (url "https://github.com/Wilfred/mustache.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10490,7 +10850,7 @@ and lambdas.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tumashu/org2web.git")
+             (url "https://github.com/tumashu/org2web")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10558,7 +10918,12 @@ It should enable you to implement low-level X11 applications.")
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "exwm-" version ".tar"))
        (sha256
-        (base32 "0lj1a3cmbpf4h6x8k6x8cdm1qb51ca6filydnvi5zcda8zpl060s"))))
+        (base32 "0lj1a3cmbpf4h6x8k6x8cdm1qb51ca6filydnvi5zcda8zpl060s"))
+       (patches
+        ;; Patch fixing fullscreen view.  Applied upstream as
+        ;; edb930005b0ba83051ca8a59b493e9a3c8ef580a.  It can be removed in
+        ;; next release.
+        (search-patches "emacs-exwm-fix-fullscreen-states.patch"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-xelb" ,emacs-xelb)))
@@ -10654,9 +11019,9 @@ other operations.")
          "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-exwm" ,emacs-exwm)
+     `(("emacs-counsel" ,emacs-counsel)
+       ("emacs-exwm" ,emacs-exwm)
        ("emacs-switch-window" ,emacs-switch-window)
-       ("emacs-ivy" ,emacs-ivy)
        ("emacs-use-package" ,emacs-use-package)))
     (inputs
      `(("xhost" ,xhost)
@@ -10742,7 +11107,7 @@ and supports the use of a mouse.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bruceravel/gnuplot-mode.git")
+             (url "https://github.com/bruceravel/gnuplot-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10847,7 +11212,7 @@ addition of surrounding pairs, such as parentheses and quotes, in evil mode.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/linktohack/evil-commentary.git")
+             (url "https://github.com/linktohack/evil-commentary")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10872,7 +11237,7 @@ lines, and @code{gc} to comment out the target of a motion.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rejeep/ansi.el.git")
+             (url "https://github.com/rejeep/ansi.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10899,7 +11264,7 @@ as bold, underscore or italic.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rejeep/commander.el.git")
+             (url "https://github.com/rejeep/commander.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10948,7 +11313,7 @@ one if it fails.")
      (origin
        (method git-fetch)
        (uri (git-reference
-	     (url "https://github.com/rejeep/ert-runner.el.git")
+	     (url "https://github.com/rejeep/ert-runner.el")
 	     (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10997,7 +11362,7 @@ running tests easier.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/promethial/xtest.git")
+                    (url "https://github.com/promethial/xtest")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -11019,7 +11384,7 @@ running tests easier.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/purcell/disable-mouse.git")
+             (url "https://github.com/purcell/disable-mouse")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11041,7 +11406,7 @@ running a customisable handler command (@code{ignore} by default). ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gongo/json-reformat.git")
+             (url "https://github.com/gongo/json-reformat")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11087,7 +11452,7 @@ running a customisable handler command (@code{ignore} by default). ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Sterlingg/json-snatcher.git")
+             (url "https://github.com/Sterlingg/json-snatcher")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11107,7 +11472,7 @@ a @url{http://json.org/, JSON} file.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joshwnj/json-mode.git")
+             (url "https://github.com/joshwnj/json-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11154,7 +11519,7 @@ JSON objects.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/pashky/restclient.el.git")
+                      (url "https://github.com/pashky/restclient.el")
                       (commit commit)))
                 (sha256
                  (base32
@@ -11206,7 +11571,7 @@ whitespace in the buffer was initially clean.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/nicferrier/eimp.git")
+               (url "https://github.com/nicferrier/eimp")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11243,7 +11608,7 @@ the actual transformations.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Fuco1/dired-hacks.git")
+                      (url "https://github.com/Fuco1/dired-hacks")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -11309,7 +11674,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/justbur/emacs-which-key.git")
+             (url "https://github.com/justbur/emacs-which-key")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11363,7 +11728,7 @@ list of commands is displayed in a handy popup.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lewang/ws-butler.git")
+                    (url "https://github.com/lewang/ws-butler")
                     (commit "323b651dd70ee40a25accc940b8f80c3a3185205")))
               (file-name (git-file-name name version))
               (sha256
@@ -11414,7 +11779,7 @@ when browsing files with Dired.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/et2010/org-edit-latex.git")
+             (url "https://github.com/et2010/org-edit-latex")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11440,7 +11805,7 @@ src block.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-emamux.git")
+             (url "https://github.com/syohex/emacs-emamux")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11534,7 +11899,7 @@ at point.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-git-messenger.git")
+             (url "https://github.com/syohex/emacs-git-messenger")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11562,7 +11927,7 @@ internally.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tumashu/gitpatch.git")
+             (url "https://github.com/tumashu/gitpatch")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11610,7 +11975,7 @@ the nick color and the background color
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/hrs/engine-mode.git")
+             (url "https://github.com/hrs/engine-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11631,7 +11996,7 @@ query them from the comfort of your editor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/david-christiansen/prop-menu-el.git")
+             (url "https://github.com/david-christiansen/prop-menu-el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11657,21 +12022,21 @@ key.  Optionally, a mouse pop-up can be added by binding
     (license license:gpl3+)))
 
 (define-public emacs-idris-mode
-  (let ((commit "acc8835449475d7cd205aba213fdd3d41c38ba40")
+  (let ((commit "b77eadd8ac2048d5c882b4464bd9673e45dd6a59")
         (revision "0"))
     (package
       (name "emacs-idris-mode")
-      (version (git-version "0.9.19" revision commit))
+      (version (git-version "1.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/idris-hackers/idris-mode.git")
+               (url "https://github.com/idris-hackers/idris-mode")
                (commit commit)))
          (file-name (git-file-name name commit))
          (sha256
           (base32
-           "0n9xbknc68id0mf8hbfmawi8qpvrs47ix807sk9ffv2g3ik32kk6"))))
+           "1v8av6jza1j00ln75zjwaca0vmmv0fhhhi94p84rlfzgzykyb9g1"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-prop-menu" ,emacs-prop-menu)))
@@ -11679,9 +12044,8 @@ key.  Optionally, a mouse pop-up can be added by binding
        "https://github.com/idris-hackers/idris-mode")
       (synopsis "Major mode for editing Idris code")
       (description
-       "This is an Emacs mode for editing Idris code.  It requires the latest
-version of Idris, and some features may rely on the latest Git version of
-Idris.")
+       "This is an Emacs mode for editing Idris code.  It is compatible with
+the latest versions of Idris 1.")
       (license license:gpl3+))))
 
 (define-public emacs-browse-at-remote
@@ -11692,7 +12056,7 @@ Idris.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rmuslimov/browse-at-remote.git")
+             (url "https://github.com/rmuslimov/browse-at-remote")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11724,7 +12088,7 @@ It supports dired buffers and opens them in tree mode at destination.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/abo-abo/tiny.git")
+               (url "https://github.com/abo-abo/tiny")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11923,7 +12287,7 @@ value of the access token.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jorgenschaefer/circe.git")
+             (url "https://github.com/jorgenschaefer/circe")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -11979,7 +12343,7 @@ through them using @key{C-c C-SPC}.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/yuya373/emacs-slack.git")
+                      (url "https://github.com/yuya373/emacs-slack")
                       (commit commit)))
                 (file-name (git-file-name name commit))
                 (sha256
@@ -12014,7 +12378,7 @@ messaging service.")
     (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/szermatt/emacs-bash-completion.git")
+            (url "https://github.com/szermatt/emacs-bash-completion")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
@@ -12087,7 +12451,7 @@ in a generalized CSV (character-separated values) format.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/holomorph/transmission.git")
+             (url "https://github.com/holomorph/transmission")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12116,7 +12480,7 @@ contexts.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/polymode/polymode.git")
+                    (url "https://github.com/polymode/polymode")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -12170,7 +12534,7 @@ literate programming tools for exporting, weaving and tangling.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/polymode/poly-org.git")
+             (url "https://github.com/polymode/poly-org")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12197,7 +12561,7 @@ buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kaushalmodi/eless.git")
+             (url "https://github.com/kaushalmodi/eless")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12249,7 +12613,7 @@ Feautures:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/redguardtoo/evil-matchit.git")
+             (url "https://github.com/redguardtoo/evil-matchit")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12272,7 +12636,7 @@ evil mode using @kbd{%}.  It is a port of @code{matchit} for Vim.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/expez/evil-smartparens.git")
+             (url "https://github.com/expez/evil-smartparens")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12296,7 +12660,7 @@ emulates Vim features and provides Vim-like key bindings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/blorbx/evil-quickscope.git")
+             (url "https://github.com/blorbx/evil-quickscope")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12325,7 +12689,7 @@ features and provides Vim-like key bindings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dbrock/bongo.git")
+             (url "https://github.com/dbrock/bongo")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12373,7 +12737,7 @@ navigation with the grails mode.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/takaxp/org-tree-slide.git")
+                      (url "https://github.com/takaxp/org-tree-slide")
                       (commit commit)))
                 (sha256
                  (base32
@@ -12397,7 +12761,7 @@ navigation with the grails mode.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ieure/scratch-el.git")
+                      (url "https://github.com/ieure/scratch-el")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -12434,7 +12798,7 @@ formatting rules for that language.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nicferrier/emacs-kv.git")
+             (url "https://github.com/nicferrier/emacs-kv")
              (commit "721148475bce38a70e0b678ba8aa923652e8900e")))
        (file-name (git-file-name name version))
        (sha256
@@ -12459,7 +12823,7 @@ Lisp.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/tali713/esxml.git")
+                    (url "https://github.com/tali713/esxml")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -12498,39 +12862,36 @@ the format.")
     (license license:gpl3+)))
 
 (define-public emacs-nov-el
-  ;; Upstream does not tag releases.  Specify raw commit hash matching the
-  ;; release.
-  (let ((commit "ea0c835c1b5e6e70293f4bd64e9c89bdc42f8596"))
-    (package
-      (name "emacs-nov-el")
-      (version "0.3.0")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://depp.brause.cc/nov.el.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "04phmm14ywgicjsl2bsg6w9rapd71vdkxdp5wp0brj6px27y85jz"))))
-      (build-system emacs-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'embed-path-to-unzip
-             (lambda _
-               (substitute* "nov.el"
-                 (("\\(executable-find \"unzip\"\\)")
-                  (string-append "\"" (which "unzip") "\"")))
-               #t)))))
-      (propagated-inputs
-       `(("emacs-dash" ,emacs-dash)
-         ("emacs-esxml" ,emacs-esxml)))
-      (inputs
-       `(("unzip" ,unzip)))
-      (home-page "https://depp.brause.cc/nov.el/")
-      (synopsis "Major mode for reading EPUBs in Emacs")
-      (description "@code{nov.el} provides a major mode for reading EPUB
+  (package
+    (name "emacs-nov-el")
+    (version "0.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://depp.brause.cc/nov.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13r7lvyyyv62m57m4s4xjs4qz2ckhqk6ib514px7qzc7mdzcz9i9"))))
+    (build-system emacs-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'embed-path-to-unzip
+           (lambda _
+             (substitute* "nov.el"
+               (("\\(executable-find \"unzip\"\\)")
+                (string-append "\"" (which "unzip") "\"")))
+             #t)))))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-esxml" ,emacs-esxml)))
+    (inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://depp.brause.cc/nov.el/")
+    (synopsis "Major mode for reading EPUBs in Emacs")
+    (description "@code{nov.el} provides a major mode for reading EPUB
 documents.
 
 Features:
@@ -12547,7 +12908,7 @@ Features:
 @item Image rescaling
 @end itemize
 ")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public epipe
   (package
@@ -12557,7 +12918,7 @@ Features:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cute-jumper/epipe.git")
+             (url "https://github.com/cute-jumper/epipe")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12601,7 +12962,7 @@ the pipeline, featuring the support for running @code{emacsclient}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-hcl-mode.git")
+             (url "https://github.com/syohex/emacs-hcl-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12623,7 +12984,7 @@ highlighting and indentation support.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-terraform-mode.git")
+             (url "https://github.com/syohex/emacs-terraform-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12723,7 +13084,7 @@ to with quicklink-style selections.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jrblevin/deft.git")
+             (url "https://github.com/jrblevin/deft")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12745,7 +13106,7 @@ directories of plain text notes, inspired by Notational Velocity.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-anzu.git")
+             (url "https://github.com/syohex/emacs-anzu")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -12789,7 +13150,7 @@ region of the buffer, while the latter works on rectangular selections.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/smihica/emmet-mode.git")
+                      (url "https://github.com/smihica/emmet-mode")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -12813,7 +13174,7 @@ used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ergoemacs/ergoemacs-mode.git")
+               (url "https://github.com/ergoemacs/ergoemacs-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -12875,7 +13236,7 @@ standard Unix password manager\").")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/DamienCassou/auth-password-store.git")
+               (url "https://github.com/DamienCassou/auth-password-store")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -12901,7 +13262,7 @@ standard Unix password manager\").")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/NicolasPetton/pass.git")
+             (url "https://github.com/NicolasPetton/pass")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13036,7 +13397,7 @@ match and total match information in the mode-line in various search modes.")
     (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/skeeto/elisp-finalize.git")
+            (url "https://github.com/skeeto/elisp-finalize")
             (commit version)))
       (file-name (git-file-name name version))
       (sha256
@@ -13060,7 +13421,7 @@ object has been freed.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/skeeto/emacsql.git")
+                    (url "https://github.com/skeeto/emacsql")
                     (commit (string-append version))))
               (file-name (git-file-name name version))
               (sha256
@@ -13142,7 +13503,7 @@ object @code{nil} corresponds 1:1 with @code{NULL} in the database.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacscollective/closql.git")
+               (url "https://github.com/emacscollective/closql")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13171,7 +13532,7 @@ add any additional instance slots.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacscollective/epkg.git")
+               (url "https://github.com/emacscollective/epkg")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13213,7 +13574,7 @@ Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/purcell/elisp-slime-nav.git")
+             (url "https://github.com/purcell/elisp-slime-nav")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13235,7 +13596,7 @@ in @code{emacs-lisp-mode}, together with an elisp equivalent of
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacsorphanage/dedicated.git")
+             (url "https://github.com/emacsorphanage/dedicated")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13262,7 +13623,7 @@ the source file.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/paul-issartel/nnreddit.git")
+                      (url "https://github.com/paul-issartel/nnreddit")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -13283,7 +13644,7 @@ newsreader.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mickeynp/makey.git")
+             (url "https://github.com/mickeynp/makey")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13327,7 +13688,7 @@ text-mode (i.e. Org-mode).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alphapapa/outshine.git")
+                    (url "https://github.com/alphapapa/outshine")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -13378,7 +13739,7 @@ a heuristic based on frequency and recency.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alphapapa/org-recent-headings.git")
+                    (url "https://github.com/alphapapa/org-recent-headings")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -13608,7 +13969,7 @@ files to be expanded upon opening them.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joostkremers/parsebib.git")
+             (url "https://github.com/joostkremers/parsebib")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13628,7 +13989,7 @@ files to be expanded upon opening them.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/joostkremers/ebib.git")
+             (url "https://github.com/joostkremers/ebib")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13658,7 +14019,7 @@ with (La)TeX mode, Org mode and other Emacs editing modes.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cpitclaudel/biblio.el.git")
+             (url "https://github.com/cpitclaudel/biblio.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13689,7 +14050,7 @@ automatically fetched from well-curated sources, and formatted as BibTeX.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tmalsburg/helm-bibtex.git")
+               (url "https://github.com/tmalsburg/helm-bibtex")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13735,7 +14096,7 @@ arXiv, Google Scholar, Library of Congress, etc.
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/flexibeast/ewmctrl.git")
+               (url "https://github.com/flexibeast/ewmctrl")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13792,7 +14153,7 @@ and @code{erc-send-modify-hook} to download and show images.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-helm-gtags.git")
+             (url "https://github.com/syohex/emacs-helm-gtags")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13814,7 +14175,7 @@ and @code{erc-send-modify-hook} to download and show images.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rolandwalker/list-utils.git")
+             (url "https://github.com/rolandwalker/list-utils")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -13833,7 +14194,7 @@ and @code{erc-send-modify-hook} to download and show images.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacsfodder/move-text.git")
+             (url "https://github.com/emacsfodder/move-text")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -13874,7 +14235,7 @@ schema validation.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/istib/rainbow-blocks.git")
+                      (url "https://github.com/istib/rainbow-blocks")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -13897,7 +14258,7 @@ orient yourself in the code, and tell which statements are at a given level.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DamienCassou/hierarchy.git")
+             (url "https://github.com/DamienCassou/hierarchy")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -13925,7 +14286,7 @@ navigate and display hierarchy structures.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsorphanage/tree-mode.git")
+               (url "https://github.com/emacsorphanage/tree-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -13945,7 +14306,7 @@ navigate and display hierarchy structures.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ahungry/md4rd.git")
+                    (url "https://github.com/ahungry/md4rd")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -13974,7 +14335,7 @@ navigate and display hierarchy structures.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/flexibeast/pulseaudio-control.git")
+               (url "https://github.com/flexibeast/pulseaudio-control")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14006,7 +14367,7 @@ navigate and display hierarchy structures.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/doublep/datetime.git")
+             (url "https://github.com/doublep/datetime")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14029,7 +14390,7 @@ timestamps and date-time format strings library for Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/theodorewiles/org-mind-map.git")
+               (url "https://github.com/theodorewiles/org-mind-map")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14052,7 +14413,7 @@ timestamps and date-time format strings library for Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mojochao/npm-mode.git")
+             (url "https://github.com/mojochao/npm-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14093,7 +14454,7 @@ functions provided by @file{subr.el}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/re5et/itail.git")
+               (url "https://github.com/re5et/itail")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14116,7 +14477,7 @@ tramp.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Wilfred/loop.el.git")
+             (url "https://github.com/Wilfred/loop.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14143,7 +14504,7 @@ continue.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Wilfred/elisp-refs.git")
+             (url "https://github.com/Wilfred/elisp-refs")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14179,7 +14540,7 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/bbatsov/crux.git")
+               (url "https://github.com/bbatsov/crux")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14200,7 +14561,7 @@ confused by comments or @code{foo-bar} matching @code{foo}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stsquad/emacs_chrome.git")
+             (url "https://github.com/stsquad/emacs_chrome")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14278,7 +14639,7 @@ macro takes a first argument (whose value must be an alist) and a body.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jschaf/esup.git")
+               (url "https://github.com/jschaf/esup")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14302,7 +14663,7 @@ your Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/iqbalansari/restart-emacs.git")
+               (url "https://github.com/iqbalansari/restart-emacs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14322,7 +14683,7 @@ within Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/syohex/emacs-sourcemap.git")
+             (url "https://github.com/syohex/emacs-sourcemap")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14341,7 +14702,7 @@ within Emacs.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/joddie/macrostep.git")
+                      (url "https://github.com/joddie/macrostep")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -14391,7 +14752,7 @@ until the top-level form is no longer a macro call.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Fanael/parent-mode.git")
+             (url "https://github.com/Fanael/parent-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14428,7 +14789,7 @@ until the top-level form is no longer a macro call.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsmirror/isearch-prop.git")
+               (url "https://github.com/emacsmirror/isearch-prop")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14454,7 +14815,7 @@ until the top-level form is no longer a macro call.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ptrv/company-lua.git")
+               (url "https://github.com/ptrv/company-lua")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14482,7 +14843,7 @@ until the top-level form is no longer a macro call.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DamienCassou/beginend.git")
+             (url "https://github.com/DamienCassou/beginend")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14509,7 +14870,7 @@ key again.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dimitri/mbsync-el.git")
+               (url "https://github.com/dimitri/mbsync-el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14532,7 +14893,7 @@ within Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/purcell/ibuffer-projectile.git")
+               (url "https://github.com/purcell/ibuffer-projectile")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14626,7 +14987,7 @@ documentation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/hylang/hy-mode.git")
+             (url "https://github.com/hylang/hy-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14648,7 +15009,7 @@ documentation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/yasuyk/web-beautify.git")
+             (url "https://github.com/yasuyk/web-beautify")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14669,7 +15030,7 @@ CSS, JavaScript, JSON.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/yuutayamada/helm-shell-history.git")
+               (url "https://github.com/yuutayamada/helm-shell-history")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14729,7 +15090,7 @@ their meaning for the current Emacs major-mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jkitchin/org-ref.git")
+               (url "https://github.com/jkitchin/org-ref")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14777,7 +15138,7 @@ notes.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/yjwen/org-reveal.git")
+                      (url "https://github.com/yjwen/org-reveal")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -14823,7 +15184,7 @@ files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nickmccurdy/add-hooks.git")
+             (url "https://github.com/nickmccurdy/add-hooks")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14843,7 +15204,7 @@ duplicate hook and function names further into a single declarative call.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Malabarba/fancy-narrow.git")
+             (url "https://github.com/Malabarba/fancy-narrow")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -14868,7 +15229,7 @@ buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/for-GET/know-your-http-well.git")
+             (url "https://github.com/for-GET/know-your-http-well")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -14903,7 +15264,7 @@ buffer.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alphapapa/navi.git")
+               (url "https://github.com/alphapapa/navi")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14930,7 +15291,7 @@ buffer.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/zk-phi/download-region.git")
+               (url "https://github.com/zk-phi/download-region")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -14951,7 +15312,7 @@ downloading manager for Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Wilfred/helpful.git")
+             (url "https://github.com/Wilfred/helpful")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15000,7 +15361,7 @@ and doesn't require memorisation of commands.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/doublep/logview.git")
+             (url "https://github.com/doublep/logview")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15056,7 +15417,7 @@ functions.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dholm/benchmark-init-el.git")
+             (url "https://github.com/dholm/benchmark-init-el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15078,7 +15439,7 @@ time is being spent during Emacs startup in order to optimize startup time.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/terranpro/magit-gerrit.git")
+                      (url "https://github.com/terranpro/magit-gerrit")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -15103,7 +15464,7 @@ Emacs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/danielma/magit-org-todos.el.git")
+               (url "https://github.com/danielma/magit-org-todos.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15153,7 +15514,7 @@ Magit.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cosmicexplorer/f3.git")
+             (url "https://github.com/cosmicexplorer/f3")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15175,7 +15536,7 @@ Magit.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/buzztaiki/lice-el.git")
+                      (url "https://github.com/buzztaiki/lice-el")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -15201,7 +15562,7 @@ Magit.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/nashamri/academic-phrases.git")
+               (url "https://github.com/nashamri/academic-phrases")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15235,7 +15596,7 @@ browse the phrases by the paper section and fill-in the blanks if required.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/abo-abo/auto-yasnippet.git")
+                      (url "https://github.com/abo-abo/auto-yasnippet")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -15264,7 +15625,7 @@ yasnippet fields and mirrors to be.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Fanael/highlight-numbers.git")
+             (url "https://github.com/Fanael/highlight-numbers")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15384,7 +15745,7 @@ fixed-pitch,everything else becomes variable-pitch.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/benma/visual-regexp.el.git")
+             (url "https://github.com/benma/visual-regexp.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15407,7 +15768,7 @@ interactive visual feedback.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Lindydancer/faceup.git")
+               (url "https://github.com/Lindydancer/faceup")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15422,8 +15783,8 @@ perform regression test for packages that provide font-lock rules.")
       (license license:gpl3+))))
 
 (define-public emacs-racket-mode
-  (let ((commit "5f396fa91fc22310f5c519aa658436a1a5251846")
-        (revision "5"))
+  (let ((commit "5eb31a284c8db5102bc71b1e2c6ce3a095ae085b")
+        (revision "6"))
     (package
       (name "emacs-racket-mode")
       (version (git-version "0.0.2" revision commit))
@@ -15436,12 +15797,13 @@ perform regression test for packages that provide font-lock rules.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1214y08i0c51d1vzw9jzyf79vyfqizdy6m0980qs13qbdwsj32v0"))))
+           "081h6rd0gv88m0wvnmghi242kl39x1sz34qr4cq9vz04iwvnmgrm"))))
       (build-system emacs-build-system)
       (arguments
        `(#:include '("\\.el$" "\\.rkt$")))
       (propagated-inputs
        `(("emacs-faceup" ,emacs-faceup)
+         ("emacs-pos-tip" ,emacs-pos-tip)
          ("emacs-s" ,emacs-s)))
       (home-page "https://www.racket-mode.com/")
       (synopsis "Major mode for the Racket language")
@@ -15464,7 +15826,7 @@ perform regression test for packages that provide font-lock rules.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mkcms/grep-context.git")
+               (url "https://github.com/mkcms/grep-context")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15492,7 +15854,7 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-helm/helm-firefox.git")
+               (url "https://github.com/emacs-helm/helm-firefox")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15514,7 +15876,7 @@ compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mkcms/interactive-align.git")
+             (url "https://github.com/mkcms/interactive-align")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15556,7 +15918,7 @@ decrease the number at point.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Fanael/highlight-defined.git")
+             (url "https://github.com/Fanael/highlight-defined")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15577,7 +15939,7 @@ macros, faces and variables.  To enable call @code{highlight-defined-mode}. ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DogLooksGood/parinfer-mode.git")
+             (url "https://github.com/DogLooksGood/parinfer-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15601,7 +15963,7 @@ keep Parens and Indentation inline with one another.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/emacs-helm/helm-eww.git")
+                    (url "https://github.com/emacs-helm/helm-eww")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -15625,7 +15987,7 @@ bookmarks and history.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/stumpwm/stumpwm-contrib.git")
+                      (url "https://github.com/stumpwm/stumpwm-contrib")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -15671,7 +16033,7 @@ bookmarks and history.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/creichert/ido-vertical-mode.el.git")
+             (url "https://github.com/creichert/ido-vertical-mode.el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15690,7 +16052,7 @@ bookmarks and history.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Fanael/wordgen.el.git")
+             (url "https://github.com/Fanael/wordgen.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15734,7 +16096,7 @@ the previously visible buffer part after each scroll.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dgutov/highlight-escape-sequences.git")
+               (url "https://github.com/dgutov/highlight-escape-sequences")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15754,7 +16116,7 @@ Emacs minor mode to escape sequences in code.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rakanalh/emacs-dashboard.git")
+             (url "https://github.com/rakanalh/emacs-dashboard")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15788,7 +16150,7 @@ sections for bookmarks, projectil projects, org-agenda and more. ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/anwyn/slime-company.git")
+             (url "https://github.com/anwyn/slime-company")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15835,7 +16197,7 @@ interactive loop.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/xiongtx/eros.git")
+               (url "https://github.com/xiongtx/eros")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15857,7 +16219,7 @@ interactive loop.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tuhdo/semantic-stickyfunc-enhance.git")
+               (url "https://github.com/tuhdo/semantic-stickyfunc-enhance")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -15881,7 +16243,7 @@ scroll up to read the function name and then scroll down to original position.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ryuslash/git-auto-commit-mode.git")
+             (url "https://github.com/ryuslash/git-auto-commit-mode")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -15927,7 +16289,7 @@ on drag distance.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/iquiw/company-restclient.git")
+             (url "https://github.com/iquiw/company-restclient")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15992,7 +16354,7 @@ through the symbol: @command{this-fn}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jacktasia/dumb-jump.git")
+             (url "https://github.com/jacktasia/dumb-jump")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -16037,7 +16399,7 @@ Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/bgamari/dts-mode.git")
+               (url "https://github.com/bgamari/dts-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -16085,7 +16447,7 @@ systems.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsmirror/isearch-plus.git")
+               (url "https://github.com/emacsmirror/isearch-plus")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -16207,7 +16569,7 @@ be changed by customizing the appropriate variables.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dengste/org-caldav.git")
+               (url "https://github.com/dengste/org-caldav")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -16233,7 +16595,7 @@ calendar.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/egh/zotxt-emacs.git")
+             (url "https://github.com/egh/zotxt-emacs")
              (commit "23a4a9f74a658222027d53a9a83cd4bcc583ca8b")))
        (file-name (git-file-name name version))
        (sha256
@@ -16335,7 +16697,7 @@ defaults.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gabesoft/evil-mc.git")
+               (url "https://github.com/gabesoft/evil-mc")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -16669,7 +17031,7 @@ from @code{emms-source-file-default-directory}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacs-helm/helm-exwm.git")
+             (url "https://github.com/emacs-helm/helm-exwm")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -16760,7 +17122,7 @@ projects unrelated to current-buffer.
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-helm/helm-mu.git")
+               (url "https://github.com/emacs-helm/helm-mu")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -17168,7 +17530,7 @@ and @code{C++} files through the @code{ccls} language server.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Kungsgeten/org-brain.git")
+             (url "https://github.com/Kungsgeten/org-brain")
              (commit "3faf9303af3f2356e3444e69c22dc6c5774047d1")))
        (file-name (git-file-name name version))
        (sha256
@@ -17265,7 +17627,7 @@ and 'text viewing modes' respectively.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sensorflo/adoc-mode.git")
+             (url "https://github.com/sensorflo/adoc-mode")
              (commit (string-append "V" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -17460,7 +17822,7 @@ buffer displays recursive dir sizes.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/stsquad/dired-rsync.git")
+                    (url "https://github.com/stsquad/dired-rsync")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -17777,7 +18139,7 @@ files are easily readable and they work nicely with version control systems.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/domtronn/all-the-icons.el.git")
+             (url "https://github.com/domtronn/all-the-icons.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -17816,7 +18178,7 @@ scaling of and anti aliasing of the icons.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/bcbcarl/emacs-wttrin.git")
+                      (url "https://github.com/bcbcarl/emacs-wttrin")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -17831,6 +18193,31 @@ scaling of and anti aliasing of the icons.")
 @url{wttr.in}.")
       (license license:expat))))
 
+(define-public emacs-browse-kill-ring
+  (let ((commit "1ef72cc6accd94cd7032c02b1b2c78ae7f1d1965")
+        (revision "0"))
+    (package
+      (name "emacs-browse-kill-ring")
+      (version (git-version "2.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/browse-kill-ring/browse-kill-ring")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0mil32g7hcw376jibs5hdyv00xbaql3m4a27rwqaafg0x59avxdj"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/browse-kill-ring/browse-kill-ring")
+      (synopsis "Interactively insert items from kill-ring")
+      (description
+       "Did you ever feel that @code{C-y M-y M-y M-y ...} is not a great way
+of trying to find that piece of text you know you killed a while back?  Then
+@code{browse-kill-ring.el} is for you.")
+      (license license:gpl2+))))
+
 (define-public emacs-powerline
   (package
     (name "emacs-powerline")
@@ -17839,7 +18226,7 @@ scaling of and anti aliasing of the icons.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/milkypostman/powerline.git")
+             (url "https://github.com/milkypostman/powerline")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -17861,7 +18248,7 @@ themes comes with the package.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/TheBB/spaceline.git")
+             (url "https://github.com/TheBB/spaceline")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -18031,7 +18418,7 @@ classes like @command{<gtk-window>}.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ShingoFukuyama/ov.el.git")
+                    (url "https://github.com/ShingoFukuyama/ov.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -18052,7 +18439,7 @@ Emacs.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/jgkamat/matrix-client-el.git")
+                      (url "https://github.com/jgkamat/matrix-client-el")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -18099,7 +18486,7 @@ RPC channels with users and other software.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vspinu/sesman.git")
+             (url "https://github.com/vspinu/sesman")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -18133,7 +18520,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jorgenschaefer/emacs-buttercup.git")
+             (url "https://github.com/jorgenschaefer/emacs-buttercup")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -18191,7 +18578,7 @@ too ambiguous and navigation in the result buffer.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alphapapa/frame-purpose.el.git")
+                    (url "https://github.com/alphapapa/frame-purpose.el")
                     (commit version)))
               (sha256
                (base32
@@ -18217,7 +18604,7 @@ other frame parameters.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/stardiviner/arduino-mode.git")
+                      (url "https://github.com/stardiviner/arduino-mode")
                       (commit commit)))
                 (sha256
                  (base32
@@ -18253,7 +18640,7 @@ other frame parameters.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/noctuid/annalist.el.git")
+                      (url "https://github.com/noctuid/annalist.el")
                       (commit commit)))
                 (sha256
                  (base32
@@ -18290,7 +18677,7 @@ advice to be recorded and displayed.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/noctuid/general.el.git")
+               (url "https://github.com/noctuid/general.el")
                (commit commit)))
          (sha256
           (base32 "0wn5rk3gkimdklip392mnjrmkymgrb7q9skifi03cbpjam1anzvv"))
@@ -18537,7 +18924,7 @@ to open SQLite databases.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/NixOS/nix-mode.git")
+             (url "https://github.com/NixOS/nix-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -18610,7 +18997,7 @@ stored playlists.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/akermu/emacs-libvterm.git")
+                      (url "https://github.com/akermu/emacs-libvterm")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -18675,7 +19062,7 @@ display a terminal in an Emacs buffer.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jorenvo/simple-mpc.git")
+               (url "https://github.com/jorenvo/simple-mpc")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -18720,7 +19107,7 @@ indentation and a command to plot the file.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Lindydancer/cmake-font-lock.git")
+                      (url "https://github.com/Lindydancer/cmake-font-lock")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19035,7 +19422,7 @@ constant expressions.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/spotify/dockerfile-mode.git")
+               (url "https://github.com/spotify/dockerfile-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -19054,30 +19441,31 @@ the standard @code{Dockerfile} file format.")
 (define-public emacs-lsp-mode
   (package
     (name "emacs-lsp-mode")
-    (version "6.3.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/emacs-lsp/lsp-mode.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "125rpmhlyd6wmq7p71j54x3rzmk07vn1hdcvvdjjip5481raxcwx"))))
+    (version "7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-lsp/lsp-mode")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kw32dcm73i0kg1fncp6vwgar3dwva7dh3gkg5cr45gavn6rq34i"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
        ("emacs-f" ,emacs-f)
        ("emacs-ht" ,emacs-ht)
+       ("emacs-hydra" ,emacs-hydra)
        ("emacs-markdown-mode" ,emacs-markdown-mode)
-       ("emacs-spinner" ,emacs-spinner)
-       ("emacs-hydra" ,emacs-hydra)))
-    (home-page "https://github.com/emacs-lsp/lsp-mode")
+       ("emacs-spinner" ,emacs-spinner)))
+    (home-page "https://emacs-lsp.github.io/lsp-mode/")
     (synopsis "Emacs client and library for the Language Server Protocol")
-    (description "@code{LSP-mode} is a client and library implementation for
-the Language Server Protocol.  This mode aims to provide an IDE-like
-experience by providing optional integration with other popular Emacs packages
-like @code{company}, @code{flycheck}, and @code{projectile}.")
+    (description
+     "LSP mode is a client and library implementation for the Language Server
+Protocol.  This mode creates an IDE-like experience by providing optional
+integration with other popular Emacs packages like Company, Flycheck, and
+Projectile.")
     (license license:gpl3+)))
 
 (define-public emacs-pfuture
@@ -19088,7 +19476,7 @@ like @code{company}, @code{flycheck}, and @code{projectile}.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Alexander-Miller/pfuture.git")
+                      (url "https://github.com/Alexander-Miller/pfuture")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19109,7 +19497,7 @@ processes for Emacs")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Alexander-Miller/treemacs.git")
+                    (url "https://github.com/Alexander-Miller/treemacs")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -19203,6 +19591,58 @@ processes for Emacs")
              (lambda _
                (copy-recursively "../extra" ".")))))))))
 
+(define-public emacs-libyaml
+  ;; Upstream made no release so far.
+  (let ((version "0")
+        (revision "1")
+        (commit "703e0d448c7ee24e25b513a3c65980c80e166805"))
+    (package
+      (name "emacs-libyaml")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/syohex/emacs-libyaml")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "08l7pm9v50ykd3fkbm0bh2kcd57cadbc5i9r6rj51vd32w3pl2yl"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:tests? #f                    ;no test
+         #:modules ((guix build emacs-build-system)
+                    (guix build emacs-utils)
+                    (guix build utils))
+         #:imported-modules (,@%emacs-build-system-modules
+                             (guix build gnu-build-system))
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'add-source-to-load-path 'substitute-libyaml-core-path
+             (lambda* (#:key outputs #:allow-other-keys)
+               (chmod "libyaml.el" #o644)
+               (substitute* "libyaml.el"
+                 (("^\\(require 'libyaml-core\\)")
+                  (string-append "(module-load \"" (assoc-ref outputs "out")
+                                 "/lib/libyaml-core.so\")")))
+               #t))
+           (add-after 'check 'make
+             ;; Run make.
+             (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
+               ;; Compile the shared object file.
+               (apply invoke "make" "all" "CPPFLAGS=" make-flags)
+               ;; Move the file into /lib.
+               (install-file "libyaml-core.so"
+                             (string-append (assoc-ref outputs "out") "/lib"))
+               #t)))))
+      (native-inputs `(("libyaml" ,libyaml)))
+      (home-page "https://github.com/syohex/emacs-libyaml")
+      (synopsis "Libyaml bindings for Emacs")
+      (description
+       "This package implements bindings for LibYAML to be able to parse YAML
+files in Elisp.")
+      (license license:gpl3+))))
+
 (define-public emacs-lsp-java
   (package
     (name "emacs-lsp-java")
@@ -19210,7 +19650,7 @@ processes for Emacs")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/emacs-lsp/lsp-java.git")
+                    (url "https://github.com/emacs-lsp/lsp-java")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -19237,7 +19677,7 @@ processes for Emacs")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/emacs-lsp/lsp-ui.git")
+                    (url "https://github.com/emacs-lsp/lsp-ui")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -19265,7 +19705,7 @@ and code peeking.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/phenix3443/lsp-lua-emmy.git")
+                      (url "https://github.com/phenix3443/lsp-lua-emmy")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19289,7 +19729,7 @@ and code peeking.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/emacs-lsp/lsp-ivy.git")
+                      (url "https://github.com/emacs-lsp/lsp-ivy")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19316,7 +19756,7 @@ workspaces with a LSP-compliant server running.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/emacs-lsp/helm-lsp.git")
+                      (url "https://github.com/emacs-lsp/helm-lsp")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19436,7 +19876,7 @@ commands (a prefix and a suffix) we prefer to call it just a \"transient\".")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/magit/forge.git")
+               (url "https://github.com/magit/forge")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -19482,7 +19922,7 @@ comfort of Magit and the rest of Emacs.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/jojojames/matcha.git")
+                      (url "https://github.com/jojojames/matcha")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -19798,7 +20238,7 @@ compatible with Emacs' shell modes.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/justbur/emacs-vdiff.git")
+               (url "https://github.com/justbur/emacs-vdiff")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -19875,9 +20315,9 @@ be used in @code{dired-mode}.")
       (license license:gpl3+))))
 
 (define-public emacs-exwm-edit
-  (let ((commit "bc25ba094b383be3c650ca0b7e1534efe2bb154f")
+  (let ((commit "e1291e311840f1049106fe98cec032a1c75efd2b")
         (version "0.0.1")
-        (revision "2"))
+        (revision "3"))
     (package
       (name "emacs-exwm-edit")
       (version (git-version version revision commit))
@@ -19890,7 +20330,7 @@ be used in @code{dired-mode}.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv"))))
+           "031cb8fvv5n30djr9lpl6vz3rl15zykfvjlgkjc8l33a3l5mw8j0"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-exwm" ,emacs-exwm)))
@@ -20146,7 +20586,7 @@ previewed by scrolling up and down within a @code{dired} buffer.")
 (define-public emacs-counsel-etags
   (package
     (name "emacs-counsel-etags")
-    (version "1.8.9")
+    (version "1.9.11")
     (source
      (origin
        (method git-fetch)
@@ -20155,11 +20595,10 @@ previewed by scrolling up and down within a @code{dired} buffer.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0rmdl93kgyydwa96yclds9vwly41bpk8v18cbqc1x266w6v77dr9"))))
+        (base32 "0h0br41vkrx9l7bqr55bafqd715drxxwm41qif6iffhgdpvf69ym"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-ivy" ,emacs-ivy)))
+     `(("emacs-counsel" ,emacs-counsel)))
     (arguments
      `(#:tests? #t
        #:test-command '("make" "test")))
@@ -20177,7 +20616,7 @@ and searching through @code{Ctags} files.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/wpcarro/ivy-clipmenu.el.git")
+                      (url "https://github.com/wpcarro/ivy-clipmenu.el")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -20227,7 +20666,7 @@ copied into @code{org-mode} buffers.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dash-docs-el/dash-docs.git")
+               (url "https://github.com/dash-docs-el/dash-docs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -20274,7 +20713,7 @@ copied into @code{org-mode} buffers.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/areina/helm-dash.git")
+               (url "https://github.com/areina/helm-dash")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -20291,8 +20730,8 @@ Dash docsets.")
       (license license:gpl3+))))
 
 (define-public emacs-counsel-dash
-  (let ((commit "7027868d483b51d949b9f20fb8f34b122ca61520")
-        (revision "3"))
+  (let ((commit "370d5f6f14b5294d0eb717f7b2a6a8e93df1ed24")
+        (revision "4"))
     (package
       (name "emacs-counsel-dash")
       (version (git-version "0.1.3" revision commit))
@@ -20300,31 +20739,53 @@ Dash docsets.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dash-docs-el/counsel-dash.git")
+               (url "https://github.com/dash-docs-el/counsel-dash")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32
-           "0h3f5pxnmb21pq4hh7k4w8jzflz1k2ap7nwpjc222w0q6x6jrbjp"))))
+          (base32 "1fn38vbz46ijarjvhgw7iy7dj9s2a2miy95fyy9f8b5sj8nrdfvz"))))
       (build-system emacs-build-system)
       (propagated-inputs
-       `(("emacs-dash-docs" ,emacs-dash-docs)
-         ("emacs-ivy" ,emacs-ivy)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'require-ivy
-             (lambda _
-               (substitute* "counsel-dash.el"
-                 (("^\\(require 'cl-lib\\)")
-                  "(require 'cl-lib)\n(require 'ivy)\n(require 'subr-x)"))
-               #t)))))
+       `(("emacs-counsel" ,emacs-counsel)
+         ("emacs-dash-docs" ,emacs-dash-docs)))
       (home-page "https://github.com/dash-docs-el/counsel-dash")
       (synopsis "Offline documentation browser for APIs using Dash docsets")
       (description "This package uses @code{ivy-mode} to install and navigate
 through Dash docsets.")
       (license license:expat))))
 
+(define-public emacs-calibredb
+  (package
+    (name "emacs-calibredb")
+    (version "2.4.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/chenyanming/calibredb.el")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0c6y3n51djajhfj4k6g0r58brls0fhyw6d7c6h4zi5jl1hw64vj6"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-org" ,emacs-org)
+       ("emacs-s" ,emacs-s)
+       ("emacs-transient" ,emacs-transient)))
+    (home-page "https://github.com/chenyanming/calibredb.el")
+    (synopsis "Yet another calibre client for Emacs")
+    (description "This package integrates calibre into Emacs.
+@enumerate
+@item Powerful ebook dashboard.
+@item Manage ebooks, actually not only ebooks!
+@item Manage Ebook libraries.
+@item Another bookmarks solution, by setting the tags and comments.
+@item Quick search, filter, make actions on items with ivy and helm.
+@item Org-ref support.
+@end enumerate")
+    (license license:gpl3)))
+
 (define-public emacs-el-patch
   (package
     (name "emacs-el-patch")
@@ -20396,7 +20857,7 @@ well as an option for visually flashing evaluated s-expressions.")
 (define-public emacs-counsel-tramp
   (package
     (name "emacs-counsel-tramp")
-    (version "0.6.3")
+    (version "0.7.5")
     (source
      (origin
        (method git-fetch)
@@ -20405,28 +20866,27 @@ well as an option for visually flashing evaluated s-expressions.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1qy9lf7cyv6hp9mmpwh92cpdcffbxzyzchx6878d5pmk9qh6xy92"))))
+        (base32 "18qlwyjqxap2qfbz14ma6yqp4p3v4q2y8idc355s4szjdd2as2lr"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("emacs-ivy" ,emacs-ivy)))
+     `(("emacs-counsel" ,emacs-counsel)))
     (home-page "https://github.com/masasam/emacs-counsel-tramp")
     (synopsis "Ivy interface for TRAMP")
-    (description "This package allows @code{ivy-mode} to display and filter
-SSH servers.")
+    (description
+     "This package allows @code{ivy-mode} to display and filter SSH servers.")
     (license license:gpl3+)))
 
 (define-public emacs-tramp
   (package
     (name "emacs-tramp")
-    (version "2.4.3.5")
+    (version "2.4.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "tramp-" version ".tar"))
        (sha256
-        (base32 "14djizi4ivwv4ad4nymday86jbh45w14wdhlm96743ffwr45dd2m"))))
+        (base32 "0kdpcrg3iqnfvg1a1spkkngygjddmp2dgz0rcvdccdlfr0hn27c2"))))
     (build-system emacs-build-system)
     (arguments
      `(#:emacs ,emacs                   ;need D-Bus
@@ -20462,7 +20922,7 @@ programs, such as @command{ssh} and @command{scp}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/oitofelix/tramp-auto-auth.git")
+               (url "https://github.com/oitofelix/tramp-auto-auth")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -20658,7 +21118,7 @@ It is a fork of https://github.com/cofi/evil-numbers, which is unmaintained.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/nschum/rotate-text.el.git")
+                    (url "https://github.com/nschum/rotate-text.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -20707,7 +21167,7 @@ context, carry out the appropriate action.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/luxbock/evil-cleverparens.git")
+                      (url "https://github.com/luxbock/evil-cleverparens")
                       (commit commit)))
                 (sha256 (base32 "0lhnybpnk4n2yhlcnj9zxn0vi5hpjfaqfhvyfy7ckzz74g8v7iyw"))
                 (file-name (git-file-name name version))))
@@ -20734,7 +21194,7 @@ corresponding Evil keys.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/mamapanda/evil-traces.git")
+                      (url "https://github.com/mamapanda/evil-traces")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -20816,7 +21276,7 @@ work.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/atomontage/xterm-color.git")
+                    (url "https://github.com/atomontage/xterm-color")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -20837,7 +21297,7 @@ text-property translator.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/weirdNox/org-noter.git")
+              (url "https://github.com/weirdNox/org-noter")
               (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -20863,7 +21323,7 @@ acting like notes that are made @emph{in} the document.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/gongo/org-redmine.git")
+                      (url "https://github.com/gongo/org-redmine")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -20886,7 +21346,7 @@ acting like notes that are made @emph{in} the document.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/manateelazycat/multi-term.git")
+               (url "https://github.com/manateelazycat/multi-term")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -20913,7 +21373,7 @@ it forcibly
 (define-public emacs-elpher
   (package
     (name "emacs-elpher")
-    (version "2.7.9")
+    (version "2.9.1")
     (source
      (origin
        (method git-fetch)
@@ -20922,8 +21382,7 @@ it forcibly
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1vikzia87z5x3wx2qjihv0r2f29b7s9xkm6i1j0y646dwnzn6wzr"))))
+        (base32 "0vyqmv7dycmad1726yb6yizd21x3kkz5cj33mca11r8nh38f1qzp"))))
     (build-system emacs-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)))
@@ -20978,7 +21437,7 @@ An optional mode-line format can be enabled with @code{zerodark-setup-modeline-f
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hexmode/gnus-alias.git")
+                    (url "https://github.com/hexmode/gnus-alias")
                     (commit "9447d3ccb4c0e75d0468899cccff7aa249657bac")))
               (file-name (git-file-name name version))
               (sha256
@@ -21008,7 +21467,7 @@ message.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ofosos/ox-epub.git")
+                    (url "https://github.com/ofosos/ox-epub")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -21032,7 +21491,7 @@ zip utility (default is @code{zip}).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kaushalmodi/ox-hugo.git")
+             (url "https://github.com/kaushalmodi/ox-hugo")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -21054,7 +21513,7 @@ format.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/kawabata/ox-pandoc.git")
+                    (url "https://github.com/kawabata/ox-pandoc")
                     (commit "aa37dc7e94213d4ebedb85c384c1ba35007da18e")))
               (file-name (git-file-name name version))
               (sha256
@@ -21079,7 +21538,7 @@ files to numerous other formats via Pandoc.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bnbeckwith/wc-mode.git")
+                    (url "https://github.com/bnbeckwith/wc-mode")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -21103,7 +21562,7 @@ time.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jdenen/mastodon.el.git")
+                    (url "https://github.com/jdenen/mastodon.el")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -21155,7 +21614,7 @@ Lisp's (relatively new) EIEIO object oriented libraries.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Wilfred/emacs-refactor.git")
+                    (url "https://github.com/Wilfred/emacs-refactor")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -21183,7 +21642,7 @@ a variety of languages, including elisp itself.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/d12frosted/flyspell-correct.git")
+             (url "https://github.com/d12frosted/flyspell-correct")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -21241,7 +21700,7 @@ contains a track position, playback will start at the specified position.")
     (origin
      (method git-fetch)
      (uri (git-reference
-           (url "https://github.com/ahungry/org-jira.git")
+           (url "https://github.com/ahungry/org-jira")
            (commit version)))
      (file-name (git-file-name name version))
      (sha256
@@ -21267,7 +21726,7 @@ JIRA issue servers.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/holomorph/systemd-mode.git")
+                    (url "https://github.com/holomorph/systemd-mode")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -21293,7 +21752,7 @@ JIRA issue servers.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/jhgorrell/ssh-config-mode-el.git")
+           (url "https://github.com/jhgorrell/ssh-config-mode-el")
            (commit commit)))
          (file-name (git-file-name name commit))
          (sha256
@@ -21317,7 +21776,7 @@ keybindings for skipping from host section to host section.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/magit/ssh-agency.git")
+                    (url "https://github.com/magit/ssh-agency")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -21348,7 +21807,7 @@ passphrase until the first time you push to a remote.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/11111000000/tao-theme-emacs.git")
+               (url "https://github.com/11111000000/tao-theme-emacs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -21377,7 +21836,7 @@ You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cryon/almost-mono-themes.git")
+               (url "https://github.com/cryon/almost-mono-themes")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -21401,7 +21860,7 @@ You can customize: @code{tao-theme-scale-fn}, that returns 16 2-digit numbers;
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lbolla/emacs-quasi-monochrome.git")
+               (url "https://github.com/lbolla/emacs-quasi-monochrome")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -21425,7 +21884,7 @@ contrast and few colors.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/hlissner/emacs-doom-themes.git")
+                      (url "https://github.com/hlissner/emacs-doom-themes")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -21484,14 +21943,14 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-operandi-theme
   (package
     (name "emacs-modus-operandi-theme")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "modus-operandi-theme-" version ".el"))
        (sha256
-        (base32 "0wzwhzpw5g719xxz58v5bjqb8gdz1xzqwxslgm9cng4y3hwy3igh"))))
+        (base32 "1r6dkfdd967zw1nw58nlw7y1r9x8lcbr5gvjfbcbrw0agh87wb40"))))
     (build-system emacs-build-system)
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible light theme (WCAG AAA)")
@@ -21505,14 +21964,14 @@ standard.  This is the highest standard of its kind.")
 (define-public emacs-modus-vivendi-theme
   (package
     (name "emacs-modus-vivendi-theme")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "modus-vivendi-theme-" version ".el"))
        (sha256
-        (base32 "0f6cd93q9vrxfmgg6ff85ixcmq6acvrirb3kwgkf7qv16w3ipcir"))))
+        (base32 "1kk8q5lrl69ysawnk2iymqmmcsad884kx691hjf2zdj6fskd070g"))))
     (build-system emacs-build-system)
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible dark theme (WCAG AAA)")
@@ -21536,7 +21995,7 @@ standard.  This is the highest standard of its kind.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/wasamasa/punpun-theme.git")
+               (url "https://github.com/wasamasa/punpun-theme")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -21560,7 +22019,7 @@ color.  Designed for 256-color terminals.  Comes in light and dark!")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/nashamri/spacemacs-theme.git")
+               (url "https://github.com/nashamri/spacemacs-theme")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -21583,7 +22042,7 @@ and it should work well with 256 color terminals.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/elixir-editors/emacs-elixir.git")
+             (url "https://github.com/elixir-editors/emacs-elixir")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -21607,7 +22066,7 @@ and it should work well with 256 color terminals.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gonewest818/dimmer.el.git")
+             (url "https://github.com/gonewest818/dimmer.el")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -21782,7 +22241,7 @@ Google guidelines.")
 (define-public emacs-helm-fish-completion
   (package
     (name "emacs-helm-fish-completion")
-    (version "0.4")
+    (version "0.5")
     (home-page "https://github.com/emacs-helm/helm-fish-completion")
     (source
      (origin
@@ -21792,7 +22251,7 @@ Google guidelines.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0mh10qq3r16hjrayrbns51gmjpjnmpzy4i05rwn14rf2icvhs6x8"))))
+        (base32 "0hpsm39kx8vpz2zmarjrkvy1capkk5lwpsmdg2xnklsck6xsn922"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("helm" ,emacs-helm)
@@ -21806,9 +22265,9 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
   ;; This package has versions newer than indicated on MELPA.
   ;; Get the current version from `telega-version` in telega.el.
   ;; or by running M-x telega-version.
-  (let ((commit "ae09592498ce380e57fbb76725fd4c89ae248864")
-	(revision "0")
-	(version "0.6.0"))
+  (let ((commit "5c39c3a81e48222911db75ae30e5a8f8fa34efb5")
+	(revision "3")
+	(version "0.6.27"))
     (package
       (name "emacs-telega")
       (version (git-version version revision commit))
@@ -21816,12 +22275,14 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/zevlg/telega.el.git")
+               (url "https://github.com/zevlg/telega.el")
                (commit commit)))
          (sha256
           (base32
-           "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"))
-         (patches (search-patches "emacs-telega-test-env.patch"))
+           "0wyycgsb1ja73phs9a2dgi50m2p6sdvx3xdwclfyijx4hzwlv233"))
+         (patches (search-patches
+                   "emacs-telega-patch-server-functions.patch"
+                   "emacs-telega-test-env.patch"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -21833,7 +22294,13 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                              (guix build emacs-build-system)
                              (guix build emacs-utils))
          #:test-target "test"
-         #:make-flags (list "WITH_VOIP=t")
+         ;; TODO: Currently tgVOIP is not functional, thus we have disabled it
+         ;; temporarily. This functionality when enabled causes an erroneous
+         ;; linkage with libtgvoip.so and libopus.so (FFMPEG) against the
+         ;; system libraries on "foreign" distros. When tgVOIP becomes functional
+         ;; this needs to be investigated to prevent a linkage issue.
+         ;; Re-add libtgvoip to native-inputs at that time.
+         ;; #:make-flags (list "WITH_VOIP=t")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'prefix-patch
@@ -21848,7 +22315,7 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                  (("python3 run_tests.py")
                   ""))
                #t))
-           (add-after 'unpack 'telega-paths-patch
+           (add-after 'check 'telega-paths-patch
              (lambda* (#:key inputs #:allow-other-keys)
                ;; Hard-code paths to `ffplay` and `ffmpeg`.
                (let ((ffplay-bin (string-append (assoc-ref inputs "ffmpeg")
@@ -21871,6 +22338,13 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                   "(concat \"telega-data/\" filename)
                     (locate-dominating-file telega--lib-directory
                                             \"telega-data\")"))
+               ;; Modify telega.el to reflect unique dir name in
+               ;; `telega-install-contrib' phase.
+               (substitute* "telega.el"
+                 (("\\(push \\(expand-file-name \"contrib\" telega--lib-directory\\) load-path\\)")
+                  "(push (expand-file-name \"telega-contrib\"
+                     (locate-dominating-file telega--lib-directory
+                                             \"telega-contrib\")) load-path)"))
                #t))
            ;; The server test suite has a hardcoded path.
            ;; Reset this behavior to use the proper path.
@@ -21889,7 +22363,16 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
            ;; Build emacs-side using `emacs-build-system'
            (add-after 'compress-documentation 'emacs-add-source-to-load-path
              (assoc-ref emacs:%standard-phases 'add-source-to-load-path))
-           (add-after 'emacs-add-source-to-load-path 'emacs-install
+	   ;; Manually invoke bytecompilation for the contrib
+	   ;; subdirectory.
+           (add-after 'emacs-add-source-to-load-path 'emacs-bytecomp-contrib
+             (lambda _
+	       (substitute* "Makefile"
+                 (("byte-recompile-directory \".\"")
+                  "byte-recompile-directory \"contrib\""))
+               (invoke "make" "compile")
+	       #t))
+           (add-after 'emacs-bytecomp-contrib 'emacs-install
              (assoc-ref emacs:%standard-phases 'install))
            ;; This step installs subdir /etc, which contains images, sounds and
            ;; various other data, next to the site-lisp dir.
@@ -21900,19 +22383,27 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                 (string-append (assoc-ref outputs "out")
                                "/share/emacs/telega-data/"))
                #t))
-           (add-after 'telega-install-data 'emacs-build
+           (add-after 'emacs-install 'telega-install-contrib
+             (lambda* (#:key outputs #:allow-other-keys)
+               (copy-recursively
+                "contrib"
+                (string-append (assoc-ref outputs "out")
+                               "/share/emacs/telega-contrib"))
+               #t))
+           (add-after 'telega-install-contrib 'emacs-build
              (assoc-ref emacs:%standard-phases 'build))
-           (add-after 'emacs-build 'emacs-make-autoloads
+           (add-after 'telega-install-contrib 'emacs-make-autoloads
              (assoc-ref emacs:%standard-phases 'make-autoloads)))))
       (inputs
        `(("ffmpeg" ,ffmpeg))) ; mp4/gif support.
       (propagated-inputs
        `(("emacs-visual-fill-column" ,emacs-visual-fill-column)
          ("emacs-company" ,emacs-company)
+         ("emacs-rainbow-identifiers"
+          ,emacs-rainbow-identifiers)
          ("libwebp" ,libwebp))) ; sticker support.
       (native-inputs
        `(("tdlib" ,tdlib)
-         ("libtgvoip" ,libtgvoip) ; VoIP support.
          ;; Use Emacs with wide ints on 32-bit architectures.
          ("emacs" ,(match (%current-system)
                      ((or "i686-linux" "armhf-linux")
@@ -21934,7 +22425,7 @@ Telegram messaging platform.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/seagle0128/doom-modeline.git")
+                    (url "https://github.com/seagle0128/doom-modeline")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -21988,7 +22479,7 @@ Fish-style truncated directories in eshell and various modelines.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rlister/org-present.git")
+               (url "https://github.com/rlister/org-present")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22011,7 +22502,7 @@ each slide with left/right keys.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tomterl/fullframe.git")
+             (url "https://github.com/tomterl/fullframe")
              (commit version)))
        (sha256
         (base32
@@ -22034,7 +22525,7 @@ execution of buffer-exposing commands.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/4DA/eshell-toggle.git")
+               (url "https://github.com/4DA/eshell-toggle")
                (commit commit)))
          (sha256
           (base32
@@ -22057,7 +22548,7 @@ current buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tomterl/repl-toggle.git")
+             (url "https://github.com/tomterl/repl-toggle")
              (commit version)))
        (sha256
         (base32
@@ -22072,6 +22563,53 @@ current buffer.")
 REPL appropriate to the current major mode.")
     (license license:gpl3+)))
 
+(define-public emacs-rime
+  (package
+    (name "emacs-rime")
+    (version "1.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/DogLooksGood/emacs-rime")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08rzkiqwcl8j3i2yyibll5lcsj8720plzm9zfdgmxgkw7vhcyix5"))))
+    (build-system emacs-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-rime-data-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (make-file-writable "rime.el")
+             (emacs-substitute-variables "rime.el"
+               ("rime-share-data-dir"
+                (string-append (assoc-ref inputs "rime-data")
+                               "/share/rime-data")))
+             #t))
+         (add-before 'install 'build-emacs-module
+           (lambda _
+             (invoke "make" "lib")))
+         (add-after 'install 'install-emacs-module
+           (lambda* (#:key outputs #:allow-other-keys)
+             (install-file "librime-emacs.so"
+                           (string-append (assoc-ref outputs "out")
+                                          "/share/emacs/site-lisp"))
+             #t)))))
+    (inputs
+     `(("librime" ,librime)
+       ("rime-data" ,rime-data)))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-popup" ,emacs-popup)
+       ("emacs-posframe" ,emacs-posframe)))
+    (home-page "https://github.com/DogLooksGood/emacs-rime")
+    (synopsis "Rime input method in Emacs")
+    (description
+     "Rime is an Emacs input method built upon Rime input method engine.")
+    (license license:gpl3+)))
+
 (define-public emacs-blackout
   (let ((commit "4bac44671fca4c98d96aa94c79946bf4d4baf0ee")
         (revision "1"))
@@ -22082,7 +22620,7 @@ REPL appropriate to the current major mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/raxod502/blackout.git")
+               (url "https://github.com/raxod502/blackout")
                (commit commit)))
          (sha256
           (base32
@@ -22105,7 +22643,7 @@ display of major and minor modes in the mode line.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/akirak/ivy-omni-org.git")
+               (url "https://github.com/akirak/ivy-omni-org")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22130,7 +22668,7 @@ interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tumashu/ivy-posframe.git")
+               (url "https://github.com/tumashu/ivy-posframe")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22157,7 +22695,7 @@ posframe to show its candidate menu.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/wasamasa/shackle.git")
+               (url "https://github.com/wasamasa/shackle")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22180,7 +22718,7 @@ can specify how popup-displaying functions occupy the screen.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacs-helm/helm-lacarte.git")
+               (url "https://github.com/emacs-helm/helm-lacarte")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22207,7 +22745,7 @@ items.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tom-tan/esh-help.git")
+               (url "https://github.com/tom-tan/esh-help")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22232,7 +22770,7 @@ by @code{zsh} as well as @code{eldoc} support.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Dewdrops/isearch-dabbrev.git")
+               (url "https://github.com/Dewdrops/isearch-dabbrev")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22255,7 +22793,7 @@ within @code{isearch-mode}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Akirak/helm-linux-disks.git")
+               (url "https://github.com/Akirak/helm-linux-disks")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22280,7 +22818,7 @@ on removable volumes in Linux.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/thierryvolpiatto/psession.git")
+               (url "https://github.com/thierryvolpiatto/psession")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22303,7 +22841,7 @@ data, including buffers, window configuration, variables, and more.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure-emacs/parseedn.git")
+             (url "https://github.com/clojure-emacs/parseedn")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -22328,7 +22866,7 @@ It uses parseclj's shift-reduce parser internally.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clojure-emacs/parseclj.git")
+             (url "https://github.com/clojure-emacs/parseclj")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -22351,7 +22889,7 @@ same shift-reduce parser function.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hlissner/emacs-hide-mode-line.git")
+                    (url "https://github.com/hlissner/emacs-hide-mode-line")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -22451,6 +22989,79 @@ pattern guessed from thing under current cursor position.
 @end itemize\n")
       (license license:gpl3+))))
 
+(define-public emacs-helm-selector
+  (package
+    (name "emacs-helm-selector")
+    (version "0.2")
+    (home-page "https://github.com/emacs-helm/helm-selector")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1c7xhrq1mivldyq3rglpmfypbz44dcm7zrgyha6x09cfixlyfbcp"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
+    (synopsis "Convenient related-buffer selection for Emacs Helm")
+    (description "Helm Selector is a collection of Helm helper functions for
+convenient buffer selection.
+
+It is especially helpful to create Helm sessions to navigate buffers of a
+given mode in a “do what I mean” fashion:
+
+If current buffer is not of mode X, switch to last buffer of mode X.  If
+current buffer is of mode X, show a Helm session of all buffers in mode X.  In
+the Helm session, it’s also possible to input an arbitrary name which will be
+used for the creation of a new buffer of mode X.")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-wordnut
+  (let ((commit "9681a9535a839cd5d042c302945ae595852fe7bf"))
+    (package
+      (name "emacs-helm-wordnut")
+      (version (git-version "0.1" "1" commit))
+      (home-page "https://github.com/emacs-helm/helm-wordnut")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0msj7nbsb363pxamxi7n2z08cp5jizkpjbwia8f5a161wjglrihs"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("wordnet" ,wordnet)))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'configure
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((wn (assoc-ref inputs "wordnet")))
+                 ;; .el is read-only in git.
+                 (chmod "helm-wordnut.el" #o644)
+                 ;; Specify the absolute file names of the various
+                 ;; programs so that everything works out-of-the-box.
+                 (emacs-substitute-variables "helm-wordnut.el"
+                   ("helm-wordnut-prog" (string-append wn "/bin/wn"))
+                   ("helm-wordnut-wordnet-location"
+                    (string-append wn "/dict")))))))))
+      (synopsis "Emacs Helm interface for Wordnet")
+      (description "This package is merely a combination of two other Emacs
+packages: @code{helm-wordnet} and @code{wordnut}.  It features word completion
+with Helm and displays a buffer of all the different result types available to
+Wordnet.")
+      (license license:gpl3+))))
+
 (define-public emacs-metal-mercury-mode
   (let ((commit "99e2d8fb7177cae3bfa2dec2910fc28216d5f5a8")
 	(revision "1")
@@ -22462,7 +23073,7 @@ pattern guessed from thing under current cursor position.
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ahungry/metal-mercury-mode.git")
+               (url "https://github.com/ahungry/metal-mercury-mode")
                (commit commit)))
          (sha256
           (base32
@@ -22489,7 +23100,7 @@ mercury-mode provided by Emacs as a wrapper around prolog-mode.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/davep/boxquote.el.git")
+               (url "https://github.com/davep/boxquote.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22511,7 +23122,7 @@ example code.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lukhas/buffer-move.git")
+             (url "https://github.com/lukhas/buffer-move")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -22559,7 +23170,7 @@ by Jan Tatarik.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/alezost/mwim.el.git")
+               (url "https://github.com/alezost/mwim.el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22575,14 +23186,14 @@ comment.")
 (define-public emacs-delight
   (package
     (name "emacs-delight")
-    (version "1.5")
+    (version "1.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "delight-" version ".el"))
        (sha256
-        (base32 "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7"))))
+        (base32 "0pihsghrf9xnd1kqlq48qmjcmp5ra95wwwgrb3l8m1wagmmc0bi1"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/delight.html")
     (synopsis "Dimmer switch for your mode-line lighter text")
@@ -22603,7 +23214,7 @@ mode-line text (lighter) of major and minor modes.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/EricCrosson/unkillable-scratch.git")
+               (url "https://github.com/EricCrosson/unkillable-scratch")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22623,7 +23234,7 @@ matching a given regexp.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/10sr/switch-buffer-functions-el.git")
+             (url "https://github.com/10sr/switch-buffer-functions-el")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -22671,7 +23282,7 @@ to emulate @code{scrolltobottom} while @code{keep-place} is enabled.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lujun9972/el-dmenu.git")
+               (url "https://github.com/lujun9972/el-dmenu")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22692,7 +23303,7 @@ launching other commands/applications from within Emacs, similar to the
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emacscollective/no-littering.git")
+             (url "https://github.com/emacscollective/no-littering")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -22716,7 +23327,7 @@ files and subdirectories when appropriate.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wentasah/meson-mode.git")
+             (url "https://github.com/wentasah/meson-mode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -22741,7 +23352,7 @@ cases where it breaks.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emacsmirror/message-x.git")
+               (url "https://github.com/emacsmirror/message-x")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22793,7 +23404,7 @@ fontifications.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jwiegley/gnus-harvest.git")
+               (url "https://github.com/jwiegley/gnus-harvest")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -22979,7 +23590,7 @@ Files} (@url{http://tools.ietf.org/html/rfc4180}).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bastibe/org-journal.git")
+             (url "https://github.com/bastibe/org-journal")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -23134,7 +23745,7 @@ snippets for Emacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jethrokuan/org-roam.git")
+             (url "https://github.com/jethrokuan/org-roam")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -23168,7 +23779,7 @@ personal wiki.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ianxm/emacs-uml.git")
+               (url "https://github.com/ianxm/emacs-uml")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -23263,7 +23874,7 @@ or region and use of locally installed binaries.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/kyagi/shell-pop-el.git")
+               (url "https://github.com/kyagi/shell-pop-el")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 9be1065de2..e3a9017ba5 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -596,7 +596,7 @@ with a layered architecture of JTAG interface and TAP support.")
       (source (origin (inherit (package-source xbinutils))
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/parallaxinc/propgcc.git")
+                      (url "https://github.com/parallaxinc/propgcc")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -632,7 +632,7 @@ with a layered architecture of JTAG interface and TAP support.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/totalspectrum/gcc-propeller.git")
+                      (url "https://github.com/totalspectrum/gcc-propeller")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -667,7 +667,7 @@ with a layered architecture of JTAG interface and TAP support.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/parallaxinc/propgcc.git")
+                      (url "https://github.com/parallaxinc/propgcc")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -709,7 +709,7 @@ with a layered architecture of JTAG interface and TAP support.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/parallaxinc/propgcc.git")
+                      (url "https://github.com/parallaxinc/propgcc")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -828,7 +828,7 @@ code.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/parallaxinc/propgcc.git")
+                      (url "https://github.com/parallaxinc/propgcc")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -913,7 +913,7 @@ larger).")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/parallaxinc/spinsim.git")
+                      (url "https://github.com/parallaxinc/spinsim")
                       (commit commit)))
                 (file-name (string-append name "-" commit "-checkout"))
                 (sha256
@@ -969,7 +969,7 @@ simulator.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/puppeh/binutils-vc4.git")
+                       (url "https://github.com/puppeh/binutils-vc4")
                        (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -997,7 +997,7 @@ simulator.")
           ,(origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/puppeh/cgen.git")
+                       (url "https://github.com/puppeh/cgen")
                        (commit "d8e2a9eb70425f180fdd5bfd032884b0855f2032")))
                 (sha256
                  (base32
@@ -1021,7 +1021,7 @@ the Raspberry Pi chip.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/puppeh/gcc-vc4.git")
+                      (url "https://github.com/puppeh/gcc-vc4")
                       (commit commit)))
                 (file-name (string-append name
                                           "-"
@@ -1045,7 +1045,7 @@ the Raspberry Pi chip."))))
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/daym/libmpsse.git")
+              (url "https://github.com/daym/libmpsse")
               (commit (string-append "v" version))))
         (file-name "libmpsse-checkout")
         (sha256
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 0e83d7e82c..8175301c25 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -48,6 +48,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages digest)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
@@ -139,7 +140,7 @@
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dolphin-emu/dolphin.git")
+               (url "https://github.com/dolphin-emu/dolphin")
                (commit commit)))
          (file-name (git-file-name name version))
          (modules '((guix build utils)))
@@ -288,7 +289,7 @@ older games.")
       (source (origin
                 (method git-fetch) ; no tarball available
                 (uri (git-reference
-                      (url "https://github.com/Aloshi/EmulationStation.git")
+                      (url "https://github.com/Aloshi/EmulationStation")
                       (commit commit))) ; no version tag
                 (file-name (git-file-name name version))
                 (sha256
@@ -322,7 +323,7 @@ and a game metadata scraper.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/higan-emu/higan.git")
+             (url "https://github.com/higan-emu/higan")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -414,6 +415,67 @@ Pocket Color, WonderSwan, WonderSwan Color, SwanCrystal, Pocket Challenge
 V2.")
     (license license:gpl3+)))
 
+(define-public mednafen
+  (package
+    (name "mednafen")
+    (version "1.24.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://mednafen.github.io/releases/files/"
+                           "mednafen-" version ".tar.xz"))
+       (sha256
+        (base32 "03zplcfvmnnv7grhacmr1zy789pb2wda36wylmzmar23g0zqbsix"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        ;; "--with-external-mpcdec"
+        "--with-external-lzo")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa" ,alsa-lib)
+       ;; ("libmpcdec" ,libmpcdec) FIXME: not recognized.
+       ("libsndfile" ,libsndfile)
+       ("lzo" ,lzo)
+       ("sdl2" ,sdl2)
+       ("zlib" ,zlib)))
+    (home-page "https://mednafen.github.io/")
+    (synopsis "Multi-system emulator utilizing OpenGL and SDL")
+    (description
+     "Mednafen is a portable, utilizing OpenGL and SDL, argument-driven
+multi-system emulator.  Mednafen has the ability to remap hotkey functions and
+virtual system inputs to a keyboard, a joystick, or both simultaneously.  Save
+states are supported, as is real-time game rewinding.  Screen snapshots may be
+taken, in the PNG file format, at the press of a button.  Mednafen can record
+audiovisual movies in the QuickTime file format, with several different
+lossless codecs supported.
+
+The following systems are supported:
+
+@itemize
+@item Apple II/II+
+@item Atari Lynx
+@item Neo Geo Pocket (Color)
+@item WonderSwan
+@item GameBoy (Color)
+@item GameBoy Advance
+@item Nintendo Entertainment System
+@item Super Nintendo Entertainment System/Super Famicom
+@item Virtual Boy
+@item PC Engine/TurboGrafx 16 (CD)
+@item SuperGrafx
+@item PC-FX
+@item Sega Game Gear
+@item Sega Genesis/Megadrive
+@item Sega Master System
+@item Sega Saturn (experimental, x86_64 only)
+@item Sony PlayStation
+@end itemize")
+    ;; Main license is GPL2+.  Some parts are BSD-3.
+    (license (list license:gpl2+ license:bsd-3))))
+
 (define-public mgba
   (package
     (name "mgba")
@@ -422,7 +484,7 @@ V2.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mgba-emu/mgba.git")
+             (url "https://github.com/mgba-emu/mgba")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -473,16 +535,16 @@ and Game Boy Color games.")
 (define-public sameboy
   (package
     (name "sameboy")
-    (version "0.13.2")
+    (version "0.13.3")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/LIJI32/SameBoy.git")
+             (url "https://github.com/LIJI32/SameBoy")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "19qb1ib9sk5bjdv4arbwkv8l2afpll5axrif3wi7p2yhvpba10c0"))))
+        (base32 "1mv5a7p6plz0359l3z9g232rgaq2h3yby5949ps0s88cxj94w9qm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("rgbds" ,rgbds)
@@ -525,7 +587,7 @@ from an emulator---from save states to scaling filters.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-core.git")
+             (url "https://github.com/mupen64plus/mupen64plus-core")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -574,7 +636,7 @@ core library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-audio-sdl.git")
+             (url "https://github.com/mupen64plus/mupen64plus-audio-sdl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -620,7 +682,7 @@ SDL audio plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-input-sdl.git")
+             (url "https://github.com/mupen64plus/mupen64plus-input-sdl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -665,7 +727,7 @@ SDL input plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-rsp-hle.git")
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-hle")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -707,7 +769,7 @@ high-level emulation (HLE) RSP processor plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-rsp-z64.git")
+             (url "https://github.com/mupen64plus/mupen64plus-rsp-z64")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -749,7 +811,7 @@ Z64 RSP processor plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-video-arachnoid.git")
+             (url "https://github.com/mupen64plus/mupen64plus-video-arachnoid")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -795,7 +857,7 @@ Arachnoid video plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-video-glide64.git")
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -849,7 +911,7 @@ Glide64 video plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-video-glide64mk2.git")
+             (url "https://github.com/mupen64plus/mupen64plus-video-glide64mk2")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -899,7 +961,7 @@ Glide64MK2 video plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-video-rice.git")
+             (url "https://github.com/mupen64plus/mupen64plus-video-rice")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -947,7 +1009,7 @@ Rice Video plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-video-z64.git")
+             (url "https://github.com/mupen64plus/mupen64plus-video-z64")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1002,7 +1064,7 @@ Z64 video plugin.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mupen64plus/mupen64plus-ui-console.git")
+             (url "https://github.com/mupen64plus/mupen64plus-ui-console")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1067,7 +1129,7 @@ towards a working Mupen64Plus for casual users.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rdanbrook/nestopia.git")
+             (url "https://github.com/rdanbrook/nestopia")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1118,7 +1180,7 @@ emulation community.  It provides highly accurate emulation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libretro/RetroArch.git")
+             (url "https://github.com/libretro/RetroArch")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1277,16 +1339,16 @@ play them on systems for which they were never designed!")
 (define-public mame
   (package
     (name "mame")
-    (version "0.221")
+    (version "0.222")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mamedev/mame.git")
+             (url "https://github.com/mamedev/mame")
              (commit (apply string-append "mame" (string-split version #\.)))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07fl7alj9zlyb93i8lnn4706ndy3qiv0pjvwnwysk5rqa0r3463y"))
+        (base32 "1bfnwfxsnmza4s77ca0cyx4b290dwadkbbc2lyd7xa0yqrh7vvlx"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -1767,3 +1829,186 @@ performance, features, and ease of use.")
        "Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator
 framework based on QEMU.")
       (license license:gpl2+))))
+
+(define-public ppsspp
+  (package
+    (name "ppsspp")
+    (version "1.10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hrydgard/ppsspp")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "02yx1w0ygclnmdl0imsvgj24lkzi55wvxkf47q617j0jgrqhy8yl"))
+       (file-name (git-file-name name version))
+       (patches
+        (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        `(begin
+           ;; The following is quite a heavy-handed way of unbundling PPSSPP.
+           ;; There are still a number of external sources, that we don't
+           ;; remove here.  Some may be packaged, others are not.
+           ;; First, we patch existing sources to include the right headers.
+           (substitute* (append (list "ext/native/thin3d/vulkan_utils.cpp"
+                                      "ext/native/thin3d/thin3d_vulkan.cpp")
+                                (find-files "Common" ".*\\.(h|cpp)")
+                                (find-files "Core" ".*\\.(h|cpp)")
+                                (find-files "GPU" ".*\\.(h|cpp)")
+                                (find-files "SDL" ".*\\.(h|cpp)")
+                                (find-files "UI" ".*\\.(h|cpp)"))
+             ;; These headers are all hard-coded in the original source.
+             (("ext/cityhash/") "")
+             (("ext/glslang/") "")
+             (("ext/SPIRV-Cross/") "spirv_cross/")
+             (("ext/vulkan/") "vulkan/")
+             (("ext/xxhash.h") "xxhash.h")
+             ;; These definitions do not actually exist in the Vulkan headers,
+             ;; but PPSSPP defines them in ext/vulkan.
+             (("VK_FORMAT_BEGIN_RANGE") "VK_FORMAT_UNDEFINED")
+             (("VK_FORMAT_END_RANGE") "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"))
+           ;; Next, we patch CMakeLists.
+           (substitute* "CMakeLists.txt"
+             ;; Drop unnecessary includes and targets.
+             (("include_directories\\(ext/glslang\\)") "")
+             (("include_directories\\(ext/xxhash\\)") "")
+             (("include_directories\\(ext/cityhash\\)") "")
+             (("set_target_properties\\(cityhash .*\\)") "")
+             ;; Fix linking to GLEW.
+             (("TARGET Ext::GLEW") "true")
+             (("target_link_libraries\\(native Ext::GLEW\\)")
+              "find_package(GLEW)\ntarget_link_libraries(native GLEW::GLEW)")
+             (("Ext::Snappy") "snappy")
+             ;; Don't search for cityhash/xxhash, we already have them.
+             (("add_library\\((city|xx)hash STATIC") "if()\nendif(")
+             (("ext/xxhash\\.[ch]") "")
+             (("ext/native/ext/cityhash/.*\\.(cpp|h)") "")
+             ;; Link all of spirv-cross.
+             (("spirv-cross-glsl" all)
+              (string-append all
+                             " spirv-cross-core spirv-cross-cpp"
+                             " spirv-cross-reflect spirv-cross-util")))
+           (substitute* "ext/CMakeLists.txt"
+             (("add_subdirectory\\(glew\\)") "")
+             (("add_subdirectory\\(glslang\\)") "")
+             (("add_subdirectory\\(snappy\\)") "")
+             (("add_subdirectory\\(SPIRV-Cross-build\\)") ""))
+           ;; Finally, we can delete the bundled sources.
+           (for-each delete-file-recursively
+                     '("ext/cmake"
+                       "ext/glew"
+                       "ext/glslang" "ext/glslang-build"
+                       "ext/native/ext/cityhash"
+                       "ext/native/ext/libpng17"
+                       "ext/native/ext/libzip"
+                       "ext/snappy"
+                       "ext/SPIRV-Cross" "ext/SPIRV-Cross-build"
+                       "ext/vulkan"
+                       "ext/xxhash.c"
+                       "ext/xxhash.h"
+                       "ext/zlib"))
+           ;; Since we are not including git as an input, PPSSPP is confused
+           ;; about its version.  Let's fix that here.
+           (substitute* "git-version.cmake"
+             (("unknown") ,version))))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)))
+    (inputs
+     `(("cityhash" ,cityhash)
+       ("ffmpeg" ,ffmpeg)
+       ("glew" ,glew)
+       ("glslang" ,glslang)
+       ("libpng" ,libpng)
+       ("libzip" ,libzip)
+       ("mesa" ,mesa)
+       ("sdl2" ,sdl2)
+       ("snappy" ,snappy)
+       ("spirv-cross" ,spirv-cross)
+       ("vulkan-headers" ,vulkan-headers)
+       ("vulkan-loader" ,vulkan-loader)
+       ("xxhash" ,xxhash)
+       ("zlib" ,zlib)
+       ;; TODO: unbundle armips.
+       ("armips-source" ,(package-source armips))
+       ("lang"
+        ,(let ((commit "d184ba2b607a03435be579406b816c90add334e6"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/hrydgard/ppsspp-lang")
+                   (commit commit)))
+             (sha256
+              (base32 "0s003x6247nx09qd6a1jz1l2hsk5d6k1zmh8mg3m6hjjhvbvd9j9"))
+             (file-name (git-file-name "ppsspp-lang" commit)))))
+       ("tests"
+        ,(let ((commit "328b839c7243e7f733f9eae88d059485e3d808e7"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/hrydgard/pspautotests")
+                   (commit commit)))
+             (sha256
+              (base32 "1gj1kr5ijxrqwvz7c41phskjr70ndp8iz0gr8c3xxsd8p9z5gdvm"))
+             (file-name (git-file-name "pspautotests" commit)))))))
+    (arguments
+     `(#:out-of-source? #f
+       #:configure-flags (list "-DUSE_DISCORD=OFF"
+                               "-DUSE_SYSTEM_FFMPEG=ON"
+                               "-DUSE_SYSTEM_LIBZIP=ON"
+                               ;; for testing
+                               "-DUNITTEST=ON" "-DHEADLESS=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-external-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; TODO: unbundle armips.
+             (copy-recursively (assoc-ref inputs "armips-source")
+                               "ext/armips")
+             ;; Some tests are externalised, so we add them here.
+             (copy-recursively (assoc-ref inputs "tests")
+                               "pspautotests")
+             ;; i18n is externalised, so we add it here.
+             (copy-recursively (assoc-ref inputs "lang")
+                               "assets/lang")
+             #t))
+         (replace 'check
+           (lambda _
+             (for-each
+              (lambda (t) (invoke "./unitTest" t))
+              '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
+                "SinCos" "VFPUSinCos" "MathUtil" "Parsers" "Jit"
+                "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ" "MemMap"))
+             (invoke "python3" "test.py" "-g")
+             #t))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin/ppsspp (string-append out "/bin/ppsspp"))
+                    (share (string-append out "/share/ppsspp")))
+               (copy-recursively "icons/hicolor"
+                                 (string-append out "/share/icons/hicolor"))
+               (install-file "PPSSPPSDL" share)
+               (copy-recursively "assets" (string-append share "/assets"))
+
+               (make-desktop-entry-file
+                (string-append out "/share/applications/ppsspp.desktop")
+                #:name "PPSSPP"
+                #:exec (string-append share "/PPSSPPSDL")
+                #:icon "ppsspp")
+               (mkdir-p (string-append out "/bin"))
+               (with-output-to-file bin/ppsspp
+                 (lambda ()
+                   (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
+                           (which "sh") share)))
+               (chmod bin/ppsspp #o755)
+               #t))))))
+    (home-page "https://www.ppsspp.org/")
+    (synopsis "PSP emulator")
+    (description
+     "PPSSPP is a ``high-level'' emulator simulating the PSP operating
+system.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 96a2bd8808..608b2e54a6 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -606,7 +606,7 @@ multipole-accelerated algorithm.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fritzing/fritzing-app.git")
+                    (url "https://github.com/fritzing/fritzing-app")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -655,7 +655,7 @@ multipole-accelerated algorithm.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/fritzing/fritzing-parts.git")
+                 (url "https://github.com/fritzing/fritzing-parts")
                  (commit version)))
            (file-name (git-file-name "fritzing-parts" version))
            (sha256
@@ -713,7 +713,7 @@ as well as pick-place files.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/erichVK5/translate2geda.git")
+                      (url "https://github.com/erichVK5/translate2geda")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -933,7 +933,7 @@ translations for KiCad.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/KiCad/kicad-symbols.git")
+                    (url "https://github.com/KiCad/kicad-symbols")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -962,7 +962,7 @@ libraries.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/KiCad/kicad-footprints.git")
+                    (url "https://github.com/KiCad/kicad-footprints")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -979,7 +979,7 @@ libraries.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/KiCad/kicad-packages3d.git")
+                    (url "https://github.com/KiCad/kicad-packages3d")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -996,7 +996,7 @@ libraries.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/KiCad/kicad-templates.git")
+                    (url "https://github.com/KiCad/kicad-templates")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2109,7 +2109,7 @@ editors.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/markwal/GPX.git")
+                    (url "https://github.com/markwal/GPX")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2230,7 +2230,7 @@ engineers for reverse engineers.")
     (source
      (origin
       (method git-fetch)
-      (uri (git-reference (url "https://github.com/3MFConsortium/lib3mf.git")
+      (uri (git-reference (url "https://github.com/3MFConsortium/lib3mf")
                           (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -2335,7 +2335,7 @@ full programmatic control over your models.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FreeCAD/FreeCAD.git")
+             (url "https://github.com/FreeCAD/FreeCAD")
              (commit version)))
        (modules '((guix build utils)))
        (snippet
@@ -2478,7 +2478,7 @@ interpolation toolkit.")
       (source
        (origin
          (method git-fetch)
-         (uri (git-reference (url "https://github.com/Heeks/libarea.git")
+         (uri (git-reference (url "https://github.com/Heeks/libarea")
                              (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2519,7 +2519,7 @@ operations.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/FreeSpacenav/libspnav.git")
+                    (url "https://github.com/FreeSpacenav/libspnav")
                     (commit (string-append "libspnav-" version))))
               (sha256
                (base32
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 4b6c0cf105..93569f3560 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -47,7 +47,7 @@
               ;; pre-compiled files, so we use this snapshot of the source
               ;; repository.
               (uri (git-reference
-                    (url "https://github.com/erlang/otp.git")
+                    (url "https://github.com/erlang/otp")
                     (commit (string-append "OTP-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/fabric-management.scm b/gnu/packages/fabric-management.scm
index c31ee6e217..0e8b388cd1 100644
--- a/gnu/packages/fabric-management.scm
+++ b/gnu/packages/fabric-management.scm
@@ -185,7 +185,7 @@ testing InfiniBand networks.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/openucx/ucx.git")
+                    (url "https://github.com/openucx/ucx")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index dd72152c51..9236d34f9f 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -41,27 +41,103 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages nfs)
   #:use-module (gnu packages onc-rpc)
+  #:use-module (gnu packages openldap)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages rsync)
+  #:use-module (gnu packages sssd)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
   #:use-module (gnu packages xml))
 
+(define-public autofs
+  (package
+    (name "autofs")
+    (version "5.1.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kernel.org/linux/daemons/autofs/"
+                           "v" (version-major version) "/"
+                           "autofs-" version ".tar.xz"))
+       (sha256
+        (base32 "1vya21mb4izj3khcr3flibv7xc15vvx2v0rjfk5yd31qnzcy7pnx"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-ignore-busy"     ; during shutdown
+             "--enable-sloppy-mount"    ; support mount(8) -s
+             "--with-libtirpc"
+             (string-append "--with-openldap="
+                            (assoc-ref %build-inputs "openldap"))
+             (string-append "--with-sasl="
+                            (assoc-ref %build-inputs "cyrus-sasl"))
+             "HAVE_SSS_AUTOFS=1"        ; required to make sssldir click
+             (string-append "sssldir="
+                            (assoc-ref %build-inputs "sssd")
+                            "/lib/sssd/modules"))
+       #:tests? #f                      ; no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-hard-coded-search-path
+           (lambda _
+             (substitute* "configure"
+               (("^searchpath=\".*\"")
+                "searchpath=\"$PATH\""))
+             #t))
+         (add-before 'install 'omit-obsolete-lookup_nis.so-link
+           ;; Building lookup_yp.so depends on $(YPCLNT) but this doesn't,
+           ;; leading to a make error.  Since it's broken, comment it out.
+           (lambda _
+             (substitute* "modules/Makefile"
+               (("ln -fs lookup_yp.so" match)
+                (string-append "# " match)))
+             #t)))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("pkg-config" ,pkg-config)
+       ("rpcsvc-proto" ,rpcsvc-proto)))
+    (inputs
+     `(("cyrus-sasl" ,cyrus-sasl)
+       ("e2fsprogs" ,e2fsprogs)         ; for e[234]fsck
+       ("libtirpc" ,libtirpc)
+       ("libxml2" ,libxml2)             ; needed for LDAP, SASL
+       ("mit-krb5" ,mit-krb5)           ; needed for LDAP, SASL
+       ("nfs-utils" ,nfs-utils)         ; for mount.nfs
+       ("openldap" ,openldap)
+       ("openssl" ,openssl)             ; needed for SASL
+       ("sssd" ,sssd)
+       ("util-linux" ,util-linux)))     ; for mount, umount
+    ;; XXX A directory index is the closest thing this has to a home page.
+    (home-page "https://www.kernel.org/pub/linux/daemons/autofs/")
+    (synopsis "Kernel-based automounter for Linux")
+    (description
+     "Autofs is a kernel-based automounter for use with the Linux autofs4
+module.  It automatically mounts selected file systems when they are used and
+unmounts them after a set period of inactivity.  This provides
+centrally-managed, consistent file names for users and applications, even in a
+large and/or frequently changing (network) environment.")
+    ;; fedfs/ is GPL-2-only but not built.
+    (license (list license:bsd-3        ; modules/cyrus-sasl.c
+                   license:gpl2+))))    ; the rest
+
 (define-public fsarchiver
   (package
     (name "fsarchiver")
@@ -71,7 +147,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/fdupoux/fsarchiver.git")
+         (url "https://github.com/fdupoux/fsarchiver")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -126,10 +202,10 @@ is corrupted you'll lose the affected file(s) but not the whole back-up.")
      `(("fuse" ,fuse)
        ("glib" ,glib)
        ("libgphoto2" ,libgphoto2)))
-    (synopsis "Virtual filesystem for libgphoto2 using FUSE")
-    (description "GPhotoFS is a FUSE filesystem module to mount your camera as
-a filesystem on Linux.  This allow using your camera with any tool able to read
-from a mounted filesystem.")
+    (synopsis "Virtual file system for libgphoto2 using FUSE")
+    (description "GPhotoFS is a FUSE file system module to mount your camera as
+a file system on Linux.  This allow using your camera with any tool able to read
+from a mounted file system.")
     (home-page "http://www.gphoto.org/proj/gphotofs/")
     (license license:gpl2+)))
 
@@ -151,7 +227,8 @@ from a mounted filesystem.")
       (build-system gnu-build-system)
       (arguments
        `(#:make-flags
-         (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+         (list ,(string-append "VERSION=" version) ; bogus vX.Y-nogit otherwise
+               (string-append "PREFIX=" (assoc-ref %outputs "out"))
                "INITRAMFS_DIR=$(PREFIX)/share/initramfs-tools"
                "CC=gcc"
                "PYTEST=pytest")
@@ -497,7 +574,7 @@ All of this is accomplished without a centralized metadata server.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sahlberg/libnfs.git")
+                    (url "https://github.com/sahlberg/libnfs")
                     (commit (string-append "libnfs-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -724,8 +801,8 @@ community.")
     ;; mergerfs bundles a heavily modified copy of libfuse.
     (inputs `(("util-linux" ,util-linux)))
     (home-page "https://github.com/trapexit/mergerfs")
-    (synopsis "Featureful union filesystem")
-    (description "mergerfs is a union filesystem geared towards simplifying
+    (synopsis "Featureful union file system")
+    (description "mergerfs is a union file system geared towards simplifying
 storage and management of files across numerous commodity storage devices.  It
 is similar to mhddfs, unionfs, and aufs.")
     (license (list
@@ -744,7 +821,7 @@ is similar to mhddfs, unionfs, and aufs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/trapexit/mergerfs-tools.git")
+               (url "https://github.com/trapexit/mergerfs-tools")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 552c2abed3..518be91073 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -72,6 +72,7 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libunwind)
@@ -200,16 +201,16 @@ and dynamically with report tools based on filtering and graphical charts.")
 (define-public ledger
   (package
     (name "ledger")
-    (version "3.2.0")
+    (version "3.2.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ledger/ledger.git")
+             (url "https://github.com/ledger/ledger")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1l5c9jf2wnly6ncm9civ8i7v47xld15g1y7wpl0hqwgbfyffwjci"))))
+        (base32 "0x6jxwss3wwzbzlwmnwb8yzjk8f9wfawif4f1b74z2qg6hc4r7f6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:modules (,@%cmake-build-system-modules
@@ -303,7 +304,7 @@ in ability, and easy to use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ledger/ledger-mode.git")
+               (url "https://github.com/ledger/ledger-mode")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -377,7 +378,7 @@ This package provides the Emacs mode.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stesie/geierlein.git")
+             (url "https://github.com/stesie/geierlein")
              (commit (string-append "V" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -480,7 +481,7 @@ other machines/servers.  Electrum does not download the Bitcoin blockchain.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Electron-Cash/Electron-Cash.git")
+             (url "https://github.com/Electron-Cash/Electron-Cash")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -547,12 +548,12 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
   ;; the system's dynamically linked library.
   (package
     (name "monero")
-    (version "0.16.0.0")
+    (version "0.16.0.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/monero-project/monero.git")
+             (url "https://github.com/monero-project/monero")
              (commit (string-append "v" version))
              (recursive? #t)))
        (file-name (git-file-name name version))
@@ -568,7 +569,7 @@ other machines/servers.  Electroncash does not download the Bitcoin Cash blockch
            #t))
        (sha256
         (base32
-         "0x74h5z0nxxxip97ibc854pqmrgd8r4d6w62m424f66i8gbzfskh"))))
+         "0n2cviqm8radpynx70fc0819k1xknjc58cvb4whlc49ilyvh8ky6"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -666,17 +667,17 @@ the Monero command line client and daemon.")
 (define-public monero-gui
   (package
     (name "monero-gui")
-    (version "0.16.0.0")
+    (version "0.16.0.2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/monero-project/monero-gui.git")
+             (url "https://github.com/monero-project/monero-gui")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "06vdrsj5y9k0zn32hspyxc7sw1kkyrvi3chzkdbnxk9jvyj8k4ld"))))
+         "1b1m8vhs0hdh81ysm8s8vfwqskqsihylb51wz16kc98ba40r9gqg"))))
     (build-system qt-build-system)
     (native-inputs
      `(("monero-source" ,(package-source monero))
@@ -786,7 +787,7 @@ the Monero GUI client.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/romanz/trezor-agent.git")
+             (url "https://github.com/romanz/trezor-agent")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -964,7 +965,7 @@ the KeepKey Hardware Wallet.")
     (inputs
      `(("python-ledgerblue" ,python-ledgerblue)
        ("python-trezor-agent" ,python-trezor-agent)))
-    (home-page "http://github.com/romanz/trezor-agent")
+    (home-page "https://github.com/romanz/trezor-agent")
     (synopsis "Ledger as hardware SSH/GPG agent")
     (description "This package allows using Ledger as hardware SSH/GPG agent.
 
@@ -1023,7 +1024,7 @@ agent.")
     (inputs
      `(("python-keepkey" ,python-keepkey)
        ("python-trezor-agent" ,python-trezor-agent)))
-    (home-page "http://github.com/romanz/trezor-agent")
+    (home-page "https://github.com/romanz/trezor-agent")
     (synopsis "KeepKey as hardware SSH/GPG agent")
     (description "This package allows using KeepKey as a hardware SSH/GPG
 agent.")
@@ -1130,7 +1131,6 @@ main features are:
     (inputs
      `(("click" ,python-click)
        ("duniterpy" ,python-duniterpy)
-       ("ipaddress" ,python-ipaddress)
        ("pynacl" ,python-pynacl)
        ("tabulate" ,python-tabulate)
        ("texttable" ,python-texttable)))
@@ -1196,7 +1196,7 @@ information.")
          (origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/trezor/trezor-common.git")
+                 (url "https://github.com/trezor/trezor-common")
                  (commit commit)))
            (sha256
             (base32
@@ -1221,7 +1221,7 @@ trezord as a regular user instead of needing to it run as root.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/trezor/trezord-go.git")
+              (url "https://github.com/trezor/trezord-go")
               (commit (string-append "v" version))))
        (sha256
         (base32
@@ -1239,7 +1239,7 @@ Trezor wallet.")
 (define-public bitcoin-abc
   (package
     (name "bitcoin-abc")
-    (version "0.21.6")
+    (version "0.21.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.bitcoinabc.org/"
@@ -1247,7 +1247,7 @@ Trezor wallet.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1w3c397h2mxsi9471fwyc3yjxw7s4jgvr4q3w2qfh49bhr4wygqj"))))
+                "0cgr416cp7p14mlnfryxfjfcxys5hksfjhi0i4amxl4fbnpgjwk0"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -1257,6 +1257,7 @@ Trezor wallet.")
     (inputs
      `(("bdb" ,bdb-5.3)
        ("boost" ,boost)
+       ("jemalloc" ,jemalloc)
        ("libevent" ,libevent)
        ("miniupnpc" ,miniupnpc)
        ("openssl" ,openssl)
@@ -1403,7 +1404,7 @@ entity management.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/BitcoinUnlimited/BitcoinUnlimited.git")
+             (url "https://github.com/BitcoinUnlimited/BitcoinUnlimited")
              (commit (string-append "BCHunlimited" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index e0a162f1b8..15a6725c67 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -50,7 +50,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/qca/open-ath9k-htc-firmware.git")
+                    (url "https://github.com/qca/open-ath9k-htc-firmware")
                     (commit version)))
               (sha256
                (base32
@@ -189,21 +189,19 @@ Broadcom/AirForce chipset BCM43xx with Wireless-Core Revision 5.  It is used
 by the b43-open driver of Linux-libre.")
     (license license:gpl2)))
 
-(define* (make-opensbi-package platform variant #:optional (arch "riscv64"))
+(define* (make-opensbi-package platform name #:optional (arch "riscv64"))
   (package
-    (name (string-replace-substring
-           (string-append "opensbi-" platform "-" variant)
-           "_" "-"))
-    (version "0.6")
+    (name name)
+    (version "0.8")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/riscv/opensbi.git")
+             (url "https://github.com/riscv/opensbi")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "129ypdga0fzn657n2f42g2a1vx3hf8x7sd78h06d35pgkry0jkl7"))))
+        (base32 "1y9z0b6q6wpw7mgy31wml4djc6m8ydm71a9f1asnks4ragc7m98b"))))
     (build-system gnu-build-system)
     (native-inputs
      `(,@(if (and (not (string-prefix? "riscv64" (%current-system)))
@@ -213,7 +211,7 @@ by the b43-open driver of Linux-libre.")
            '())))
     (arguments
      `(#:tests? #f ; no check target
-       #:make-flags (list (string-append "PLATFORM=" ,platform "/" ,variant)
+       #:make-flags (list (string-append "PLATFORM=" ,platform)
                           ,@(if (and (not (string-prefix? "riscv64"
                                                           (%current-system)))
                                      (string-prefix? "riscv64" arch))
@@ -243,11 +241,14 @@ for platform-specific firmwares executing in M-mode.")
                    ;; platform/ariane-fpga/* is gpl2.
                    license:gpl2))))
 
+(define-public opensbi-qemu-generic
+  (make-opensbi-package "generic" "opensbi-qemu-generic"))
+
 (define-public opensbi-qemu-virt
-  (make-opensbi-package "qemu" "virt"))
+  (deprecated-package "opensbi-qemu-virt" opensbi-qemu-generic))
 
 (define-public opensbi-sifive-fu540
-  (make-opensbi-package "sifive" "fu540"))
+  (make-opensbi-package "sifive/fu540" "opensbi-sifive-fu540"))
 
 (define-public opensbi-qemu-sifive-u
   ;; Dropped upstream, as all functionality is present in the sifive-fu540
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 8e36da22ed..ed844430cd 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -98,7 +98,7 @@ programmer devices.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pali/0xffff.git")
+             (url "https://github.com/pali/0xffff")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -216,7 +216,7 @@ firmware from it.")
        (origin
          (method git-fetch)
          (uri (git-reference
-                (url "https://github.com/PaulStoffregen/teensy_loader_cli.git")
+                (url "https://github.com/PaulStoffregen/teensy_loader_cli")
                 (commit commit)))
          (sha256 (base32 "0sssim56pwsxp5cp5dlf6mi9h5fx2592m6j1g7abnm0s09b0lpdx"))
          (file-name (git-file-name name version))
@@ -266,7 +266,7 @@ non-root users.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                (url "https://github.com/linux-rockchip/rkflashtool.git")
+                (url "https://github.com/linux-rockchip/rkflashtool")
                 (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -345,7 +345,7 @@ referred to as the \"Odin 3 protocol\".")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/coreboot/coreboot.git")
+                    (url "https://github.com/coreboot/coreboot")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -419,7 +419,7 @@ Management Engine (ME).  You need to @code{sudo rmmod mei_me} and
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/corna/me_cleaner.git")
+                     (url "https://github.com/corna/me_cleaner")
                      (commit (string-append "v" version))))
               (sha256
                (base32
@@ -451,7 +451,7 @@ ME as far as possible (it only edits ME firmware image files).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/LongSoft/UEFITool.git")
+                     (url "https://github.com/LongSoft/UEFITool")
                      (commit version)))
               (sha256
                (base32
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 5a913441e9..f4c62ee69c 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -36,6 +36,7 @@
 ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2020 Simen Endsjø <simendsjo@gmail.com>
+;;; Copyright © 2020 Tim Van den Langenbergh <tmt_vdl@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -384,6 +385,35 @@ Biolinum is available in both Regular and Bold weights.")
     ;; The fonts are released under either of these licenses.
     (license (list license:gpl2+ license:silofl1.1))))
 
+(define-public font-libertinus
+  (package
+    (name "font-libertinus")
+    (version "6.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/alerque/libertinus/releases"
+                           "/download/v" version "/libertinus-" version
+                           ".zip"))
+       (sha256
+        (base32 "06pcsd5pijjid7xjxak35jla089krm5hqnbglv8ldncq475q7kb2"))))
+    (build-system font-build-system)
+    (home-page "https://github.com/alerque/libertinus")
+    (synopsis "Font family based on Linux Libertine")
+    (description
+     "The Libertinus font family is a fork of Linux Libertine that addresses
+many bugs in the unmaintained original and adds a new mathematical companion
+font for use with OpenType math-capable applications like LuaTex or XeTeX.
+
+The unified Libertinus family consists of:
+@enumerate
+@item Libertinus Serif, forked from Linux Libertine;
+@item Libertinus Sans Serif, forked from Linux Biolinum;
+@item Libertinus Mono, forked from Linux Libertine Mono; and
+@item Libertinus Math, an original matching OpenType math font.
+@end enumerate\n")
+    (license license:silofl1.1)))
+
 (define-public font-terminus
   (package
     (name "font-terminus")
@@ -431,7 +461,7 @@ for long periods of working with computers (8 or more hours per day).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/adobe-fonts/source-han-sans.git")
+                     (url "https://github.com/adobe-fonts/source-han-sans")
                      (commit (string-append version "R"))))
               (file-name (git-file-name name version))
               (sha256
@@ -680,7 +710,7 @@ for use at smaller text sizes")))
 (define-public font-gnu-unifont
   (package
     (name "font-gnu-unifont")
-    (version "13.0.02")
+    (version "13.0.03")
     (source
      (origin
        (method url-fetch)
@@ -690,7 +720,7 @@ for use at smaller text sizes")))
              (string-append "mirror://gnu/unifont/unifont-"
                             version "/unifont-" version ".tar.gz")))
        (sha256
-        (base32 "1fg908qadh14kfbpzqfj3vgzlxgx68sdlwhl2prz7arq5r45dami"))))
+        (base32 "04l2sbg6il78qsj3jxqfbz5k1xzihvw8vdlckgkp4zfr0nh2q7h7"))))
     (build-system gnu-build-system)
     (outputs '("out"   ; TrueType version
                "pcf"   ; PCF (bitmap) version
@@ -817,7 +847,7 @@ It contains the following fonts and styles:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/belluzj/fantasque-sans.git")
+             (url "https://github.com/belluzj/fantasque-sans")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -900,7 +930,7 @@ Powerline support.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/adobe-fonts/source-code-pro.git")
+             (url "https://github.com/adobe-fonts/source-code-pro")
              (commit (regexp-substitute/global
                       ;; The upstream tag uses "/" between the roman and italic
                       ;; versions, so substitute our "-" separator here.
@@ -925,7 +955,7 @@ designed to work well in user interface environments.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/adobe-fonts/source-sans-pro.git")
+             (url "https://github.com/adobe-fonts/source-sans-pro")
              (commit (regexp-substitute/global
                       ;; The upstream tag uses "/" between the roman and italic
                       ;; versions, so substitute our "-" separator here.
@@ -950,7 +980,7 @@ work well in user interface (UI) environments.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/adobe-fonts/source-serif-pro.git")
+             (url "https://github.com/adobe-fonts/source-serif-pro")
              (commit (regexp-substitute/global
                       ;; The upstream tag uses "/" between the roman and italic
                       ;; versions, so substitute our "-" separator here.
@@ -993,7 +1023,7 @@ Sans Pro family.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/mozilla/Fira.git")
+                     (url "https://github.com/mozilla/Fira")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1038,7 +1068,7 @@ correct spacing.")
    (source (origin
             (method git-fetch)
             (uri (git-reference
-                   (url "https://github.com/FortAwesome/Font-Awesome.git")
+                   (url "https://github.com/FortAwesome/Font-Awesome")
                    (commit (string-append "v" version))))
             (file-name (git-file-name name version))
             (sha256
@@ -1075,7 +1105,7 @@ vector graphics.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/sunaku/tamzen-font.git")
+              (url "https://github.com/sunaku/tamzen-font")
               (commit (string-append "Tamzen-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1172,7 +1202,7 @@ typeface, by mimicking Comic Sans while fixing its most obvious shortcomings.")
   (package
     (name "font-iosevka")
     ;; When updating, also update the hash of the Iosevka variant(s) below.
-    (version "3.1.1")
+    (version "3.2.2")
     (source
      (origin
        (method url-fetch/zipbomb)
@@ -1180,7 +1210,7 @@ typeface, by mimicking Comic Sans while fixing its most obvious shortcomings.")
                            "/releases/download/v" version
                            "/ttc-iosevka-" version ".zip"))
        (sha256
-        (base32 "1xnkfr11rdjnin2fvgkp9vxxigfbfdncr0wy6n78mlm3p1pqwfrm"))))
+        (base32 "16iqr4zjlshrgzcs3sjp3gz777gpi069r7p7scqi6vap9acqjvph"))))
     (build-system font-build-system)
     (home-page "https://be5invis.github.io/Iosevka/")
     (synopsis "Coders' typeface, built from code")
@@ -1203,7 +1233,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/ttc-iosevka-slab-" version ".zip"))
        (sha256
-        (base32 "1n3lh015mvsdbyygpg3p3yqjpqdn1fdvjh1bhi2ggjanhifjsgzh"))))))
+        (base32 "0knsb1b0wqv50r7f9128xvq344x7hnvgm7kh1dxaahlck910z62x"))))))
 
 (define-public font-iosevka-term
   (package
@@ -1218,7 +1248,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/ttf-iosevka-term-" version ".zip"))
        (sha256
         (base32
-         "1mwzwpdppmcf03fgb5q6ksj0kk93wwaz2isk24wj1cm66r8psxk0"))))
+         "0nyq6iq9xjn9nqwh1fh4v0pvblycmm8ssw7y3vcjv1ymbkdqfqhr"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -1240,7 +1270,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/ttf-iosevka-term-slab-" version ".zip"))
        (sha256
         (base32
-         "0fiwxkf2gv38ia695wh8cvnb58sqs3fixjd33q1pp9cps94wzjpg"))))
+         "1blhhbnk2hyaxjrz88icd2gwyniq5idxd0h6rqx6vjcack6094z0"))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -1261,7 +1291,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/ttc-iosevka-aile-" version ".zip"))
        (sha256
-        (base32 "15kz8ahlynnb79s2d367a1fallc4l3j3957yj43qrymayagkh8sv"))))))
+        (base32 "1zg0gn4gcf3w8n8jzf93y9ninyn3bci31c5zss3mxzz1lzfm8zd5"))))))
 
 (define-public font-iosevka-etoile
   (package
@@ -1275,7 +1305,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/ttc-iosevka-etoile-" version ".zip"))
        (sha256
-        (base32 "0q9299mc595m251v9zj9b0zparl2qq8dwx090l0jkfpr2az9xr8q"))))))
+        (base32 "1061yaf35f19dcym4k552q1yzbsbc98r3glm9frslirra9f33sl2"))))))
 
 (define-public font-iosevka-sparkle
   (package
@@ -1289,7 +1319,7 @@ programming.  Iosevka is completely generated from its source code.")
                            "/releases/download/v" version
                            "/ttc-iosevka-sparkle-" version ".zip"))
        (sha256
-        (base32 "0nhvcnvl11iqmsxsyrxlbnwy9z1vdhqv6p3g7fig9ra6n5j9k5kn"))))))
+        (base32 "1c1s9j6qgyhn4md0kql0x2201nbs5jx3612jf8q020gm484xqq03"))))))
 
 (define-public font-sarasa-gothic
   (package
@@ -1358,7 +1388,7 @@ monospace, slab-serif fonts.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/google/material-design-icons.git")
+                     (url "https://github.com/google/material-design-icons")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1628,7 +1658,7 @@ formatting.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/uswds/public-sans.git")
+             (url "https://github.com/uswds/public-sans")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1711,7 +1741,7 @@ This package provides the TrueType fonts.")
 (define-public font-jetbrains-mono
   (package
     (name "font-jetbrains-mono")
-    (version "1.0.3")
+    (version "2.001")
     (source
      (origin
        (method url-fetch)
@@ -1719,8 +1749,17 @@ This package provides the TrueType fonts.")
         (string-append "https://download.jetbrains.com/fonts/"
                        "JetBrainsMono-" version ".zip"))
        (sha256
-        (base32 "0zvhwmpdwpm4vywmm6i9a4najz0c7vfi411yikgkd66l5hwd1p6f"))))
+        (base32 "0r3dk3kn536rik4mvpcjin9mwmifl3v8mawvb4a5l59pww0vcxzq"))))
     (build-system font-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'install-license-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (install-file "../LICENSE" doc)
+               #t))))))
     (home-page "https://www.jetbrains.com/lp/mono/")
     (synopsis "Mono typeface for developers")
     (description
@@ -1897,3 +1936,27 @@ languages, it contains Japanese characters, including Kana glyphs and more
 than 5,300 Kanji glyphs, as well major international phonetic symbols,
 operators and special symbols.")
     (license (license:non-copyleft "file:///LICENSE_E"))))
+
+(define-public font-catamaran
+  (let ((commit "7559b4906f9c9148fb22c6f89508c3053a78a296")
+        (revision "1"))
+    (package
+      (name "font-catamaran")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/VanillaandCream/Catamaran-Tamil")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1wpp41l7j2kpgnyavhgxcc5wp852a4wqsnwravn39gp980s84yxw"))))
+      (build-system font-build-system)
+      (home-page "https://github.com/VanillaandCream/Catamaran-Tamil")
+      (synopsis "9 weight Tamil and Latin type")
+      (description "Catamaran is a 9 weight Tamil and Latin type.  Catamaran
+is a stylish type with a polished yet relaxed feel.  Its versatility makes it
+suitable for a wide range of uses.")
+      (license license:silofl1.1))))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 09793f93de..9c6046813a 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -177,7 +177,7 @@ Converts WOFF fonts to OpenType fonts
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wget/ttf2eot.git")
+             (url "https://github.com/wget/ttf2eot")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -266,7 +266,7 @@ work with most software requiring Type 1 fonts.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/google/woff2.git")
+                    (url "https://github.com/google/woff2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version ".git"))
               (sha256
@@ -746,14 +746,14 @@ implements UFO3 as described by the UFO font format.")
     (version "20170925")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/googlei18n/nototools/"
-                           "archive/v2017-09-25-tooling-for-phase3-"
-                           "update.tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/googlei18n/nototools")
+              (commit "v2017-09-25-tooling-for-phase3-update")))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1pvacw18cm9l4sb66pqyjc7hc74xhhfxc7kd5ald8lixf4wzg0s8"))))
+         "03nzvcvwmrhfrcjhg218q2f3hfrm3vlivp4rk19sc397kh3hisiz"))))
     (build-system python-build-system)
     (arguments
      `(#:python ,python-2))
@@ -831,14 +831,14 @@ work well with other GTK+ desktop environments.")
     (name "fntsample")
     (version "5.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/eugmes/fntsample/archive/release/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/eugmes/fntsample")
+                     (commit (string-append "release/" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0awp4dh1g40ivzvm5xqlvcpcdw1vplrx3drjmbylr62y185vbs74"))))
+                "02rx3gp7k472304vhjwb129nw10a29s4nvgs7i2m6bpjhlk2xgs5"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; There are no tests.
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index fda5de60c7..b2717d2233 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -127,7 +127,7 @@ For synthesis, the compiler generates netlists in the desired format.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/cliffordwolf/yosys.git")
+                    (url "https://github.com/cliffordwolf/yosys")
                     (commit (string-append "yosys-" version))
                     (recursive? #t))) ; for the ‘iverilog’ submodule
               (sha256
@@ -223,7 +223,7 @@ For synthesis, the compiler generates netlists in the desired format.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/cliffordwolf/icestorm.git")
+                     (url "https://github.com/cliffordwolf/icestorm")
                      (commit commit)))
               (file-name (git-file-name name version))
               (sha256
@@ -304,7 +304,7 @@ FOSS FPGA place and route tool.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/YosysHQ/arachne-pnr.git")
+                     (url "https://github.com/YosysHQ/arachne-pnr")
                      (commit commit)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index f8c2ea298f..23cd1aabf9 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -847,7 +847,7 @@ XEv.")
 (define-public exempi
   (package
     (name "exempi")
-    (version "2.5.1")
+    (version "2.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -855,11 +855,22 @@ XEv.")
                    name "-" version ".tar.bz2"))
              (sha256
               (base32
-               "1j4vx054l1c2cggw4aka4iw48jkcf68qk5y064pbqw1k3ddks2qh"))))
+               "1mdfxb36p8251n5m7l55gx3fcqpk46yz9v568xfr8igxmqa47xaj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "--with-boost="
-                               (assoc-ref %build-inputs "boost")))))
+                                              (assoc-ref %build-inputs "boost")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'remove-static-library
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; XXX: Some tests fail to build with --disable-static due to
+             ;; symbols not being visible in the shared library:
+             ;; <https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/17>.
+             ;; Simply delete the static library instead to save ~4.3 MiB.
+             (delete-file (string-append (assoc-ref outputs "out")
+                                         "/lib/libexempi.a"))
+             #t)))))
     (native-inputs
      `(("boost" ,boost))) ; tests
     (inputs
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 9ef92a11f2..b0a25ae7b4 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -173,7 +173,11 @@ is used in some video games and movies.")
              (base32
               "07w3asqxx89wl2wfv1z3cak8v83h3ys3b39mq9qq4gyf3xdhs76n"))))
    (build-system gnu-build-system)
-   (native-inputs `(("asciidoc" ,asciidoc)))
+   (inputs
+    `(("libpng" ,libpng)))
+   (native-inputs
+    `(("asciidoc" ,asciidoc)
+      ("pkg-config" ,pkg-config)))
    (home-page "https://github.com/Doom-Utils/deutex")
    (synopsis "WAD file composer for Doom and related games")
    (description
@@ -313,30 +317,24 @@ provide connectivity for client applications written in any language.")
 (define-public nml
   (package
     (name "nml")
-    (version "0.4.5")
+    (version "0.5.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://bundles.openttdcoop.org/nml/releases/"
-                           version "/nml-" version ".tar.gz"))
+       (uri (pypi-uri "nml" version))
        (sha256
         (base32
-         "1pmvvm3sgnpngfa7884mqhq3fwdjh9sr0ca07ypnidcg0y341w53"))))
+         "1lwf5sc5qqzrkxfx5wkkj3yh2j2nzh5r599ly5psy8yw92km24hy"))))
     (build-system python-build-system)
+    ;; TODO: Fix test that fails with
+    ;; "AttributeError: partially initialized module 'nml.nmlop' has no
+    ;; attribute 'ADD' (most likely due to a circular import)"
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'fix-pillow
-           (lambda _
-             ;; pillow's version is not in PIL.Image.VERSION anymore
-             (substitute* "nml/version_info.py"
-               (("from PIL import Image") "import PIL")
-               (("Image.VERSION") "PIL.__version__"))
-             #t)))))
+     '(#:tests? #f))
     (propagated-inputs
      `(("python-pillow" ,python-pillow)
        ("python-ply" ,python-ply)))
-    (home-page "https://dev.openttdcoop.org/projects/nml")
+    (home-page "https://github.com/OpenTTD/nml")
     (synopsis "NML compiler")
     (description
      "@dfn{NewGRF Meta Language} (NML) is a python-based compiler, capable of
@@ -458,7 +456,7 @@ support.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bjorn/tiled.git")
+                    (url "https://github.com/bjorn/tiled")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -505,7 +503,7 @@ clone.")
               ;; http://mirror0.sfml-dev.org/files/ because files there seem
               ;; to be changed in place.
               (uri (git-reference
-                    (url "https://github.com/SFML/SFML.git")
+                    (url "https://github.com/SFML/SFML")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -595,7 +593,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alemart/surgescript.git")
+             (url "https://github.com/alemart/surgescript")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1405,7 +1403,7 @@ painted with a mouse.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wgois/OIS.git")
+             (url "https://github.com/wgois/OIS")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1498,13 +1496,14 @@ of use.")
     (version "0.46.0")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://github.com/OpenMW/openmw/archive/"
-                       "openmw-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/OpenMW/openmw")
+              (commit (string-append "openmw-" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0n7x39kwhwmi6ly9hd7yc6dhlrmmdmx30ahc46kmlzzn2n7mm8q7"))))
+         "0rm32zsmxvr6b0jjihfj543skhicbw5kg6shjx312clhlm035w2x"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
@@ -1536,7 +1535,7 @@ games.")
 (define-public godot
   (package
     (name "godot")
-    (version "3.2.1")
+    (version "3.2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1545,7 +1544,7 @@ games.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kndls0rklha7kz9l4i2ivjxab4jpk3b2j7dcgcg2qc3s81yd0r6"))
+                "1libz83mbyrkbbsmmi8z2rydv3ls0w9r4vb5v6diqqwn7ka8z804"))
               (modules '((guix build utils)
                          (ice-9 ftw)
                          (srfi srfi-1)))
@@ -1934,7 +1933,7 @@ of the others")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ioquake/ioq3.git")
+               (url "https://github.com/ioquake/ioq3")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2007,6 +2006,43 @@ hardware from multiple vendors without requiring that applications have
 specific knowledge of the hardware they are targeting.")
     (license license:bsd-3)))
 
+(define-public flatzebra
+  (package
+    (name "flatzebra")
+    (version "0.1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
+                           "flatzebra-" version ".tar.gz"))
+       (sha256
+        (base32 "1x2dy41c8vrq62bn03b82fpmk7x4rzd7qqiwvq0mgcl5rmasc2c8"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-sdl-config
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; XXX: sdl-config in sdl-union is a link to sdl-config from
+             ;; plain sdl package.  As a consequence, the prefix is wrong.
+             ;; Force correct one with "--prefix" argument.
+             (let ((sdl-union (assoc-ref inputs "sdl")))
+               (setenv "SDL_CONFIG"
+                       (string-append sdl-union
+                                      "/bin/sdl-config --prefix="
+                                      sdl-union)))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer)))))
+    (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
+    (synopsis "Generic game engine for 2D double-buffering animation")
+    (description
+     "Flatzebra is a simple, generic C++ game engine library supporting 2D
+double-buffering.")
+    (license license:gpl2+)))
+
 (define-public fna
   (package
     (name "fna")
@@ -2015,7 +2051,7 @@ specific knowledge of the hardware they are targeting.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FNA-XNA/FNA.git")
+             (url "https://github.com/FNA-XNA/FNA")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2067,7 +2103,7 @@ focuses solely on developing a fully accurate XNA4 runtime for the desktop.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/danfis/libccd.git")
+             (url "https://github.com/danfis/libccd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2143,7 +2179,7 @@ computer games, 3D authoring tools and simulation tools.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/slembcke/Chipmunk2D.git")
+             (url "https://github.com/slembcke/Chipmunk2D")
              (commit (string-append "Chipmunk-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2170,7 +2206,7 @@ rigid body physics library written in C.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/libtcod/libtcod.git")
+                    (url "https://github.com/libtcod/libtcod")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2320,3 +2356,136 @@ utilities frequently used in roguelikes.")
 shooter video game.  The engine is based on qfusion, the id Tech 2 derived
 game engine.  id Tech 2 is the engine originally behind Quake 2.")
       (license license:gpl2+))))
+
+(define-public dhewm3
+  (package
+    (name "dhewm3")
+    (version "1.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/dhewm/dhewm3/releases/download/"
+                    version "/dhewm3-" version "-src.tar.xz"))
+              (sha256
+               (base32
+                "0dmd1876az5q8gbjrd1jk8zidz11ydj607z3m8m5kvw2yj136jzv"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'change-to-build-dir
+           (lambda _
+             (chdir "neo")
+             #t)))))
+    (inputs
+     `(("curl" ,curl)
+       ("libjpeg" ,libjpeg-turbo)
+       ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
+       ("libx11" ,libx11)
+       ("openal" ,openal)
+       ("sdl2" ,sdl2)
+       ("zlib" ,zlib)))
+    (home-page "https://dhewm3.org/")
+    (synopsis "Port of the original Doom 3 engine")
+    (description
+     "@command{dhewm3} is a source port of the original Doom 3 engine (not
+Doom 3: BFG Edition), also known as id Tech 4.  Compared to the original
+version of the Doom 3 engine, dhewm3 has many bugfixes, supports EAX-like
+sound effects on all operating systems and hardware (via OpenAL Softs EFX
+support), has much better support for widescreen resolutions and has 64bit
+support.")
+    (license license:gpl3)))
+
+(define-public tesseract-engine
+  (let ((svn-revision 2411))
+    (package
+      (name "tesseract-engine")
+      (version (string-append "20200615-" (number->string svn-revision)))
+      (source
+       (origin
+         (method svn-fetch)
+         (uri (svn-reference
+               (url "svn://svn.tuxfamily.org/svnroot/tesseract/main")
+               (revision svn-revision)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1av9jhl2ivbl7wfszyhyna84llvh1z2d8khkmadm8d105addj10q"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             (for-each delete-file-recursively
+                       '("bin" "bin64"
+                         ;; Remove "media" since some files such as
+                         ;; media/sound/game/soundsnap/info.txt refer to a
+                         ;; non-commercial license.
+                         "media"
+                         "server.bat"
+                         "tesseract.bat"
+                         "src/lib"
+                         "src/lib64"))
+             #t))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list "CC=gcc")
+         #:tests? #f                    ; No tests.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'cd-src
+             (lambda _ (chdir "src") #t))
+           (add-before 'build 'fix-env
+             (lambda* (#:key inputs #:allow-other-keys)
+               (setenv "CPATH"
+                       (string-append (assoc-ref inputs "sdl2-union")
+                                      "/include/SDL2:"
+                                      (or (getenv "CPATH") "")))
+               #t))
+           (add-after 'install 'really-install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (share (string-append out "/share/tesseract"))
+                      (bin (string-append out "/bin/tesseract"))
+                      (client (string-append out "/bin/tesseract-client")))
+                 (chdir "..")           ; Back to root.
+                 (for-each
+                  (lambda (dir)
+                    (mkdir-p (string-append share "/" dir))
+                    (copy-recursively dir (string-append share "/" dir)))
+                  '("config"))
+                 (mkdir-p (string-append out "/bin/"))
+                 (copy-file "bin_unix/native_client" client)
+                 (copy-file "bin_unix/native_server"
+                            (string-append out "/bin/tesseract-server"))
+                 (call-with-output-file bin
+                   (lambda (p)
+                     (format p "#!~a
+TESS_DATA=~a
+TESS_BIN=~a
+TESS_OPTIONS=\"-u$HOME/.tesseract\"
+cd \"$TESS_DATA\"
+exec \"$TESS_BIN\" \"$TESS_OPTIONS\" \"$@\""
+                             (which "bash")
+                             share
+                             client)))
+                 (chmod bin #o755)
+                 (install-file "src/readme_tesseract.txt"
+                               (string-append out "/share/licenses/tesseract/LICENSE")))
+               #t)))))
+      (inputs
+       `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-image)))
+         ("zlib" ,zlib)
+         ("libpng" ,libpng)
+         ("libgl" ,mesa)))
+      (home-page "http://tesseract.gg/")
+      (synopsis "First-person shooter engine with map editing, instagib, DM and CTF")
+      (description "This package contains the game engine of Tesseract, a
+first-person shooter focused on cooperative in-game map editing.
+
+The engine is derived from @emph{Cube 2: Sauerbraten} technology but with
+upgraded modern rendering techniques.  The new rendering features include
+fully dynamic omnidirectional shadows, global illumination, HDR lighting,
+deferred shading, morphological / temporal / multisample anti-aliasing, and
+much more.")
+      (license license:zlib))))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 27cbf33fb9..556f813396 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -36,7 +36,7 @@
 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
@@ -51,6 +51,7 @@
 ;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,6 +78,7 @@
   #:use-module (guix svn-download)
   #:use-module (guix gexp)
   #:use-module (gnu packages)
+  #:use-module (gnu packages adns)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
@@ -112,9 +114,11 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages gperf)
   #:use-module (gnu packages graphics)
+  #:use-module (gnu packages gsasl)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -135,6 +139,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages messaging)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages music)
   #:use-module (gnu packages multiprecision)
@@ -148,11 +153,13 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
@@ -174,8 +181,6 @@
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages messaging)
-  #:use-module (gnu packages networking)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
@@ -190,6 +195,75 @@
   #:use-module ((srfi srfi-1) #:hide (zip))
   #:use-module (srfi srfi-26))
 
+(define-public abe
+  (package
+    (name "abe")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/abe/abe/abe-" version
+                           "/abe-" version ".tar.gz"))
+       (sha256
+        (base32 "1xvpnq1y6y48fn3pvn2lk0h1ilmalv7nb7awpid1g4jcq1sfmi6z"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-data-dir="
+                            (assoc-ref %outputs "out")
+                            "/share/abe"))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'bootstrap
+           (lambda _ (invoke "sh" "autogen.sh")))
+         (add-before 'build 'set-SDL
+           ;; Set correct environment for SDL.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CPATH"
+                     (string-append
+                      (assoc-ref inputs "sdl") "/include/SDL:"
+                      (or (getenv "CPATH") "")))
+             #t))
+         (add-after 'install 'finalize-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out") "/share")))
+               ;; Installation script does not copy game data files.
+               (let ((data (string-append share "/abe")))
+                 (for-each (lambda (dir)
+                             (let ((target (string-append data "/" dir)))
+                               (mkdir-p target)
+                               (copy-recursively dir target)))
+                           '("images" "maps" "sounds")))
+               ;; Create desktop file.
+               (let ((apps (string-append share "/applications")))
+                 (mkdir-p apps)
+                 (make-desktop-entry-file
+                  (string-append apps "/abe.desktop")
+                  #:name "Abe's Amazing Adventure"
+                  #:exec ,name
+                  #:categories '("AdventureGame" "Game")
+                  #:keywords
+                  '("side-scrolling" "adventure" "pyramid" "singleplayer")
+                  #:comment
+                  '(("de" "Ein sich seitwärts bewegendes Abenteuerspiel")
+                    (#f "Side-scrolling game")))))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("libxi" ,libxi)
+       ("libxmu" ,libxmu)
+       ("libxt" ,libxt)
+       ("sdl" ,(sdl-union (list sdl sdl-mixer)))))
+    (home-page "http://abe.sourceforge.net")
+    (synopsis "Scrolling, platform-jumping, ancient pyramid exploring game")
+    (description
+     "Abe's Amazing Adventure is a scrolling,
+platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in
+the style of similar games for the Commodore+4.")
+    (license license:gpl2+)))
+
 ;; Data package for adanaxisgpl.
 (define adanaxis-mush
   (let ((version "1.1.0"))
@@ -272,7 +346,7 @@ mouse and joystick control, and original music.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/carstene1ns/alex4.git")
+             (url "https://github.com/carstene1ns/alex4")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -335,6 +409,66 @@ the more advanced player there are new game modes and a wide variety of
 physics settings to tweak as well.")
     (license license:gpl2+)))
 
+(define-public astromenace
+  (package
+    (name "astromenace")
+    (version "1.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/viewizard/astromenace")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ad6l887jxqv8xspwc2rvy8ym9sdlmkqdqhsh0pi076kjarxsyws"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:configure-flags '("-DDATADIR=share/astromenace")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           ;; Upstream provides no install phase.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (share (string-append out "/share"))
+                    (apps (string-append share "/applications"))
+                    (data (string-append share "/astromenace"))
+                    (icons (string-append share "/icons/hicolor/64x64/apps")))
+               (install-file "astromenace" bin)
+               (install-file "gamedata.vfs" data)
+               (let ((source (assoc-ref inputs "source")))
+                 (with-directory-excursion (string-append source "/share")
+                   (install-file "astromenace.desktop" apps)
+                   (mkdir-p icons)
+                   (copy-file "astromenace_64.png"
+                              (string-append icons "/astromenace.png")))))
+             #t)))))
+    (inputs
+     `(("freealut" ,freealut)
+       ("freetype" ,freetype)
+       ("glu" ,glu)
+       ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
+       ("openal" ,openal)
+       ("sdl2" ,sdl2)))
+    (home-page "https://www.viewizard.com/")
+    (synopsis "3D space shooter with spaceship upgrade possibilities")
+    (description
+     "Space is a vast area, an unbounded territory where it seems there is
+a room for everybody, but reversal of fortune put things differently.  The
+hordes of hostile creatures crawled out from the dark corners of the universe,
+craving to conquer your homeland.  Their force is compelling, their legions
+are interminable.  However, humans didn't give up without a final showdown and
+put their best pilot to fight back.  These malicious invaders chose the wrong
+galaxy to conquer and you are to prove it!  Go ahead and make alien aggressors
+regret their insolence.")
+    ;; Game is released under GPL3+ terms.  Artwork is subject to CC
+    ;; BY-SA 4.0, and fonts to OFL1.1.
+    (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
+
 (define-public bastet
   (package
     (name "bastet")
@@ -343,7 +477,7 @@ physics settings to tweak as well.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fph/bastet.git")
+             (url "https://github.com/fph/bastet")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -449,6 +583,71 @@ possible, while battling many vicious aliens.")
                    license:lgpl2.1+
                    license:bsd-2))))
 
+(define-public bzflag
+  (package
+    (name "bzflag")
+    (version "2.4.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download.bzflag.org/bzflag/source/"
+                           version "/bzflag-" version ".tar.bz2"))
+       (sha256
+        (base32 "16brxqmfiyz4j4lb8ihzjcbwqmpsms6vm3ijbp34lnw0blbwdjb2"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-desktop-file-and-icons
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((share (string-append (assoc-ref outputs "out") "/share"))
+                    (data (string-append share "/bzflag"))
+                    (hicolor (string-append share "/icons/hicolor"))
+                    (applications (string-append share "/applications")))
+               ;; Move desktop file.
+               (install-file (string-append data "/bzflag.desktop")
+                             applications)
+               ;; Install icons.
+               (for-each (lambda (size)
+                           (let* ((dim (string-append size "x" size))
+                                  (dir (string-append hicolor "/" dim "/apps")))
+                             (mkdir-p dir)
+                             (copy-file
+                              (string-append data "/bzflag-" dim ".png")
+                              (string-append dir "/bzflag.png"))))
+                         '("48" "256")))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("curl" ,curl)
+       ("glew" ,glew)
+       ("glu" ,glu)
+       ("sdl2" ,sdl2)
+       ("zlib" ,zlib)))
+    (home-page "https://www.bzflag.org/")
+    (synopsis "3D first person tank battle game")
+    (description
+     "BZFlag is a 3D multi-player multiplatform tank battle game that
+allows users to play against each other in a network environment.
+There are five teams: red, green, blue, purple and rogue (rogue tanks
+are black).  Destroying a player on another team scores a win, while
+being destroyed or destroying a teammate scores a loss.  Rogues have
+no teammates (not even other rogues), so they cannot shoot teammates
+and they do not have a team score.
+
+There are two main styles of play: capture-the-flag and free-for-all.
+In capture-the-flag, each team (except rogues) has a team base and
+each team with at least one player has a team flag.  The object is to
+capture an enemy team's flag by bringing it to your team's base.  This
+destroys every player on the captured team, subtracts one from that
+team's score, and adds one to your team's score.  In free-for-all,
+there are no team flags or team bases.  The object is simply to get as
+high a score as possible.")
+    ;; The game is dual-licensed.
+    (license (list license:lgpl2.1 license:mpl2.0))))
+
 (define-public cataclysm-dda
   (package
     (name "cataclysm-dda")
@@ -457,7 +656,7 @@ possible, while battling many vicious aliens.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/CleverRaven/Cataclysm-DDA.git")
+             (url "https://github.com/CleverRaven/Cataclysm-DDA")
              (commit version)))
        (sha256
         (base32 "15l6w6lxays7qmsv0ci2ry53asb9an9dh7l7fc13256k085qcg68"))
@@ -522,7 +721,7 @@ want what you have.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/CorsixTH/CorsixTH.git")
+             (url "https://github.com/CorsixTH/CorsixTH")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -577,7 +776,7 @@ more.  This package does @emph{not} provide the game assets.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/tnalpgge/rank-amateur-cowsay.git")
+                     (url "https://github.com/tnalpgge/rank-amateur-cowsay")
                      (commit (string-append name "-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -620,7 +819,7 @@ tired of cows, a variety of other ASCII-art messengers are available.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jaseg/lolcat.git")
+               (url "https://github.com/jaseg/lolcat")
                (commit commit)))
          (sha256
           (base32
@@ -788,7 +987,7 @@ The game features:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/freedoom/freedoom.git")
+             (url "https://github.com/freedoom/freedoom")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -986,7 +1185,7 @@ automata.  The following features are available:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bvschaik/julius.git")
+             (url "https://github.com/bvschaik/julius")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1093,7 +1292,7 @@ shadow mimic them to reach blocks you couldn't reach alone.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alemart/opensurge.git")
+             (url "https://github.com/alemart/opensurge")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1356,14 +1555,14 @@ Chess).  It is similar to standard chess but this variant is far more complicate
 (define-public ltris
   (package
     (name "ltris")
-    (version "1.0.20")
+    (version "1.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://prdownloads.sourceforge.net/lgames/"
+       (uri (string-append "mirror://sourceforge/lgames/ltris/"
                            "ltris-" version ".tar.gz"))
        (sha256
-        (base32 "16zbqsc4amx9g3yjv6054nh4ia09dgfp8k6q4qxpjicl3dw3z0in"))))
+        (base32 "15b18p7id55xiz2jkf56w2f1g6yw1rcb98bpa188i6skqrgnrg57"))))
     (build-system gnu-build-system)
     (arguments
      '(;; The code in LTris uses traditional GNU semantics for inline functions
@@ -1782,7 +1981,7 @@ can be explored and changed freely.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dulsi/seahorse-adventures.git")
+             (url "https://github.com/dulsi/seahorse-adventures")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1894,7 +2093,7 @@ and defeat them with your bubbles!")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/notapixelstudio/superstarfighter.git")
+             (url "https://github.com/notapixelstudio/superstarfighter")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1963,6 +2162,251 @@ available, as well as a single-player mode with AI-controlled ships.")
     (license (list license:expat         ; game
                    license:silofl1.1)))) ; fonts
 
+(define %ufoai-commit "a542a87a891f96b1ab2c44d35b2f6f16859a5019")
+(define %ufoai-revision "0")
+(define %ufoai-version (git-version "2.6.0_dev" %ufoai-revision %ufoai-commit))
+(define ufoai-source
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "git://git.code.sf.net/p/ufoai/code") ;HTTPS fails mid-clone
+          (commit %ufoai-commit)))
+    (file-name (string-append "ufoai-" %ufoai-version "-checkout"))
+    (sha256
+     (base32
+      "024s7b9rcg7iw8i2p72gwnvabk23ljlq0nldws0y4b6hpwzyn1wz"))
+    (modules '((guix build utils)
+               (srfi srfi-1)
+               (ice-9 ftw)))
+    (snippet
+     '(begin
+        ;; Delete ~32MiB of bundled dependencies.
+        (with-directory-excursion "src/libs"
+          (for-each delete-file-recursively
+                    (lset-difference equal? (scandir ".")
+                                     '("." ".." "gtest" "mumble"))))
+
+        ;; Use relative path to Lua headers.
+        (substitute* "src/common/scripts_lua.h"
+          (("\\.\\./libs/lua/") ""))
+
+        ;; Adjust Makefile targets to not depend on 'ufo2map', since we build
+        ;; it as a separate package.  This way we don't need to make the same
+        ;; adjustments for 'ufoai-data' and 'ufoai' below.
+        (substitute* "build/maps.mk"
+          (("\\./ufo2map") "ufo2map")
+          (("maps: ufo2map") "maps:"))
+        (substitute* "build/modules/testall.mk"
+          (("testall: ufo2map") "testall:"))
+
+        ;; If no cURL headers are found, the build system will try to include
+        ;; the bundled version, even when not required.  Prevent that.
+        (substitute* "build/default.mk"
+          (("^include src/libs/curl/lib/Makefile\\.inc")
+           ""))
+
+        ;; While here, improve reproducibility by adding the '-X' flag to the
+        ;; zip command used to create the map files, in order to prevent time
+        ;; stamps from making it into the generated archives.
+        (substitute* "build/data.mk"
+          (("\\$\\(call ZIP\\)")
+           "$(call ZIP) -X"))
+        #t))))
+
+(define-public ufo2map
+  (package
+    (name "ufo2map")
+    (version %ufoai-version)
+    (home-page "https://ufoai.org/")
+    (source ufoai-source)
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("CC=gcc" "CXX=g++"
+                           "--enable-release"
+                           "--enable-ufo2map"
+                           "--disable-uforadiant"
+                           "--disable-cgame-campaign"
+                           "--disable-cgame-multiplayer"
+                           "--disable-cgame-skirmish"
+                           "--disable-game"
+                           "--disable-memory"
+                           "--disable-testall"
+                           "--disable-ufoded"
+                           "--disable-ufo"
+                           "--disable-ufomodel"
+                           "--disable-ufoslicer")
+       #:tests? #f ;no tests
+       #:phases (modify-phases %standard-phases
+                  (replace 'configure
+                    (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+                      ;; The home-made configure script does not understand
+                      ;; some of the default flags of gnu-build-system.
+                      (apply invoke "./configure" configure-flags)))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (install-file "ufo2map" (string-append out "/bin"))
+                        (install-file "debian/ufo2map.6"
+                                      (string-append out "/share/man/man6"))
+                        #t))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libjpeg" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("lua" ,lua-5.1)
+       ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))))
+    (synopsis "UFO: AI map generator")
+    (description
+     "This package provides @command{ufo2map}, a program used to generate
+maps for the UFO: Alien Invasion strategy game.")
+    (license license:gpl2+)))
+
+(define ufoai-data
+  (package
+    (name "ufoai-data")
+    (version %ufoai-version)
+    (home-page "https://ufoai.org/")
+    (source ufoai-source)
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f
+       #:configure-flags '("CC=gcc" "CXX=g++")
+       #:phases (modify-phases %standard-phases
+                  (replace 'configure
+                    (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
+                      (apply invoke "./configure" configure-flags)))
+                  (replace 'build
+                    (lambda* (#:key (parallel-build? #t) #:allow-other-keys)
+                      (invoke "make"
+                              "-j" (if parallel-build?
+                                       (number->string (parallel-job-count))
+                                       "1")
+                              "maps")))
+                  (add-after 'build 'pack
+                    (lambda _
+                      (invoke "make" "pk3")))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let ((out (assoc-ref outputs "out")))
+                        (for-each (lambda (file)
+                                    (install-file file out))
+                                  (find-files "base" "\\.pk3$"))
+                        #t))))))
+    (native-inputs
+     `(("python" ,python-2)
+       ("ufo2map" ,ufo2map)
+       ("which" ,which)
+       ("zip" ,zip)))
+    (synopsis "UFO: AI data files")
+    (description
+     "This package contains maps and other assets for UFO: Alien Invasion.")
+    ;; Most assets are available under either GPL2 or GPL2+.  Some use other
+    ;; licenses, see LICENSES for details.
+    (license (list license:gpl2+ license:gpl2 license:cc-by3.0
+                   license:cc-by-sa3.0 license:public-domain))))
+
+(define-public ufoai
+  (package
+    (name "ufoai")
+    (version %ufoai-version)
+    (home-page "https://ufoai.org/")
+    (source ufoai-source)
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--prefix=" (assoc-ref %outputs "out"))
+             (string-append "--datadir=" (assoc-ref %outputs "out")
+                            "/share/games/ufo")
+             "CC=gcc" "CXX=g++"
+             "--enable-release"
+             "--enable-game"
+             "--disable-ufo2map"
+             "--disable-dependency-tracking"
+
+             ;; Disable hard links to prevent huge NARs.
+             "--disable-hardlinkedgame"
+             "--disable-hardlinkedcgame")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'symlink-data-files
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((data (assoc-ref inputs "ufoai-data")))
+                        ;; Symlink the data files to where the build system
+                        ;; expects to find them.  Ultimately these files are
+                        ;; copied to $out/share/games/ufoai/base, losing the
+                        ;; symlinks; we could fix that after install, but it
+                        ;; does not make a big difference in practice due to
+                        ;; deduplication.
+                        (with-directory-excursion "base"
+                          (for-each (lambda (file)
+                                      (symlink file (basename file)))
+                                    (find-files data "\\.pk3$")))
+                        #t)))
+                  (add-before 'configure 'create-language-files
+                    (lambda _
+                      (invoke "make" "lang")))
+                  (replace 'configure
+                    (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
+                      (apply invoke "./configure" configure-flags)))
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (if tests?
+                          (invoke "./testall")
+                          (format #t "test suite not run~%"))
+                      #t))
+                  (add-after 'install 'install-man-pages
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (man6 (string-append out "/share/man/man6")))
+                        (install-file "debian/ufo.6" man6)
+                        (install-file "debian/ufoded.6" man6)
+                        #t))))
+
+       ;; TODO: Some map tests occasionally fail because of randomness issues,
+       ;; e.g. not enough generated aliens.  The test runner also fails early
+       ;; in the build container with 'failed to shutdown server'?
+       #:tests? #f))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-2)
+       ("ufo2map" ,ufo2map)
+       ("ufoai-data" ,ufoai-data)))
+    (inputs
+     `(("curl" ,curl)
+       ("libjpeg" ,libjpeg-turbo)
+       ("libogg" ,libogg)
+       ("libpng" ,libpng)
+       ("libtheora" ,libtheora)
+       ("libvorbis" ,libvorbis)
+       ("libxml2" ,libxml2)
+       ("lua" ,lua-5.1)
+       ("mesa" ,mesa)
+       ("minixml" ,minixml)
+       ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer sdl2-ttf)))
+       ("zlib" ,zlib)))
+    (synopsis "Turn-based tactical strategy game")
+    (description
+     "UFO: Alien Invasion is a tactical strategy game set in the year 2084.
+You control a secret organisation charged with defending Earth from a brutal
+alien enemy.  Build up your bases, prepare your team, and dive head-first into
+the fast and flowing turn-based combat.
+
+Over the long term you will need to conduct research into the alien threat to
+figure out their mysterious goals and use their powerful weapons for your own
+ends.  You will produce unique items and use them in combat against your
+enemies.
+
+You can also use them against your friends with the multiplayer functionality.
+
+Warning: This is a pre-release version of UFO: AI!  Some things may not work
+properly.")
+
+    ;; The game code and most assets are GPL2+, but we use GPL2 only here
+    ;; because some assets do not use the "or later" clause.  Many individual
+    ;; assets use Creative Commons or Public Domain; see the LICENSE file.
+    (license (delete license:gpl2+ (package-license ufoai-data)))))
+
 (define-public xshogi
   (package
     (name "xshogi")
@@ -1994,7 +2438,7 @@ available, as well as a single-player mode with AI-controlled ships.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nevat/abbayedesmorts-gpl.git")
+             (url "https://github.com/nevat/abbayedesmorts-gpl")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2164,6 +2608,59 @@ into stereotyped or otherwise humorous dialects.  The filters are provided as
 a C library, so they can easily be integrated into other programs.")
     (license license:gpl2+)))
 
+(define-public taisei
+  (package
+    (name "taisei")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/taisei-project/"
+                           "taisei/releases/download/v" version
+                           "/taisei-v" version ".tar.xz"))
+       (sha256
+        (base32 "11f9mlqmzy1lszwcc1nsbar9q1hs4ml6pbm52hqfd4q0f4x3ln46"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:build-type "release"      ;comment out for bug-reporting (and cheats)
+       #:configure-flags
+       (list "-Dr_default=gles30"
+             "-Dr_gles20=true"
+             "-Dr_gles30=true"
+             "-Dshader_transpiler=true")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("python-docutils" ,python-docutils)
+       ("python-pygments" ,python-pygments)))
+    (inputs
+     `(("freetype" ,freetype)
+       ("libpng" ,libpng)
+       ("libwebp" ,libwebp)
+       ("libzip" ,libzip)
+       ("mesa" ,mesa)
+       ("openssl" ,openssl)
+       ("opusfile" ,opusfile)
+       ("sdl2" ,sdl2)
+       ("sdl2-mixer" ,sdl2-mixer)
+       ("shaderc" ,shaderc)
+       ("spirv-cross" ,spirv-cross)
+       ("zlib" ,zlib)))
+    (home-page "https://taisei-project.org/")
+    (synopsis "Shoot'em up fangame and libre clone of Touhou Project")
+    (description
+     "The player controls a character (one of three: Good, Bad, and Dead),
+dodges the missiles (lots of it cover the screen, but the character's hitbox
+is very small), and shoot at the adversaries that keep appear on the screen.")
+    (license (list ;;game
+                   license:expat
+                   ;;resources/00-taisei.pkgdir/bgm/
+                   ;;atlas/portraits/
+                   license:cc-by4.0
+                   ;;miscellaneous
+                   license:cc0
+                   license:public-domain))))
+
 (define-public cmatrix
   (package
     (name "cmatrix")
@@ -2172,7 +2669,7 @@ a C library, so they can easily be integrated into other programs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/abishekvashok/cmatrix.git")
+             (url "https://github.com/abishekvashok/cmatrix")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2489,7 +2986,7 @@ for common mesh file formats, and collision detection.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/thelaui/M.A.R.S..git")
+                      (url "https://github.com/thelaui/M.A.R.S.")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -2530,44 +3027,10 @@ enemies in different game modes such as space ball, death match, team death
 match, cannon keep, and grave-itation pit.")
       (license license:gpl3+))))
 
-(define minetest-data
-  (package
-    (name "minetest-data")
-    (version "5.1.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/minetest/minetest_game")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1r9fxz2j24q74a9injvbxbf2xk67fzabv616i676zw2cvgv9hn39"))))
-    (build-system trivial-build-system)
-    (native-inputs
-     `(("source" ,source)))
-    (arguments
-     `(#:modules ((guix build utils))
-       #:builder (begin
-                   (use-modules (guix build utils))
-                   (let ((install-dir (string-append
-                                       %output
-                                       "/share/minetest/games/minetest_game")))
-                     (mkdir-p install-dir)
-                     (copy-recursively
-                       (assoc-ref %build-inputs "source")
-                       install-dir)
-                     #t))))
-    (synopsis "Main game data for the Minetest game engine")
-    (description
-     "Game data for the Minetest infinite-world block sandbox game.")
-    (home-page "https://www.minetest.net/")
-    (license license:lgpl2.1+)))
-
 (define-public minetest
   (package
     (name "minetest")
-    (version "5.1.1")
+    (version "5.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2576,7 +3039,7 @@ match, cannon keep, and grave-itation pit.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0cjj63333b7j4ydfq0h9yc6d2jvmyjd7n7zbd08yrf0rcibrj2k0"))
+                "03ga3j3cg38w4lg4d4qxasmnjdl8n3lbizidrinanvyfdyvznyh6"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -2632,6 +3095,40 @@ in different ways.")
     (home-page "https://www.minetest.net/")
     (license license:lgpl2.1+)))
 
+(define minetest-data
+  (package
+    (name "minetest-data")
+    (version (package-version minetest))
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/minetest/minetest_game")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1liciwlh013z5h08ib0psjbwn5wkvlr937ir7kslfk4vly984cjx"))))
+    (build-system trivial-build-system)
+    (native-inputs
+     `(("source" ,source)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let ((install-dir (string-append
+                                       %output
+                                       "/share/minetest/games/minetest_game")))
+                     (mkdir-p install-dir)
+                     (copy-recursively
+                       (assoc-ref %build-inputs "source")
+                       install-dir)
+                     #t))))
+    (synopsis "Main game data for the Minetest game engine")
+    (description
+     "Game data for the Minetest infinite-world block sandbox game.")
+    (home-page "https://www.minetest.net/")
+    (license license:lgpl2.1+)))
+
 (define glkterm
   (package
    (name "glkterm")
@@ -3569,7 +4066,7 @@ Transport Tycoon Deluxe.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/OpenRCT2/OpenRCT2.git")
+             (url "https://github.com/OpenRCT2/OpenRCT2")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3777,7 +4274,7 @@ http://lavachat.symlynx.com/unix/")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/redeclipse/base.git")
+               (url "https://github.com/redeclipse/base")
                (commit (string-append "v" release))
                (recursive? #t))) ; for game data
          (file-name (git-file-name name version))
@@ -4069,24 +4566,40 @@ in-window at 640x480 resolution or fullscreen.")
 (define-public warzone2100
   (package
     (name "warzone2100")
-    (version "3.2.3")
+    (version "3.4.1")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/warzone2100/archives/"
-                           "unsupported/Warzone2100-"
-                           (version-major+minor version) "/" version
-                           "/warzone2100-" version ".tar.xz"))
+       (uri (string-append "mirror://sourceforge/warzone2100/releases/"
+                           version
+                           "/warzone2100_src.tar.xz"))
        (sha256
-        (base32 "10kmpr4cby95zwqsl1zwx95d9achli6khq7flv6xmrq30a39xazw"))))
-    (build-system gnu-build-system)
+        (base32 "0savalmw1kp1sf8vg5aqrl5hc77p4jacxy5y9qj8k2hi2vqdfb7a"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (with-directory-excursion "3rdparty"
+             (for-each
+              delete-file-recursively
+              '("discord-rpc"
+                "miniupnp"
+                "utfcpp")))
+             #t))))
+    (build-system cmake-build-system)
     (arguments
-     `(#:configure-flags '("--with-distributor=Guix")
+     `(#:configure-flags '("-DWZ_DISTRIBUTOR=Guix"
+                           "-DENABLE_DISCORD=off")
+       #:tests? #f ; TODO: Tests seem to be broken, configure.ac is missing.
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-utfcpp-include
+           (lambda _
+             (substitute* "lib/framework/wzstring.cpp"
+               (("<utfcpp/source/utf8.h>") "<utf8.h>"))
+             #t))
          (add-after 'unpack 'link-tests-with-qt
            (lambda _
-             (substitute* "tests/Makefile.in"
+             (substitute* "tests/Makefile.am"
                (("(framework_linktest_LDADD|maptest_LDADD) = " prefix)
                 (string-append prefix "$(QT5_LIBS) ")))
              #t))
@@ -4097,32 +4610,38 @@ in-window at 640x480 resolution or fullscreen.")
                 (string-append "iV_DrawTextRotated(\"Press ESC to exit.\", "
                                "100, 100, 0.0f, font_regular);")))
              #t)))))
-    (native-inputs `(("gettext" ,gettext-minimal)
+    (native-inputs `(("asciidoc" ,asciidoc)
+                     ("asciidoctor" ,ruby-asciidoctor)
+                     ("gettext" ,gettext-minimal)
                      ("pkg-config" ,pkg-config)
                      ("unzip" ,unzip)
-                     ("zip" ,zip)))
-    (inputs `(("fontconfig" ,fontconfig)
+                     ;; 7z is used to create .zip archive, not `zip' as in version 3.2.*.
+                     ("p7zip" ,p7zip)))
+    (inputs `(("curl" ,curl)
+              ("fontconfig" ,fontconfig)
               ("freetype" ,freetype)
-              ("fribidi" ,fribidi)
               ("glew" ,glew)
               ("harfbuzz" ,harfbuzz)
               ("libtheora" ,libtheora)
               ("libvorbis" ,libvorbis)
               ("libxrandr" ,libxrandr)
+              ("libsodium" ,libsodium)
+              ("miniupnpc" ,miniupnpc)
               ("openal" ,openal)
               ("physfs" ,physfs)
               ("qtbase" ,qtbase)
               ("qtscript" ,qtscript)
               ("openssl" ,openssl)
-              ("sdl2" ,sdl2)))
+              ("sdl2" ,sdl2)
+              ("utfcpp" ,utfcpp)))
     (home-page "https://wz2100.net")
     (synopsis "3D Real-time strategy and real-time tactics game")
     (description
      "Warzone 2100 offers campaign, multi-player, and single-player skirmish
-modes. An extensive tech tree with over 400 different technologies, combined
+modes.  An extensive tech tree with over 400 different technologies, combined
 with the unit design system, allows for a wide variety of possible units and
 tactics.")
-                                        ; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
+    ;; Everything is GPLv2+ unless otherwise specified in COPYING.NONGPL
     (license (list license:bsd-3
                    license:cc0
                    license:cc-by-sa3.0
@@ -4130,19 +4649,108 @@ tactics.")
                    license:gpl2+
                    license:lgpl2.1+))))
 
+(define-public widelands
+  (package
+    (name "widelands")
+    (version "21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://launchpad.net/widelands/"
+                           "build" version "/build" version "/+download/"
+                           "widelands-build" version "-source.tar.gz"))
+       (sha256
+        (base32 "0mz3jily0w1zxxqbnkqrp6hl88xhrwzbil9crq7gpcwidx60w7k0"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "src/third_party/minizip")
+           #t))
+       (patches
+        ;; Use system Minizip.  Patch is provided by Debian, and discussed
+        ;; upstream at <https://github.com/widelands/widelands/issues/399>.
+        (search-patches "widelands-system-wide_minizip.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (share (string-append out "/share")))
+         (list (string-append "-DCMAKE_INSTALL_PREFIX=" out "/bin")
+               (string-append "-DWL_INSTALL_BASEDIR=" share "/widelands")
+               (string-append "-DWL_INSTALL_DATADIR=" share "/widelands")
+               "-DOPTION_BUILD_WEBSITE_TOOLS=OFF"
+               ;; CMakeLists.txt does not handle properly RelWithDebInfo build
+               ;; type.  When used, no game data is installed!
+               "-DCMAKE_BUILD_TYPE=Release"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unbundle-fonts
+           ;; Unbundle fonts already packaged in Guix.  XXX: missing fonts are
+           ;; amiri, Culmus, mmrCensus, Nakula, and Sinhala.
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "data/i18n/fonts"
+               (for-each (lambda (font)
+                           (delete-file-recursively font)
+                           (symlink (string-append (assoc-ref inputs font)
+                                                   "/share/fonts/truetype")
+                                    font))
+                         '("DejaVu" "MicroHei")))
+             #t)))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("boost" ,boost)
+       ("glew" ,glew)
+       ("icu4c" ,icu4c)
+       ("libpng" ,libpng)
+       ("minizip" ,minizip)
+       ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
+       ("zlib" ,zlib)
+       ;; Fonts for the ‘unbundle-fonts’ phase.  Case matters in name!
+       ("DejaVu" ,font-dejavu)
+       ("MicroHei" ,font-wqy-microhei)))
+    (home-page "https://www.widelands.org/")
+    (synopsis "Fantasy real-time strategy game")
+    (description
+     "In Widelands, you are the regent of a small clan.  You start out with
+nothing but your headquarters, where all your resources are stored.
+
+In the course of the game, you will build an ever growing settlement.  Every
+member of your clan will do his or her part to produce more resources---wood,
+food, iron, gold and more---to further this growth.  The economic network is
+complex and different in the four tribes (Barbarians, Empire, Atlanteans, and
+Frisians).
+
+As you are not alone in the world, you will meet other clans sooner or later.
+Some of them may be friendly and you may eventually trade with them.  However,
+if you want to rule the world, you will have to train soldiers and fight.
+
+Widelands offers single-player mode with different campaigns; the campaigns
+all tell stories of tribes and their struggle in the Widelands universe!
+However, settling really starts when you unite with friends over the Internet
+or LAN to build up new empires together---or to crush each other in the dusts
+of war.  Widelands also offers an Artificial Intelligence to challenge you.")
+    ;; Game is released as GPL2+.  Some parts, e.g., art, are released under
+    ;; different licenses.
+    (license (list license:gpl2+
+                   license:expat           ;src/third_party/eris
+                   license:silofl1.1       ;Widelands.ttf
+                   license:cc-by-sa3.0)))) ;some music files
+
 (define-public starfighter
   (package
     (name "starfighter")
-    (version "2.2")
+    (version "2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/pr-starfighter/starfighter/releases"
                     "/download/v" version "/starfighter-"
-                    (version-major+minor version) "-src.tar.gz"))
+                    version "-src.tar.gz"))
               (sha256
                (base32
-                "1ldd9cbvl694ps4sapr8213m3zjrci7gii5x3kjjfalkikmndpd2"))))
+                "156ivi8cqqv9gxi8kj393av1s2sj7bblabm1b3kibla1s8l090n9"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -4461,7 +5069,7 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
     (source
      (origin (method git-fetch)
              (uri (git-reference
-                    (url "https://github.com/sgimenez/laby.git")
+                    (url "https://github.com/sgimenez/laby")
                     (commit (string-append name "-" version))))
              (file-name (git-file-name name version))
              (sha256
@@ -4804,7 +5412,7 @@ into the Space Age.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bartobri/no-more-secrets.git")
+             (url "https://github.com/bartobri/no-more-secrets")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4919,7 +5527,7 @@ Magic, Egypt, Indians, Norsemen, Persian or Romans.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/freegish/freegish.git")
+                      (url "https://github.com/freegish/freegish")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -4976,7 +5584,7 @@ emerges from a sewer hole and pulls her below ground.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cxong/cdogs-sdl.git")
+             (url "https://github.com/cxong/cdogs-sdl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5113,7 +5721,7 @@ small robot living in the nano world, repair its maker.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/teeworlds/teeworlds.git")
+                    (url "https://github.com/teeworlds/teeworlds")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5955,7 +6563,7 @@ some graphical niceities, and numerous bug-fixes and other improvements.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Novum/vkQuake.git")
+             (url "https://github.com/Novum/vkQuake")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6090,7 +6698,7 @@ making Yamagi Quake II one of the most solid Quake II implementations available.
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/the-butterfly-effect/tbe.git")
+              (url "https://github.com/the-butterfly-effect/tbe")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6142,7 +6750,7 @@ elements to achieve a simple goal in the most complex way possible.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pioneerspacesim/pioneer.git")
+                    (url "https://github.com/pioneerspacesim/pioneer")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -6189,7 +6797,7 @@ whatever you make of it.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/umayr/badass.git")
+                     (url "https://github.com/umayr/badass")
                      (commit commit)))
               (file-name (git-file-name name version))
               (sha256
@@ -6214,7 +6822,7 @@ Github or Gitlab.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/colobot/colobot.git")
+             (url "https://github.com/colobot/colobot")
              (commit (string-append "colobot-gold-" version))
              (recursive? #t)))          ;for "data/" subdir
        (file-name (git-file-name name version))
@@ -6289,7 +6897,7 @@ You can save humanity and get programming skills!")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/coelckers/gzdoom.git")
+             (url "https://github.com/coelckers/gzdoom")
              (commit (string-append "g" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6411,7 +7019,7 @@ online.")
 (define-public chocolate-doom
   (package
     (name "chocolate-doom")
-    (version "3.0.0")
+    (version "3.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.chocolate-doom.org/downloads/"
@@ -6421,7 +7029,7 @@ online.")
                                   ".tar.gz"))
               (sha256
                (base32
-                "1f6sw6qa9z0a70dsjh5cs45fkyyxw68s7vkqlykihz8cjcisdbkk"))))
+                "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl"))))
     (build-system gnu-build-system)
     (inputs `(("sdl2-net" ,sdl2-net)
               ("sdl2-mixer" , sdl2-mixer)
@@ -6451,7 +7059,7 @@ affect gameplay).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fabiangreffrath/crispy-doom.git")
+                    (url "https://github.com/fabiangreffrath/crispy-doom")
                     (commit (string-append "crispy-doom-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6493,7 +7101,7 @@ original.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/shlomif/rinutils.git")
+                    (url "https://github.com/shlomif/rinutils")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -7016,7 +7624,7 @@ when packaged in Blorb container files or optionally from individual files.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/kthakore/frozen-bubble.git")
+               (url "https://github.com/kthakore/frozen-bubble")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7135,7 +7743,7 @@ GameController.")
 (define-public quadrapassel
   (package
     (name "quadrapassel")
-    (version "3.32.0")
+    (version "3.36.02")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/quadrapassel/"
@@ -7143,7 +7751,7 @@ GameController.")
                                   "quadrapassel-" version ".tar.xz"))
               (sha256
                (base32
-                "1zhi1957knz9dm98drn2dh95mr33sdch590yddh1f8r6bzsfjvpy"))))
+                "0c80pzipxricyh4wydffsc94wj6ymnanqr9bg6wdx51hz1mmmilb"))))
     (build-system meson-build-system)
     (arguments
      '(#:glib-or-gtk? #t
@@ -7166,6 +7774,7 @@ GameController.")
     (inputs
      `(("clutter" ,clutter)
        ("clutter-gtk" ,clutter-gtk)
+       ("gsound" ,gsound)
        ("gtk+" ,gtk+)
        ("libcanberra" ,libcanberra)
        ("libmanette" ,libmanette)
@@ -7245,7 +7854,7 @@ civilized than your own.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stepmania/stepmania.git")
+             (url "https://github.com/stepmania/stepmania")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -7480,7 +8089,7 @@ and cooperative.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ryanakca/slingshot.git")
+             (url "https://github.com/ryanakca/slingshot")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -7783,7 +8392,7 @@ fight each other on an arena-like map.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/flareteam/flare-engine.git")
+                    (url "https://github.com/flareteam/flare-engine")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7811,7 +8420,7 @@ action RPGs.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/flareteam/flare-game.git")
+                    (url "https://github.com/flareteam/flare-game")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7937,7 +8546,7 @@ Orcus Dome from evil.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/HackerPoet/MarbleMarcher.git")
+                      (url "https://github.com/HackerPoet/MarbleMarcher")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -7995,15 +8604,15 @@ levels to unlock.")
 (define simgear
   (package
     (name "simgear")
-    (version "2018.3.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/flightgear/release-"
-                                  (version-major+minor version) "/"
-                                  "simgear-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "1941ay8rngz4vwsx37bbpxr48hpcvcbj3xw1hy264lq4qnl99c68"))))
+    (version "2018.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/flightgear/release-"
+                           (version-major+minor version) "/"
+                           "simgear-" version ".tar.bz2"))
+       (sha256
+        (base32 "1vkqm66r1205k3hdjmx5wmx5kvmsb0dgfzrs8n5gqnxj8szs42dl"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -8013,7 +8622,7 @@ levels to unlock.")
              ;; Skip tests that require internet access.
              (invoke "ctest" "-E" "(http|dns)"))))))
     (inputs
-     `(("boost" ,boost-for-mysql) ; fails with 1.69
+     `(("boost" ,boost-for-mysql)       ; fails with 1.69
        ("curl" ,curl)
        ("expat" ,expat)
        ("mesa" ,mesa)
@@ -8032,21 +8641,21 @@ and also provides the base for the FlightGear Flight Simulator.")
   (package
     (name "flightgear")
     (version (package-version simgear))
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/flightgear/release-"
-                                  (version-major+minor version) "/"
-                                  "flightgear-" version ".tar.bz2"))
-              (sha256
-               (base32
-                "0lzy524cjzs8vldcjcc750bgg5c4mq9fkymxxxzqf68ilc4d1jss"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; There are some bundled libraries.
-                  (for-each delete-file-recursively
-                            '("3rdparty/sqlite3/"))
-                  #t))))
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/flightgear/release-"
+                           (version-major+minor version) "/"
+                           "flightgear-" version ".tar.bz2"))
+       (sha256
+        (base32 "0ya3vb539kwi1qrifqhsj5j3k4w6s06hrllp2vdzxf6id7cgf0hc"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; There are some bundled libraries.
+           (for-each delete-file-recursively
+                     '("3rdparty/sqlite3/"))
+           #t))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -8112,7 +8721,7 @@ and also provides the base for the FlightGear Flight Simulator.")
                                "FlightGear-" version "-data.tar.bz2"))
            (sha256
             (base32
-             "0h4npa7gqpf5fw6pv2bpw0wbwr7fa2vhia21cjbigfgd75x82zi7"))))))
+             "04fv9za5zlyxlyfh6jx78y42l3jazvzl9dq2y6rzxqlcc9g5swhk"))))))
     (home-page "https://home.flightgear.org/")
     (synopsis "Flight simulator")
     (description "The goal of the FlightGear project is to create a
@@ -8187,7 +8796,15 @@ play with up to four players simultaneously.  It has network support.")
        #:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (invoke "ctest"))))))
+           (lambda _ (invoke "ctest")))
+         (add-after 'install 'install-icon
+           (lambda _
+             ;; Install icon for the desktop file.
+             (let* ((out (assoc-ref %outputs "out"))
+                    (icons (string-append out "/share/icons/hicolor/512x512/apps")))
+               (with-directory-excursion (string-append "../hedgewars-src-" ,version)
+                 (install-file "misc/hedgewars.png" icons)))
+             #t)))))
     (inputs
      `(("ffmpeg" ,ffmpeg)
        ("freeglut" ,freeglut)
@@ -8838,7 +9455,7 @@ win.")
                   (string-append "\"" roboto-dir "Roboto-" type ".ttf\");")))
                #t))))))
     (inputs
-     `(("boost" ,boost)
+     `(("boost" ,boost-with-python2)
        ("boost_signals" ,boost-signals2)
        ("font-dejavu" ,font-dejavu)
        ("font-roboto" ,font-google-roboto)
@@ -8875,7 +9492,7 @@ remake of that series or any other game.")
     (origin
      (method git-fetch)
      (uri (git-reference
-           (url "https://github.com/leela-zero/leela-zero.git")
+           (url "https://github.com/leela-zero/leela-zero")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
@@ -8923,7 +9540,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
    (source (origin
             (method git-fetch)
             (uri (git-reference
-                  (url "https://github.com/bernds/q5Go.git")
+                  (url "https://github.com/bernds/q5Go")
                   (commit (string-append "q5go-" version))))
             (file-name (git-file-name name version))
             (sha256
@@ -9031,7 +9648,7 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.")
     (synopsis "Stamp drawing toy")
     (description "KTuberling is a drawing toy intended for small children and
 adults who remain young at heart.  The game has no winner; the only purpose is
-to make the funniest faces you can.  Several activites are possible, e.g.:
+to make the funniest faces you can.  Several activities are possible, e.g.:
 
 @itemize
 @item Give the potato a funny face, clothes, and other goodies
@@ -10539,7 +11156,7 @@ This package is part of the KDE games module.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/xmoto/xmoto.git")
+             (url "https://github.com/xmoto/xmoto")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -10631,7 +11248,7 @@ the more difficult challenges.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fbergo/eboard.git")
+             (url "https://github.com/fbergo/eboard")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10670,20 +11287,21 @@ and chess engines.")
 (define-public chessx
   (package
     (name "chessx")
-    (version "1.5.0")
+    (version "1.5.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/chessx/chessx/"
                            version "/chessx-" version ".tgz"))
        (sha256
-        (base32 "09rqyra28w3z9ldw8sx07k5ap3sjlli848p737maj7c240rasc6i"))))
+        (base32 "1a3541vl5hp6jllgx998w9kjh9kp3wrl80yfwkxmq1bc5bzsrnz2"))))
     (build-system qt-build-system)
     (native-inputs
      `(("qttools" ,qttools)))
     (inputs
      `(("qtbase" ,qtbase)
        ("qtmultimedia" ,qtmultimedia)
+       ("qtspeech" ,qtspeech)
        ("qtsvg" ,qtsvg)
        ("zlib" ,zlib)))
     (arguments
@@ -10694,7 +11312,12 @@ and chess engines.")
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "chessx.pro"
                (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
-                (string-append (assoc-ref inputs "qttools") "/bin/lrelease")))
+                (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
+               ;; Fix missing translations.
+               (("TRANSLATIONS = i18n/chessx_de.ts")
+                "TRANSLATIONS = i18n/chessx_de.ts i18n/chessx_da.ts \\
+i18n/chessx_fr.ts i18n/chessx_it.ts i18n/chessx_cz.ts i18n/chessx_ru.ts \\
+i18n/chessx_es.ts"))
              #t))
          (add-after 'fix-paths 'make-qt-deterministic
            (lambda _
@@ -10727,7 +11350,7 @@ etc.  You can also play games on FICS or against an engine.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/official-stockfish/Stockfish.git")
+             (url "https://github.com/official-stockfish/Stockfish")
              (commit (string-append "sf_" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10789,10 +11412,37 @@ soldiers, jeeps and tanks.  The gameplay is simple but it is not that easy to
 get high scores.")
     (license license:gpl2+)))
 
+(define-public burgerspace
+  (package
+    (name "burgerspace")
+    (version "1.9.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://perso.b2b2c.ca/~sarrazip/dev/"
+                           "burgerspace-" version ".tar.gz"))
+       (sha256
+        (base32 "1005a04rbn4lzjrpfg0m394k2mfaji63fm2qhdqdsxila8a6kjbv"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("flatzebra" ,flatzebra)))
+    (home-page "http://perso.b2b2c.ca/~sarrazip/dev/burgerspace.html")
+    (synopsis "Avoid evil foodstuffs and make burgers")
+    (description
+     "This is a clone of the classic game BurgerTime.  In it, you play
+the part of a chef who must create burgers by stepping repeatedly on
+the ingredients until they fall into place.  And to make things more
+complicated, you also must avoid evil animate food items while
+performing this task, with nothing but your trusty pepper shaker to
+protect you.")
+    (license license:gpl2+)))
+
 (define-public 7kaa
   (package
     (name "7kaa")
-    (version "2.15.3")
+    (version "2.15.4p1")
     (source
      (origin
        (method url-fetch)
@@ -10800,7 +11450,7 @@ get high scores.")
                            "releases/download/v" version "/"
                            "7kaa-" version ".tar.xz"))
        (sha256
-        (base32 "0blj47mcsfw1sn3465j6iham8m6ki07iggnq4q8nnaqnryx710jc"))))
+        (base32 "1y7v0jhp3apb619p7asikqr1dnwb2yxbh40wbx1ppmr5f03mq9ph"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("gettext" ,gettext-minimal)
@@ -10832,7 +11482,7 @@ kingdom.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Neverball/neverball.git")
+               (url "https://github.com/Neverball/neverball")
                (commit commit)))
          (sha256
           (base32
@@ -10936,3 +11586,76 @@ and shovers to get to the goal.  Race against the clock to collect coins to
 earn extra balls.  Also included is Neverputt, which is a 3D miniature golf
 game.")  ;thanks to Debian for description
       (license license:gpl2+))))
+
+(define-public pokerth
+  (package
+    (name "pokerth")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/pokerth/pokerth/"
+                           version "/pokerth-" version ".tar.gz"))
+       (sha256
+        (base32 "0yi9bj3k8yc1gkwmaf14zbbvvn13n54n1dli8k6j1pkph3p3vjq2"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled websocketpp.
+           (delete-file-recursively "src/third_party/websocketpp")
+           (substitute* "pokerth_lib.pro"
+             (("src/third_party/websocketpp")
+              ""))
+           #t))))
+    (build-system qt-build-system)
+    (inputs
+     `(("boost" ,boost)
+       ("curl" ,curl)
+       ("gsasl" ,gsasl)
+       ("libgcrypt" ,libgcrypt)
+       ("libircclient" ,libircclient)
+       ("protobuf" ,protobuf-2)
+       ("qtbase" ,qtbase)
+       ("sdl" ,(sdl-union (list sdl sdl-mixer)))
+       ("sqlite" ,sqlite)
+       ("tinyxml" ,tinyxml)
+       ("websocketpp" ,websocketpp)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f ; No test suite
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (find-files "." "\\.pro$")
+               (("/opt/gsasl")
+                (assoc-ref inputs "gsasl"))
+               (("\\$\\$\\{PREFIX\\}/include/libircclient")
+                (string-append (assoc-ref inputs "libircclient")
+                               "/include/libircclient"))
+               (("LIB_DIRS =")
+                (string-append "LIB_DIRS = "
+                               (assoc-ref inputs "boost") "/lib")))
+             #t))
+         (add-after 'unpack 'fix-build
+           (lambda _
+             ;; Fixes for Boost versions >= 1.66.
+             (substitute* '("src/net/common/clientthread.cpp"
+                            "src/net/serveraccepthelper.h")
+               (("boost::asio::socket_base::non_blocking_io command\\(true\\);")
+                "")
+               (("newSock->io_control\\(command\\);")
+                "newSock->non_blocking(true);")
+               (("acceptedSocket->io_control\\(command\\);")
+                "acceptedSocket->non_blocking(true);"))
+             #t))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "qmake" "pokerth.pro" "CONFIG+=client"
+                     (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
+    (home-page "https://www.pokerth.net")
+    (synopsis "Texas holdem poker game")
+    (description
+     "With PokerTH you can play the Texas holdem poker game, either against
+computer opponents or against real players online.")
+    (license license:agpl3+)))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 0c5be69fbf..9ff5e3d7c0 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -687,48 +687,16 @@ as the 'native-search-paths' field."
          (variable "LIBRARY_PATH")
          (files '("lib" "lib64")))))
 
-(define-public gfortran-4.8
-  (hidden-package
-   (custom-gcc gcc-4.8 "gfortran" '("fortran")
-               %generic-search-paths)))
-
-(define-public gfortran-4.9
-  (hidden-package
-   (custom-gcc gcc-4.9 "gfortran" '("fortran")
-               %generic-search-paths)))
-
-(define-public gfortran-5
-  (hidden-package
-   (custom-gcc gcc-5 "gfortran" '("fortran")
-               %generic-search-paths)))
-
-(define-public gfortran-6
-  (hidden-package
-   (custom-gcc gcc-6 "gfortran" '("fortran")
-               %generic-search-paths)))
-
-(define-public gfortran-7
-  (hidden-package
-   (custom-gcc gcc-7 "gfortran" '("fortran")
-               %generic-search-paths)))
-
-(define-public gfortran-8
+(define-public gfortran
   (hidden-package
-   (custom-gcc gcc-8 "gfortran" '("fortran")
+   (custom-gcc gcc "gfortran" '("fortran")
                %generic-search-paths)))
 
-(define-public gfortran-9
+(define-public gdc-10
   (hidden-package
-   (custom-gcc gcc-9 "gfortran" '("fortran")
+   (custom-gcc gcc-10 "gdc" '("d")
                %generic-search-paths)))
 
-(define-public gfortran
-  ;; Note: Update this when GCC changes!  We cannot use
-  ;; (custom-gcc gcc "fortran" …) because that would lead to a package object
-  ;; that is not 'eq?' with GFORTRAN-5, and thus 'fold-packages' would
-  ;; report two gfortran@5 that are in fact identical.
-  gfortran-7)
-
 (define-public libgccjit
   (package
     (inherit gcc-9)
@@ -765,115 +733,87 @@ as the 'native-search-paths' field."
               ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
               #:separate-lib-output? #f))
 
+(define %objc-search-paths
+  (list (search-path-specification
+         (variable "OBJC_INCLUDE_PATH")
+         (files '("include")))
+        (search-path-specification
+         (variable "LIBRARY_PATH")
+         (files '("lib" "lib64")))))
+
 (define-public gcc-objc-4.8
   (custom-gcc gcc-4.8 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
 
 (define-public gcc-objc-4.9
   (custom-gcc gcc-4.9 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
 
 (define-public gcc-objc-5
   (custom-gcc gcc-5 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
 
 (define-public gcc-objc-6
   (custom-gcc gcc-6 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
 
 (define-public gcc-objc-7
   (custom-gcc gcc-7 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
 
 (define-public gcc-objc-8
   (custom-gcc gcc-8 "gcc-objc" '("objc")
-              (list (search-path-specification
-                     (variable "OBJC_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc-search-paths))
+
+(define-public gcc-objc-9
+  (custom-gcc gcc-9 "gcc-objc" '("objc")
+              %objc-search-paths))
+
+(define-public gcc-objc-10
+  (custom-gcc gcc-10 "gcc-objc" '("objc")
+              %objc-search-paths))
 
 (define-public gcc-objc gcc-objc-7)
 
+(define %objc++-search-paths
+  (list (search-path-specification
+         (variable "OBJCPLUS_INCLUDE_PATH")
+         (files '("include")))
+        (search-path-specification
+         (variable "LIBRARY_PATH")
+         (files '("lib" "lib64")))))
+
 (define-public gcc-objc++-4.8
   (custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
 
 (define-public gcc-objc++-4.9
   (custom-gcc gcc-4.9 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
 
 (define-public gcc-objc++-5
   (custom-gcc gcc-5 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
 
 (define-public gcc-objc++-6
   (custom-gcc gcc-6 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
 
 (define-public gcc-objc++-7
   (custom-gcc gcc-7 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
 
 (define-public gcc-objc++-8
   (custom-gcc gcc-8 "gcc-objc++" '("obj-c++")
-              (list (search-path-specification
-                     (variable "OBJCPLUS_INCLUDE_PATH")
-                     (files '("include")))
-                    (search-path-specification
-                     (variable "LIBRARY_PATH")
-                     (files '("lib" "lib64"))))))
+              %objc++-search-paths))
+
+(define-public gcc-objc++-9
+  (custom-gcc gcc-9 "gcc-objc++" '("obj-c++")
+              %objc++-search-paths))
+
+(define-public gcc-objc++-10
+  (custom-gcc gcc-10 "gcc-objc++" '("obj-c++")
+              %objc++-search-paths))
 
 (define-public gcc-objc++ gcc-objc++-7)
 
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index c6a2e0117d..0d632de52c 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; 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.
 ;;;
@@ -94,14 +94,14 @@ most common applications of GD involve website development.")
 (define-public perl-gd
   (package
     (name "perl-gd")
-    (version "2.71")
+    (version "2.72")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "GD-" version ".tar.gz"))
        (sha256
-        (base32 "1ivskdb4nwy7ky37369hwkfxp11fkp6ri5k7qlf2dmra7f3y86s5"))))
+        (base32 "014ik1rng6cnjfgdarkyy5m6wl4pdzc2b445m27krfn3zh9hgl31"))))
     (build-system perl-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index b27426c84f..830121751f 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015, 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
 
 (define-module (gnu packages gdb)
   #:use-module (gnu packages)
+  #:use-module (gnu packages hurd)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages dejagnu)
@@ -68,12 +70,20 @@
                      #t))
                   (add-after
                    'install 'remove-libs-already-in-binutils
-                   (lambda* (#:key inputs outputs #:allow-other-keys)
+                   (lambda* (#:key inputs outputs
+                             ;; TODO: Inline the native-inputs addition and
+                             ;; below usage in the next rebuild cycle.
+                             ,@(if (%current-target-system)
+                                   '(native-inputs)
+                                   '())
+                             #:allow-other-keys)
                      ;; Like Binutils, GDB installs libbfd, libopcodes, etc.
                      ;; However, this leads to collisions when both are
                      ;; installed, and really is none of its business,
                      ;; conceptually.  So remove them.
-                     (let* ((binutils (assoc-ref inputs "binutils"))
+                     (let* ((binutils ,@(if (%current-target-system)
+                                            '((assoc-ref native-inputs "binutils"))
+                                            '((assoc-ref inputs "binutils"))))
                             (out      (assoc-ref outputs "out"))
                             (files1   (with-directory-excursion binutils
                                         (append (find-files "lib")
@@ -98,11 +108,15 @@
 
        ;; Allow use of XML-formatted syscall information.  This enables 'catch
        ;; syscall' and similar commands.
-       ("libxml2" ,libxml2)))
+       ("libxml2" ,libxml2)
+
+       ;; The Hurd needs -lshouldbeinlibc.
+       ,@(if (hurd-target?) `(("hurd" ,hurd)) '())))
     (native-inputs
       `(("texinfo" ,texinfo)
         ("dejagnu" ,dejagnu)
-        ("pkg-config" ,pkg-config)))
+        ("pkg-config" ,pkg-config)
+        ,@(if (hurd-target?) `(("mig" ,mig)) '())))
     (home-page "https://www.gnu.org/software/gdb/")
     (synopsis "The GNU debugger")
     (description
@@ -116,16 +130,16 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
 ;; This version of GDB is required by some of the Rust compilers, see
 ;; <https://bugs.gnu.org/37810>.
 (define-public gdb-8.2
-  (package/inherit
-   gdb-9.1
-   (version "8.2.1")
-   (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://gnu/gdb/gdb-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "00i27xqawjv282a07i73lp1l02n0a3ywzhykma75qg500wll6sha"))))))
+  (package
+    (inherit gdb-9.1)
+    (version "8.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gdb/gdb-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "00i27xqawjv282a07i73lp1l02n0a3ywzhykma75qg500wll6sha"))))))
 
 (define-public gdb
   ;; This is the fixed version that packages depend on.  Update it rarely
@@ -140,6 +154,14 @@ written in C, C++, Ada, Objective-C, Pascal and more.")
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdb/gdb-"
                                   version ".tar.xz"))
+              (patches (search-patches "gdb-hurd.patch"))
               (sha256
                (base32
                 "0mf5fn8v937qwnal4ykn3ji1y2sxk0fa1yfqi679hxmpg6pdf31n"))))))
+
+(define-public gdb-minimal
+  (package/inherit
+   gdb-9.2
+   (name "gdb-minimal")
+   (inputs (fold alist-delete (package-inputs gdb)
+                 '("libxml2" "ncurses" "python-wrapper" "source-highlight")))))
diff --git a/gnu/packages/genealogy.scm b/gnu/packages/genealogy.scm
index 79b24ed048..dde0fddc25 100644
--- a/gnu/packages/genealogy.scm
+++ b/gnu/packages/genealogy.scm
@@ -44,7 +44,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gramps-project/gramps.git")
+             (url "https://github.com/gramps-project/gramps")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
index 27f55a398a..7ad710082c 100644
--- a/gnu/packages/genimage.scm
+++ b/gnu/packages/genimage.scm
@@ -45,7 +45,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pengutronix/genimage.git")
+                    (url "https://github.com/pengutronix/genimage")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index dc40974381..3b08b283b9 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -6,9 +6,9 @@
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
-;;; Copyright © 2018, 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018, 2019, 2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
@@ -86,6 +86,7 @@
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
@@ -602,7 +603,7 @@ development.")
 (define-public gdal
   (package
     (name "gdal")
-    (version "3.0.4")
+    (version "3.1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -610,7 +611,7 @@ development.")
                      version ".tar.gz"))
               (sha256
                (base32
-                "10symyajj1b7j98f889lqxxbmhcyvlhq9gg0l42h69bv22wx45gw"))
+                "1p6nmlsr8wbyq350pa6c22vrp98dcsa7yjnqsbhdbp74yj53nw9r"))
               (modules '((guix build utils)))
               (snippet
                 `(begin
@@ -666,9 +667,12 @@ development.")
        ("libwebp" ,libwebp)
        ("netcdf" ,netcdf)
        ("pcre" ,pcre)
+       ("postgresql" ,postgresql) ; libpq
        ("proj" ,proj)
        ("sqlite" ,sqlite)
        ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://gdal.org/")
     (synopsis "Raster and vector geospatial data format library")
     (description "GDAL is a translator library for raster and vector geospatial
@@ -854,16 +858,16 @@ to create databases that are optimized for rendering/tile/map-services.")
 (define-public libosmium
   (package
     (name "libosmium")
-    (version "2.15.4")
+    (version "2.15.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/osmcode/libosmium.git")
+             (url "https://github.com/osmcode/libosmium")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0mlcvqrhp40bzj5r5j9nfc5vbis8hmzcq9xi8jylkciyydaynhz4"))))
+        (base32 "0rqy18bbakp41f44y5id9ixh0ar2dby46z17p4115z8k1vv9znq2"))))
     (build-system cmake-build-system)
     (propagated-inputs
      `(("boost" ,boost)
@@ -887,16 +891,16 @@ OpenStreetMap data.")
 (define-public osm2pgsql
   (package
     (name "osm2pgsql")
-    (version "1.2.1")
+    (version "1.2.2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/openstreetmap/osm2pgsql.git")
+             (url "https://github.com/openstreetmap/osm2pgsql")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ysan01lpqzjxlq3y2kdminfjs5d9zksicpf9vvzpdk3fzq51fc9"))
+        (base32 "1j35aa8qinhavliqi5pdm0viyi7lm5xyk402rliaxxs1r2hbsafn"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -941,7 +945,7 @@ map, geocoding with Nominatim, or general analysis.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mapbox/tippecanoe.git")
+             (url "https://github.com/mapbox/tippecanoe")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1032,7 +1036,7 @@ map display.  Downloads map data from a number of websites, including
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/opengribs/XyGrib.git")
+                     (url "https://github.com/opengribs/XyGrib")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1160,10 +1164,55 @@ integrates an OSM map view into your Java application.  It is maintained as
 an independent project by the JOSM team.")
     (license license:gpl2)))
 
+(define-public java-opening-hours-parser
+  (package
+    (name "java-opening-hours-parser")
+    (version "0.21.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/simonpoole/OpeningHoursParser")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1m8sp0jbjyv1nq3ddj8rk6rf3sva3mkacc6vw7rsj0c2n57k3i50"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "java-opening-hours-parser.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources" "build/classes")
+             #t))
+         (add-before 'build 'generate-parser
+           (lambda* _
+             (let* ((dir "src/main/java/ch/poole/openinghoursparser")
+                    (file (string-append dir "/OpeningHoursParser.jj")))
+               (invoke "javacc" "-DEBUG_PARSER=false"
+                       "-DEBUG_TOKEN_MANAGER=false" "-JDK_VERSION=1.8"
+                       "-GRAMMAR_ENCODING=UTF-8"
+                       (string-append "-OUTPUT_DIRECTORY=" dir)
+                       file))
+             #t)))))
+    (inputs
+     `(("java-jetbrains-annotations" ,java-jetbrains-annotations)))
+    (native-inputs
+     `(("javacc" ,javacc)
+       ("java-junit" ,java-junit)
+       ("java-hamcrest-core" ,java-hamcrest-core)))
+    (home-page "https://github.com/simonpoole/OpeningHoursParser")
+    (synopsis "Java parser for the OpenStreetMap opening hour format")
+    (description "This is a very simplistic parser for string values according
+to the OSM opening hours specification.")
+    (license license:expat)))
+
 (define-public josm
   (package
     (name "josm")
-    (version "15937")
+    (version "16731")
     (source (origin
               (method svn-fetch)
               (uri (svn-reference
@@ -1172,7 +1221,7 @@ an independent project by the JOSM team.")
                      (recursive? #f)))
               (sha256
                (base32
-                "00b8sw0wgkcf7xknmdpn5s521ax8x2660figidcrry37sgq3x946"))
+                "036kdb1ckhym5f7lj5ydzblli7f1i1pl8z00hxvagf2rczdf5fi3"))
               (file-name (string-append name "-" version "-checkout"))
               (modules '((guix build utils)))
             (snippet
@@ -1189,6 +1238,7 @@ an independent project by the JOSM team.")
        ("java-jsonp-api" ,java-jsonp-api)
        ("java-jsonp-impl" ,java-jsonp-impl); runtime dependency
        ("java-metadata-extractor" ,java-metadata-extractor)
+       ("java-opening-hours-parser" ,java-opening-hours-parser)
        ("java-openjfx-media" ,java-openjfx-media)
        ("java-signpost-core" ,java-signpost-core)
        ("java-svg-salamander" ,java-svg-salamander)))
@@ -1210,6 +1260,14 @@ an independent project by the JOSM team.")
                                   "<date>1970-01-01 00:00:00 +0000</date>"
                                   "</commit></entry></info>"))))
              #t))
+         (add-before 'build 'fix-jcs
+           (lambda _
+             ;; This version of JOSM uses an unreleased version of commons-jcs,
+             ;; which has renamed its classes to another namespace.  Rename them
+             ;; back so they can be used with our version of jcs.
+             (substitute* (find-files "." ".*.java$")
+               (("jcs3") "jcs"))
+             #t))
          (add-before 'build 'fix-classpath
            (lambda* (#:key inputs #:allow-other-keys)
              (setenv "CLASSPATH"
@@ -1243,10 +1301,9 @@ an independent project by the JOSM team.")
              (invoke "java" "-cp" "build/classes:scripts:."
                      "BuildProjectionDefinitions" ".")
              #t))
-         (add-after 'generate-epsg 'copy-data
+         (add-after 'generate-epsg 'copy-resources
            (lambda _
-             (mkdir-p "build/classes")
-             (rename-file "data" "build/classes/data")
+             (copy-recursively "resources" "build/classes")
              #t))
          (add-before 'install 'regenerate-jar
            (lambda _
@@ -1255,16 +1312,6 @@ an independent project by the JOSM team.")
              (invoke "jar" "-cf" "build/jar/josm.jar" "-C"
                      "build/classes" ".")
              #t))
-         (add-before 'build 'copy-styles
-           (lambda _
-             (mkdir-p "build/classes")
-             (rename-file "styles" "build/classes/styles")
-             #t))
-         (add-before 'build 'copy-images
-           (lambda _
-             (mkdir-p "build/classes")
-             (rename-file "images" "build/classes/images")
-             #t))
          (add-before 'build 'copy-revision
            (lambda _
              (mkdir-p "build/classes")
@@ -1425,7 +1472,7 @@ using the dataset of topographical information collected by
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Maproom/qmapshack.git")
+             (url "https://github.com/Maproom/qmapshack")
              (commit (string-append "V_" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1577,7 +1624,7 @@ exchanged form one Spatial DBMS and the other.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/OpenCPN/OpenCPN.git")
+             (url "https://github.com/OpenCPN/OpenCPN")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1858,6 +1905,7 @@ growing set of geoscientific methods.")
                              "qgis_filedownloader"
                              ;; TODO: Find why the following tests fail
                              "ProcessingQgisAlgorithmsTestPt1"
+                             "ProcessingQgisAlgorithmsTestPt2"
                              "ProcessingQgisAlgorithmsTestPt3"
                              "ProcessingQgisAlgorithmsTestPt4"
                              "ProcessingGdalAlgorithmsRasterTest"
@@ -1872,6 +1920,7 @@ growing set of geoscientific methods.")
                              "qgis_geometrytest"
                              "qgis_layouthtmltest"
                              "qgis_layoutmaptest"
+                             "qgis_layoutmapgridtest"
                              "qgis_painteffecttest"
                              "qgis_pallabelingtest"
                              "qgis_svgmarkertest"
@@ -1890,6 +1939,11 @@ growing set of geoscientific methods.")
                              "PyQgsFileUtils"
                              "PyQgsGeometryTest"
                              "PyQgsImageCache"
+                             "PyQgsLayerMetadata"
+                             "PyQgsLayout"
+                             "PyQgsLayoutHtml"
+                             "PyQgsLayoutMapGrid"
+                             "PyQgsMetadataBase"
                              "PyQgsLayoutExporter"
                              "PyQgsLayoutLegend"
                              "PyQgsMapLayer"
@@ -2043,3 +2097,52 @@ architecture.")
       license:opl1.0+
       license:public-domain
       license:qwt1.0))))
+
+(define-public python-geographiclib
+  (package
+    (name "python-geographiclib")
+    (version "1.50")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "geographiclib" version))
+        (sha256
+         (base32
+          "0cn6ap5fkh3mkfa57l5b44z3gvz7j6lpmc9rl4g2jny2gvp4dg8j"))))
+    (build-system python-build-system)
+    (home-page "https://geographiclib.sourceforge.io/1.50/python/")
+    (synopsis "Python geodesic routines from GeographicLib")
+    (description
+     "This is a python implementation of the geodesic routines in GeographicLib.")
+    (license license:expat)))
+
+(define-public python-geopy
+  (package
+    (name "python-geopy")
+    (version "2.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "geopy" version))
+        (sha256
+         (base32
+          "0fx0cv0kgbvynpmjgsvq2fpsyngd5idiscdn8pd5201f1ngii3mq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-geographiclib" ,python-geographiclib)))
+    (native-inputs
+     `(("python-async-generator" ,python-async-generator)
+       ("python-coverage" ,python-coverage)
+       ("python-flake8" ,python-flake8)
+       ("python-isort" ,python-isort)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-readme-renderer" ,python-readme-renderer)
+       ("python-pytz" ,python-pytz)))
+    (home-page "https://github.com/geopy/geopy")
+    (synopsis "Geocoding library for Python")
+    (description "@code{geopy} is a Python client for several popular geocoding
+web services.  @code{geopy} makes it easy for Python developers to locate the
+coordinates of addresses, cities, countries, and landmarks across the globe
+using third-party geocoders and other data sources.")
+    (license license:expat)))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index c52dc7a4d1..c2fca073e3 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -311,7 +311,7 @@ brushstrokes which is used by MyPaint and GIMP.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mypaint/mypaint-brushes.git")
+             (url "https://github.com/mypaint/mypaint-brushes")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -337,7 +337,7 @@ MyPaint.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mypaint/mypaint-brushes.git")
+             (url "https://github.com/mypaint/mypaint-brushes")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 41fc8ae697..fb33bd7f6d 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
@@ -193,7 +193,7 @@ Polygon meshes, and Extruded polygon meshes.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/divVerent/s2tc.git")
+             (url "https://github.com/divVerent/s2tc")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -701,7 +701,7 @@ OpenGL graphics API.")
 (define-public libglvnd
   (package
     (name "libglvnd")
-    (version "1.3.1")
+    (version "1.3.2")
     (home-page "https://gitlab.freedesktop.org/glvnd/libglvnd")
     (source (origin
               (method git-fetch)
@@ -711,7 +711,7 @@ OpenGL graphics API.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0mkzdzdxjxjl794rblq4mq33wmb8ikqmfswbqdbr8gw2kw4wlhdl"))))
+                "10x7fgb114r4gikdg6flszl3kwzcb9y5qa7sj9936mk0zxhjaylz"))))
     (build-system meson-build-system)
     (arguments
      '(#:configure-flags '("-Dx11=enabled")
@@ -833,7 +833,7 @@ and surfaces, receiving input and events.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/extemporelang/nanovg.git")
+                      (url "https://github.com/extemporelang/nanovg")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -893,7 +893,7 @@ mixed vector/bitmap output.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/VirtualGL/virtualgl.git")
+             (url "https://github.com/VirtualGL/virtualgl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 94dc6adf6f..9f0721b8c2 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -68,7 +68,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
-  #:use-module (srfi srfi-1)
+  #:use-module ((srfi srfi-1) #:hide (zip))
 
   ;; Export variables up-front to allow circular dependency with the 'xorg'
   ;; module.
@@ -1019,7 +1019,7 @@ other API remains the same.")
 (define-public template-glib
   (package
     (name "template-glib")
-    (version "3.32.0")
+    (version "3.34.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -1027,7 +1027,7 @@ other API remains the same.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1g0zx0sxpw8kqp7p3sgl9kngaqrg9xl6cir24nrahks0vgsk98rr"))))
+                "1z9xkin5fyfh071ma9y045jcw83hgx33dfbjraw6cxk0qdmfysr1"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-D" "enable_gtk_doc=true")))
diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm
index 53be103495..83e0fc785e 100644
--- a/gnu/packages/gnome-xyz.scm
+++ b/gnu/packages/gnome-xyz.scm
@@ -98,7 +98,7 @@ like Gnome, Unity, Budgie, Pantheon, XFCE, Mate and others.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/madmaxms/iconpack-delft.git")
+             (url "https://github.com/madmaxms/iconpack-delft")
              (commit (string-append "v" version))))
        (sha256
         (base32
@@ -244,7 +244,7 @@ easier to keep track of apps running in the backround.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/micheleg/dash-to-dock.git")
+                    (url "https://github.com/micheleg/dash-to-dock")
                     (commit (string-append "extensions.gnome.org-v"
                                            version))))
               (sha256
@@ -423,7 +423,7 @@ currently focused application in the top panel of the GNOME shell.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/home-sweet-gnome/dash-to-panel.git")
+                    (url "https://github.com/home-sweet-gnome/dash-to-panel")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -462,7 +462,7 @@ into a single panel, similar to that found in KDE Plasma and Windows 7+.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/BjoernDaase/noannoyance.git")
+                    (url "https://github.com/BjoernDaase/noannoyance")
                     (commit "e37b5b3c31f577b4698bc6659bc9fec5ea9ac5d4")))
               (sha256
                (base32
@@ -485,7 +485,7 @@ It uses ES6 syntax and claims to be more actively maintained than others.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/paperwm/PaperWM.git")
+                    (url "https://github.com/paperwm/PaperWM")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -522,7 +522,7 @@ notebooks and tiling window managers.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/numixproject/numix-gtk-theme.git")
+                    (url "https://github.com/numixproject/numix-gtk-theme")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -564,7 +564,7 @@ dark elements.  It supports GNOME, Unity, Xfce, and Openbox.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git")
+               (url "https://github.com/PapirusDevelopmentTeam/papirus-icon-theme")
                (commit tag)))
          (sha256
           (base32
@@ -597,7 +597,7 @@ and a few extra features.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/benwaffle/vala-language-server.git")
+                    (url "https://github.com/benwaffle/vala-language-server")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e71af00bf8..116f6d660f 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
-;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2016, 2020 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
@@ -2352,7 +2352,7 @@ library.")
   (package
     (inherit librsvg)
     (name "librsvg")
-    (version "2.46.4")
+    (version "2.48.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/librsvg/"
@@ -2360,13 +2360,10 @@ library.")
                                   "librsvg-" version ".tar.xz"))
               (sha256
                (base32
-                "0afc82nsxc6kw136xid4vcq9kmq4rmgzzk8bh2pvln2cnvirwnxl"))
+                "14i6xzghcidv64cyd3g0wdjbl82rph737yxn9s3x29nzpcjs707l"))
               (modules '((guix build utils)))
               (snippet
                '(begin (delete-file-recursively "vendor")
-                       ;; Don't demand an exact version for string_cache
-                       (substitute* "rsvg_internals/Cargo.toml"
-                         (("\"=") "\""))
                        #t))))
     (build-system cargo-build-system)
     (arguments
@@ -2376,48 +2373,49 @@ library.")
        #:vendor-dir "vendor"
        #:cargo-inputs
        (("rust-bitflags" ,rust-bitflags-1)
-        ("rust-cairo-rs" ,rust-cairo-rs-0.7)
+        ("rust-cairo-rs" ,rust-cairo-rs-0.8)
         ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9)
-        ("rust-cssparser" ,rust-cssparser-0.25)
+        ("rust-cast" ,rust-cast-0.2)
+        ("rust-cssparser" ,rust-cssparser-0.27)
         ("rust-data-url" ,rust-data-url-0.1)
         ("rust-downcast-rs" ,rust-downcast-rs-1.1)
         ("rust-encoding" ,rust-encoding-0.2)
-        ("rust-float-cmp" ,rust-float-cmp-0.5)
-        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.7)
+        ("rust-float-cmp" ,rust-float-cmp-0.6)
+        ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8)
         ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9)
-        ("rust-gio" ,rust-gio-0.7)
+        ("rust-gio" ,rust-gio-0.8)
         ("rust-gio-sys" ,rust-gio-sys-0.9)
-        ("rust-glib" ,rust-glib-0.8)
+        ("rust-glib" ,rust-glib-0.9)
         ("rust-glib-sys" ,rust-glib-sys-0.9)
         ("rust-gobject-sys" ,rust-gobject-sys-0.9)
         ("rust-itertools" ,rust-itertools-0.8)
         ("rust-language-tags" ,rust-language-tags-0.2)
-        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-locale-config" ,rust-locale-config-0.3)
-        ("rust-markup5ever" ,rust-markup5ever-0.9)
-        ("rust-nalgebra" ,rust-nalgebra-0.18)
+        ("rust-markup5ever" ,rust-markup5ever-0.10)
+        ("rust-nalgebra" ,rust-nalgebra-0.19)
         ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-once-cell" ,rust-once-cell-1.2)
         ("rust-pkg-config" ,rust-pkg-config-0.3)
-        ("rust-pango" ,rust-pango-0.7)
+        ("rust-pango" ,rust-pango-0.8)
         ("rust-pango-sys" ,rust-pango-sys-0.9)
-        ("rust-pangocairo" ,rust-pangocairo-0.8)
-        ("rust-phf" ,rust-phf-0.7)
-        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-pangocairo" ,rust-pangocairo-0.9)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-rctree" ,rust-rctree-0.3)
-        ("rust-string-cache" ,rust-string-cache-0.7)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-rgb" ,rust-rgb-0.8)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-selectors" ,rust-selectors-0.22)
         ("rust-url" ,rust-url-2.1)
-        ("rust-xml-rs" ,rust-xml-rs-0.8))
+        ("rust-xml5ever" ,rust-xml5ever-0.16))
        #:cargo-development-inputs
-       (("rust-cairo-rs" ,rust-cairo-rs-0.7)
-        ("rust-criterion" ,rust-criterion-0.2))
+       (("rust-cairo-rs" ,rust-cairo-rs-0.8)
+        ("rust-criterion" ,rust-criterion-0.3))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'prepare-for-build
            (lambda _
              ;; In lieu of #:make-flags
-             (setenv "CC" "gcc")
+             (setenv "CC" ,(cc-for-target))
              ;; Something about the build environment resists building
              ;; successfully with the '--locked' flag.
              (substitute* '("Makefile.am"
@@ -2438,12 +2436,13 @@ library.")
                 "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
              #t))
          (add-after 'configure 'gnu-configure
-           (assoc-ref gnu:%standard-phases 'configure))
-           ;(lambda* (#:key outputs #:allow-other-keys)
-           ;  ((assoc-ref gnu:%standard-phases 'configure)
-           ;   #:outputs outputs
-           ;   #:configure-flags ("--disable-static"
-           ;                      "--enable-vala"))))
+           (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
+             ((assoc-ref gnu:%standard-phases 'configure)
+              #:native-inputs native-inputs
+              #:inputs inputs
+              #:outputs outputs
+              #:configure-flags (list "--disable-static"
+                                      "--enable-vala"))))
          (add-after 'configure 'dont-vendor-self
            (lambda* (#:key vendor-dir #:allow-other-keys)
              ;; Don't keep the whole tarball in the vendor directory
@@ -2457,28 +2456,10 @@ library.")
              ((assoc-ref gnu:%standard-phases 'check)
               #:test-target "check")))
          (replace 'install
-           (assoc-ref gnu:%standard-phases 'install))
-         (add-before 'check 'remove-failing-tests
-           (lambda _
-             (with-directory-excursion "tests/fixtures/reftests"
-               (for-each delete-file
-                         '(;; The images produced by these tests differ slightly
-                           ;; from their reference counterparts due to differences
-                           ;; in the build environment (missing fonts, etc).  See
-                           ;; <tests/README.md> for details.
-                           ;; These fail on x86_64.
-                           "svg1.1/coords-viewattr-02-b.svg"
-                           "svg1.1/filters-composite-04-f.svg"
-                           "svg1.1/filters-image-01-b.svg"
-                           "svg1.1/filters-conv-02-f.svg"
-                           "svg1.1/filters-conv-04-f.svg"
-                           ;; This test fails on i686:
-                           "svg1.1/masking-path-04-b.svg"
-                           ;; This test fails on armhf:
-                           "svg1.1/masking-mask-01-b.svg"
-                           ;; This test fails on aarch64:
-                           "bugs/777834-empty-text-children.svg")))
-             #t)))))
+           (assoc-ref gnu:%standard-phases 'install)))))
+    (inputs
+     `(("pango" ,pango)
+       ,@(alist-delete "pango" (package-inputs librsvg))))
     (license license:lgpl2.1+)))
 
 (define-public libidl
@@ -3983,6 +3964,47 @@ and other secrets.  It communicates with the \"Secret Service\" using DBus.")
 floating in an ocean using only your brain and a little bit of luck.")
     (license license:gpl2+)))
 
+(define-public gnome-multi-writer
+  (package
+    (name "gnome-multi-writer")
+    (version "3.35.90")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/gnome-multi-writer/"
+                           (version-major+minor version) "/"
+                           "gnome-multi-writer-" version ".tar.xz"))
+       (sha256
+        (base32
+         "07vgzjjdrxcp7h73z13h9agafxb4vmqx5i81bcfyw0ilw9kkdzmp"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:glib-or-gtk? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-post-install
+           (lambda _
+             (substitute* "meson.build"
+               (("meson.add_install_script" &) (string-append "# " &)))
+             #t)))))
+    (native-inputs
+     `(("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("glib" ,glib)                   ; for gio
+       ("gusb" ,gusb)
+       ("udisks" ,udisks)
+       ("libgudev" ,libgudev)
+       ("libcanberra" ,libcanberra)
+       ("polkit" ,polkit)))
+    (home-page "https://wiki.gnome.org/Apps/MultiWriter")
+    (synopsis "Write to multiple USB devices at once")
+    (description
+     "MultiWriter can be used to write an ISO file to multiple USB devices at
+once.")
+    (license license:gpl2+)))
+
 (define-public gnome-sudoku
   (package
     (name "gnome-sudoku")
@@ -5403,7 +5425,7 @@ DAV, and others.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/hughsie/libgusb.git")
+                     (url "https://github.com/hughsie/libgusb")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5802,7 +5824,7 @@ classes for commonly used data structures.")
 (define-public gexiv2
   (package
     (name "gexiv2")
-    (version "0.12.0")
+    (version "0.12.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -5810,7 +5832,7 @@ classes for commonly used data structures.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0slj5yj8c90l9pp5i3z74x5r3r4da0xfmbzkfq5k0dkg72q3kxaq"))))
+                "0xxxq8xdkgkn146my307jgws4qgxx477h0ybg1mqza1ycmczvsla"))))
     (build-system meson-build-system)
     (native-inputs
      `(("gcr" ,gcr)
@@ -6788,8 +6810,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
                                              "/bin/modprobe"))
                     (pretty-ovpn (string-append "\"" openconnect "\"")))
                (substitute* "src/nm-openconnect-service.c"
-                 (("\"/usr/local/sbin/openconnect\"") pretty-ovpn)
-                 (("\"/usr/sbin/openconnect\"") pretty-ovpn)
+                 (("\"/usr(/local)?/s?bin/openconnect\"") pretty-ovpn)
                  (("/sbin/modprobe") modprobe)))
              #t)))))
     (native-inputs
@@ -8466,7 +8487,7 @@ functionality and behavior.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/NicoHood/arc-theme.git")
+                    (url "https://github.com/NicoHood/arc-theme")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -8509,7 +8530,7 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/snwh/faba-icon-theme.git")
+             (url "https://github.com/snwh/faba-icon-theme")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8542,7 +8563,7 @@ Moka")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/snwh/moka-icon-theme.git")
+             (url "https://github.com/snwh/moka-icon-theme")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8565,7 +8586,7 @@ simple and consistent.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/horst3180/arc-icon-theme.git")
+             (url "https://github.com/horst3180/arc-icon-theme")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9436,7 +9457,7 @@ configurable file renaming. ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rcaelers/workrave.git")
+             (url "https://github.com/rcaelers/workrave")
              (commit (string-append "v" (string-map
                                          (match-lambda (#\. #\_) (chr chr))
                                          version)))))
@@ -10224,7 +10245,7 @@ card sheets that you’ll find at most office supply stores.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libratbag/libratbag.git")
+             (url "https://github.com/libratbag/libratbag")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10291,7 +10312,7 @@ your operating-system definition:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libratbag/piper.git")
+             (url "https://github.com/libratbag/piper")
              (commit version)))
        (sha256
         (base32 "00vrcsbsv2477l1ncpyzc61lhxgac84dsgr3sjs8qxw3nh1gaasv"))
@@ -10358,7 +10379,7 @@ provided there is a DBus service present:
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gkarsay/parlatype.git")
+               (url "https://github.com/gkarsay/parlatype")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10466,3 +10487,117 @@ GObject introspection bindings.")
      (home-page "https://source.puri.sm/Librem5/feedbackd")
      (license (list license:lgpl2.1+   ; libfeedbackd
                     license:lgpl3+)))) ; the rest
+
+(define-public sysprof
+  (package
+    (name "sysprof")
+    (version "3.34.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "1l4kr1av7933vb4zql9c5lgzivlw64hyky4nr8xin1v5if6vnjw4"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-Dsystemdunitdir="
+                            %output
+                            "/share/systemd"))
+       #:tests? #f ; 3/4 test-model-filter barfs some dbus nonsense
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-install-script
+           (lambda _
+             (substitute* "build-aux/meson/post_install.sh"
+               (("gtk-update-icon-cache") "true")
+               (("update-desktop-database") "true"))
+             #t)))))
+    (inputs
+     `(("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("libdazzle" ,libdazzle)
+       ("polkit" ,polkit)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
+       ("itstool" ,itstool)
+       ("pkg-config" ,pkg-config)
+       ("xmllint" ,libxml2)))
+    (home-page "http://www.sysprof.com/")
+    (synopsis "System-wide performance profiler")
+    (description "Sysprof is a sampling profiler that uses a kernel module
+to generate stacktraces which are then interpreted by the userspace program
+@command{sysprof}.")
+    (license license:gpl3+)))
+
+(define-public gnome-builder
+  (package
+    (name "gnome-builder")
+    (version "3.36.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version) "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "17pvmd5jypar8dkr6w56hvf7jnq4l1wih2wwgkrv7sblr7rkkar2"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags (list "-Dnetwork_tests=false"
+                               ;; TODO: Enable all plugins...
+                               "-Dplugin_clang=false"
+                               "-Dplugin_flatpak=false"
+                               "-Dplugin_glade=false"
+                               ;; ... except this one.
+                               "-Dplugin_update_manager=false")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-meson
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "build-aux/meson/post_install.py"
+               (("gtk-update-icon-cache") "true")
+               (("update-desktop-database") "true"))
+             (substitute* "src/libide/meson.build"
+               (("/usr/lib")
+                (string-append (assoc-ref inputs "python-pygobject")
+                               "/lib")))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t)))))
+    (inputs
+     `(("devhelp" ,devhelp)
+       ("gspell" ,gspell)
+       ("gtk+" ,gtk+)
+       ("json-glib" ,json-glib)
+       ("jsonrpc-glib" ,jsonrpc-glib)
+       ("libdazzle" ,libdazzle)
+       ("libgit2-glib" ,libgit2-glib)
+       ("libpeas" ,libpeas)
+       ("python-pygobject" ,python-pygobject)
+       ("sysprof" ,sysprof)
+       ("template-glib" ,template-glib)
+       ("vte" ,vte)
+       ("webkitgtk" ,webkitgtk)))
+    (propagated-inputs
+     `(("gtksourceview" ,gtksourceview)))         ;needed for settings
+    (native-inputs
+     `(("desktop-file-utils" ,desktop-file-utils) ;for desktop-file-validate
+       ("glib:bin" ,glib "bin")
+       ("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)
+       ("xorg-server" ,xorg-server-for-tests)))
+    (home-page "https://wiki.gnome.org/Apps/Builder")
+    (synopsis "Toolsmith for GNOME-based applications")
+    (description "Builder aims to be an integrated development
+environment (IDE) for writing GNOME-based software.  It features fuzzy search,
+auto-completion, a mini code map, documentation browsing, Git integration, an
+integrated profiler via Sysprof, debugging support, and more.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index f2ab3a1c27..979dadbe2e 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
@@ -250,7 +251,7 @@ supports HTTP, HTTPS and GnuTLS.")
 (define-public gnunet
   (package
    (name "gnunet")
-   (version "0.12.2")
+   (version "0.13.1")
    (source
     (origin
       (method url-fetch)
@@ -258,7 +259,7 @@ supports HTTP, HTTPS and GnuTLS.")
                           ".tar.gz"))
       (sha256
        (base32
-        "1mwcy7fj1rpd39w7j7k3jdwlil5s889b2qlhfdggqmhigl28na5c"))))
+        "15jnca5zxng7r6m3qzq9lr73xxq0v6mvcp0lny3zrlkz5s2nmmq3"))))
    (build-system gnu-build-system)
    (inputs
     `(("bluez" ,bluez)
@@ -274,6 +275,7 @@ supports HTTP, HTTPS and GnuTLS.")
       ("libltdl" ,libltdl)
       ("libmicrohttpd" ,libmicrohttpd)
       ("libogg" ,libogg)
+      ("libsodium" ,libsodium)
       ("libunistring" ,libunistring)
       ("miniupnpc" ,miniupnpc)
       ("opus" ,opus)
@@ -282,7 +284,8 @@ supports HTTP, HTTPS and GnuTLS.")
       ("zbar" ,zbar)
       ("zlib" ,zlib)))
    (native-inputs
-    `(("pkg-config" ,pkg-config)
+    `(("curl" ,curl)
+      ("pkg-config" ,pkg-config)
       ("python" ,python)
       ("xxd" ,xxd)
       ("which" ,(@ (gnu packages base) which))))
@@ -293,17 +296,6 @@ supports HTTP, HTTPS and GnuTLS.")
         (add-after 'configure 'remove-failing-tests
           ;; These tests fail in Guix's building environment.
           (lambda _
-            (substitute* "src/cadet/Makefile"
-              (("test_cadet_2_reopen\\$\\(EXEEXT\\) \\\\\n") "test_cadet_2_reopen$(EXEEXT)")
-              (("test_cadet_5_forward\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_signal\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_keepalive\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_speed\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_speed_ack\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_speed_reliable\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_speed_reliable_backwards\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_speed_backwards\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_cadet_5_reopen\\$\\(EXEEXT\\)") ""))
             (substitute* "src/transport/Makefile"
               (("\\$\\(am__EXEEXT_15\\)") "") ; test_transport_api_https
               (("test_transport_api_manipulation_cfg\\$\\(EXEEXT\\) \\\\\n") "")
@@ -311,8 +303,9 @@ supports HTTP, HTTPS and GnuTLS.")
               (("test_transport_blacklisting_multiple_plugins\\$\\(EXEEXT\\) \\\\\n") ""))
             (substitute* "src/testbed/Makefile"
               (("test_testbed_api_2peers_1controller\\$\\(EXEEXT\\) \\\\\n") "")
-              (("test_testbed_api_test\\$\\(EXEEXT\\) \\\\\n") "")
               (("test_testbed_api_statistics\\$\\(EXEEXT\\) \\\\\n") "")
+              (("test_testbed_api_test\\$\\(EXEEXT\\) \\\\\n") "")
+              (("test_testbed_api_test_timeout\\$\\(EXEEXT\\) \\\\\n") "")
               (("test_testbed_api_topology\\$\\(EXEEXT\\) \\\\\n") "")
               (("test_testbed_api_topology_clique\\$\\(EXEEXT\\) \\\\\n") ""))
             (substitute* "src/topology/Makefile"
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index 7a8a39eee3..0dcd0bee0d 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -67,16 +67,16 @@ to easily create cross-compiled binaries.")
 (define-public windowmaker
   (package
     (name "windowmaker")
-    (version "0.95.8")
+    (version "0.95.9")
     (synopsis "NeXTSTEP-like window manager")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://windowmaker.org/pub/source/release/WindowMaker-"
-                    version ".tar.gz"))
+                    "https://github.com/window-maker/wmaker/releases/download/"
+                    "wmaker-" version "/WindowMaker-" version ".tar.gz"))
               (sha256
                (base32
-                "12p8kljqgx5hnic0zvs5mxwp7kg21sb6qjagb2qw8ydvf5amrgwx"))))
+                "055pqvlkhipyjn7m6bb3fs4zz9rd1ynzl0mmwbhp05ihc3zmh8zj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -113,26 +113,26 @@ to easily create cross-compiled binaries.")
                (call-with-output-file
                    (string-append xsessions "/windowmaker.desktop")
                  (lambda (port)
-                  (format port "~
+                   (format port "~
                     [Desktop Entry]~@
                     Name=Window Maker~@
                     Comment=~a~@
                     Exec=~a/bin/wmaker~@
                     Type=Application~%"
-                          (string-map (match-lambda
-                                        (#\newline #\space)
-                                        (chr chr))
-                                      ,synopsis) out))))
+                           (string-map (match-lambda
+                                         (#\newline #\space)
+                                         (chr chr))
+                                       ,synopsis) out))))
              #t))
          (add-after 'install-xsession 'wrap
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bin (string-append out "/bin")))
-                ;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
-                ;; etc., so make sure everything is in $PATH.
-                (wrap-program (string-append bin "/wmaker.inst")
-                  `("PATH" ":" prefix (,bin)))
-                #t))))))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               ;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
+               ;; etc., so make sure everything is in $PATH.
+               (wrap-program (string-append bin "/wmaker.inst")
+                 `("PATH" ":" prefix (,bin)))
+               #t))))))
     (inputs
      `(("libxmu" ,libxmu)
        ("libxft" ,libxft)
@@ -145,7 +145,7 @@ to easily create cross-compiled binaries.")
        ("libtiff" ,libtiff)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://windowmaker.org/")
+    (home-page "https://windowmaker.org/")
     (description
      "Window Maker is an X11 window manager originally designed to provide
 integration support for the GNUstep Desktop Environment.  In every way
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 3bffe12577..5da18a22b5 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -556,8 +556,8 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "68.9.0-guix0-preview1")
-(define %icecat-build-id "20200602000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-version "68.10.0-guix0-preview1")
+(define %icecat-build-id "20200630000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -579,11 +579,11 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "01s41p985g6v544lf08zch3myssn5c76jwmkzzd68zd9m3hhalck"))))
+              "0azdinwqjfv2q37gqpxmfvzsk86pvsi6cjaq1310zs26gric5j1f"))))
 
-         (upstream-icecat-base-version "68.9.0") ; maybe older than base-version
+         (upstream-icecat-base-version "68.10.0") ; maybe older than base-version
          ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version))
-         (gnuzilla-commit "d7acf32ad905a3382cb2353577a96d29aa58f589")
+         (gnuzilla-commit "76dced64ce0e72fe3030dc2f7b22cda8e36b165e")
          (gnuzilla-source
           (origin
             (method git-fetch)
@@ -595,7 +595,7 @@ from forcing GEXP-PROMISE."
                                       (string-take gnuzilla-commit 8)))
             (sha256
              (base32
-              "0m49zm05m3n95diij2zyvpm74q66zxjhv9rp8zvaab0h7v2s09n9"))))
+              "0xcg6h0da63qyv7h575xjrbkzqqcjhwjd45x9h9qmpxiaibi9g3d"))))
 
          (makeicecat-patch
           (local-file (search-patch "icecat-makeicecat.patch")))
@@ -648,12 +648,6 @@ from forcing GEXP-PROMISE."
                           "-p1" "--input" #+makeicecat-patch)
                   (invoke "patch" "--force" "--no-backup-if-mismatch"
                           "-p1" "--input" #+gnuzilla-fixes-patch)
-
-                  ;; Remove the bundled tortm-browser-button extension,
-                  ;; which doesn't seem to be working properly.
-                  (delete-file-recursively
-                   "data/extensions/tortm-browser-button@jeremybenthum")
-
                   (patch-shebang "makeicecat")
                   (substitute* "makeicecat"
                     (("^FFMAJOR=(.*)" all ffmajor)
@@ -1143,11 +1137,11 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))
 
 ;; Update this together with icecat!
-(define %icedove-build-id "20200602000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20200630000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "68.9.0")
+    (version "68.10.0")
     (source icecat-source)
     (properties
      `((cpe-name . "thunderbird_esr")))
@@ -1433,7 +1427,7 @@ standards of the IceCat project.")
         ;; in the Thunderbird release tarball.  We don't use the release
         ;; tarball because it duplicates the Icecat sources and only adds the
         ;; "comm" directory, which is provided by this repository.
-        ,(let ((changeset "787d887f43fcbfe254ff0c9650c5517710071b74"))
+        ,(let ((changeset "6a7c26eb22bfe18295497c720a73e24b29b0604e"))
            (origin
              (method hg-fetch)
              (uri (hg-reference
@@ -1442,7 +1436,7 @@ standards of the IceCat project.")
              (file-name (string-append "thunderbird-" version "-checkout"))
              (sha256
               (base32
-               "1z1k3r1jilwmsywiyp8gh49f61cl9n085k95x7ihyld3rvgcjm9f")))))
+               "1yd73ig2jmzzq9c3ynqav4kh8jiv31xx7vs518b3w1yvmcpj5xsy")))))
        ("autoconf" ,autoconf-2.13)
        ("cargo" ,rust "cargo")
        ("clang" ,clang)
@@ -1471,7 +1465,7 @@ Thunderbird.  It supports email, news feeds, chat, calendar and contacts.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Unode/firefox_decrypt.git")
+                    (url "https://github.com/Unode/firefox_decrypt")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a3b1c6c643..2c31632db6 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright @ 2018, 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright @ 2018, 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 ;;; Copyright @ 2019, 2020 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2019, 2020 Arun Isaac <arunisaac@systemreboot.net>
@@ -218,21 +218,28 @@ in the style of communicating sequential processes (@dfn{CSP}).")
     (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
     (license license:bsd-3)))
 
-(define-public go-1.13
+(define-public go-1.14
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.13.9")
+    (version "1.14.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://storage.googleapis.com/golang/"
-                           name version ".src.tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/golang/go")
+             (commit (string-append "go" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "07gksk9194wa90xyd6yhagxfv7syvsx29bh8ypc4mg700vc1kfrl"))))
+         "08bazglmqp123c9dgrxflvxd011xsqfxsgah2kzbvca0mhm6qcm3"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
+       ((#:system system)
+        (if (string-prefix? "aarch64-linux" (or (%current-system)
+                                                (%current-target-system)))
+          "aarch64-linux"
+          system))
        ((#:phases phases)
         `(modify-phases ,phases
            (replace 'prebuild
@@ -261,7 +268,13 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                   '("cmd/go/testdata/script/mod_case_cgo.txt"
                     "cmd/go/testdata/script/list_find.txt"
                     "cmd/go/testdata/script/list_compiled_imports.txt"
-                    "cmd/go/testdata/script/cgo_syso_issue29253.txt"))
+                    "cmd/go/testdata/script/cgo_syso_issue29253.txt"
+                    "cmd/go/testdata/script/cover_cgo.txt"
+                    "cmd/go/testdata/script/cover_cgo_xtest.txt"
+                    "cmd/go/testdata/script/cover_cgo_extra_test.txt"
+                    "cmd/go/testdata/script/cover_cgo_extra_file.txt"))
+
+                 (for-each make-file-writable (find-files "."))
 
                  (substitute* "os/os_test.go"
                    (("/usr/bin") (getcwd))
@@ -329,6 +342,10 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                     ("syscall/exec_linux_test.go"
                      "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
 
+                 ;; These tests fail on aarch64-linux
+                 (substitute* "cmd/dist/test.go"
+                   (("t.registerHostTest\\(\"testsanitizers/msan.*") ""))
+
                  ;; fix shebang for testar script
                  ;; note the target script is generated at build time.
                  (substitute* "../misc/cgo/testcarchive/carchive_test.go"
@@ -360,7 +377,6 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (setenv "GOROOT_FINAL" output)
                  (setenv "CGO_ENABLED" "1")
                  (invoke "sh" "all.bash"))))
-
            (replace 'install
              ;; TODO: Most of this could be factorized with Go 1.4.
              (lambda* (#:key outputs #:allow-other-keys)
@@ -406,7 +422,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        ,@(package-native-inputs go-1.4)))
     (supported-systems %supported-systems)))
 
-(define-public go go-1.13)
+(define-public go go-1.14)
 
 (define-public go-github-com-alsm-ioprogress
   (let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5")
@@ -417,7 +433,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/alsm/ioprogress.git")
+                       (url "https://github.com/alsm/ioprogress")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -443,7 +459,7 @@ writers can be supplied for alternate environments.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/aki237/nscjar.git")
+                       (url "https://github.com/aki237/nscjar")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -493,7 +509,7 @@ way of specifying command line options.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/go-tomb/tomb.git")
+                      (url "https://github.com/go-tomb/tomb")
                       (commit commit)))
                 (file-name (string-append name "-" version ".tar.gz"))
                 (sha256
@@ -846,7 +862,7 @@ time.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/BurntSushi/toml.git")
+             (url "https://github.com/BurntSushi/toml")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -871,7 +887,7 @@ is similar to Go's standard library @code{json} and @code{xml} package.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/getsentry/raven-go.git")
+               (url "https://github.com/getsentry/raven-go")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -900,7 +916,7 @@ logging system.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/hashicorp/go-version.git")
+               (url "https://github.com/hashicorp/go-version")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -930,7 +946,7 @@ increment versions.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jpillora/backoff.git")
+               (url "https://github.com/jpillora/backoff")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -953,7 +969,7 @@ Go.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stretchr/objx.git")
+             (url "https://github.com/stretchr/objx")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -976,7 +992,7 @@ slices, JSON and other data.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stretchr/testify.git")
+             (url "https://github.com/stretchr/testify")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1015,7 +1031,7 @@ Features include:
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/tevino/abool.git")
+                 (url "https://github.com/tevino/abool")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -1040,7 +1056,7 @@ optimized for performance yet simple to use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/blang/semver.git")
+               (url "https://github.com/blang/semver")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1064,7 +1080,7 @@ optimized for performance yet simple to use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/emicklei/go-restful.git")
+               (url "https://github.com/emicklei/go-restful")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1090,7 +1106,7 @@ with the HTTP protocol definition.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/google/cadvisor.git")
+               (url "https://github.com/google/cadvisor")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1116,7 +1132,7 @@ containers.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/google/gofuzz.git")
+               (url "https://github.com/google/gofuzz")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1141,7 +1157,7 @@ values for the purpose of fuzz testing.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gorilla/context.git")
+               (url "https://github.com/gorilla/context")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1165,7 +1181,7 @@ values for the purpose of fuzz testing.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gorilla/mux.git")
+               (url "https://github.com/gorilla/mux")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1191,7 +1207,7 @@ incoming requests with their respective handler.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/jonboulle/clockwork.git")
+                 (url "https://github.com/jonboulle/clockwork")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -1227,8 +1243,9 @@ incoming requests with their respective handler.")
     (propagated-inputs
      `(("golang.org/x/text" ,go-golang-org-x-text)))
     (home-page "https://github.com/spf13/afero")
-    (synopsis "Filesystem abstraction for Go")
-    (description "Filesystem abstraction for Go")
+    (synopsis "File system abstraction for Go")
+    (description
+     "This package provides a file system abstraction for Go.")
     (license license:asl2.0)))
 
 (define-public go-github-com-spf13-cast
@@ -1312,7 +1329,7 @@ applications as well as a program to generate applications and command files.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/spf13/pflag.git")
+               (url "https://github.com/spf13/pflag")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -1339,7 +1356,7 @@ GNU extensions} to the POSIX recommendations for command-line options.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/spf13/viper.git")
+             (url "https://github.com/spf13/viper")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1476,7 +1493,7 @@ all types of configuration needs and formats.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sirupsen/logrus.git")
+             (url "https://github.com/sirupsen/logrus")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1505,7 +1522,7 @@ compatible with the standard library logger.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rifflock/lfshook.git")
+                    (url "https://github.com/rifflock/lfshook")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1519,7 +1536,7 @@ compatible with the standard library logger.")
     (home-page "https://github.com/rifflock/lfshook")
     (synopsis "Local File System hook for Logrus logger")
     (description "This package provides a hook for Logrus to write directly to
-a file on the filesystem.  The log levels are dynamic at instantiation of the
+a file on the file system.  The log levels are dynamic at instantiation of the
 hook, so it is capable of logging at some or all levels.")
     (license license:expat)))
 
@@ -1638,7 +1655,7 @@ to interact with distribution components.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/docker/go-connections.git")
+                 (url "https://github.com/docker/go-connections")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -1665,7 +1682,7 @@ translation (NAT), proxies, sockets, and transport layer security (TLS).")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/docker/machine.git")
+               (url "https://github.com/docker/machine")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1692,7 +1709,7 @@ Docker on them, then configures the Docker client to talk to them.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gorhill/cronexpr.git")
+               (url "https://github.com/gorhill/cronexpr")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2225,7 +2242,7 @@ generation features.  This code generation is used to achieve:
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/libp2p/go-flow-metrics.git")
+               (url "https://github.com/libp2p/go-flow-metrics")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2251,7 +2268,7 @@ that's a lot faster (and only does simple bandwidth metrics).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/davecgh/go-spew.git")
+             (url "https://github.com/davecgh/go-spew")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2291,7 +2308,7 @@ style).
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/btcsuite/btclog.git")
+               (url "https://github.com/btcsuite/btclog")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2317,7 +2334,7 @@ implementing the same interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/btcsuite/btcd.git")
+               (url "https://github.com/btcsuite/btcd")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2353,7 +2370,7 @@ needing to use secp256k1 elliptic curve cryptography.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/minio/sha256-simd.git")
+             (url "https://github.com/minio/sha256-simd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2389,7 +2406,7 @@ Architecture Processors\" by J. Guilford et al.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/libp2p/go-libp2p-crypto.git")
+               (url "https://github.com/libp2p/go-libp2p-crypto")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2419,7 +2436,7 @@ Architecture Processors\" by J. Guilford et al.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mr-tron/base58.git")
+               (url "https://github.com/mr-tron/base58")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2446,7 +2463,7 @@ encoding and 8 times faster decoding.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gxed/hashland.git")
+               (url "https://github.com/gxed/hashland")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2472,7 +2489,7 @@ hash algorithm.  See http://keccak.noekeon.org.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/minio/blake2b-simd.git")
+               (url "https://github.com/minio/blake2b-simd")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2502,7 +2519,7 @@ increase approaching hashing speeds of 1GB/sec on a single core.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/spaolacci/murmur3.git")
+             (url "https://github.com/spaolacci/murmur3")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2528,7 +2545,7 @@ required by Go's standard Hash interface.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/twmb/murmur3.git")
+             (url "https://github.com/twmb/murmur3")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2556,7 +2573,7 @@ required by Go's standard Hash interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/multiformats/go-multihash.git")
+               (url "https://github.com/multiformats/go-multihash")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2587,7 +2604,7 @@ required by Go's standard Hash interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/libp2p/go-libp2p-peer.git")
+               (url "https://github.com/libp2p/go-libp2p-peer")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2622,7 +2639,7 @@ required by Go's standard Hash interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/libp2p/go-libp2p-protocol.git")
+               (url "https://github.com/libp2p/go-libp2p-protocol")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2647,7 +2664,7 @@ required by Go's standard Hash interface.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/libp2p/go-libp2p-metrics.git")
+               (url "https://github.com/libp2p/go-libp2p-metrics")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2686,7 +2703,7 @@ statistics for wrapped connections.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mitchellh/go-homedir.git")
+               (url "https://github.com/mitchellh/go-homedir")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2747,7 +2764,7 @@ cross-compilation.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/multiformats/go-multiaddr.git")
+               (url "https://github.com/multiformats/go-multiaddr")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2789,7 +2806,7 @@ does the following:
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/multiformats/go-multiaddr-net.git")
+               (url "https://github.com/multiformats/go-multiaddr-net")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2827,7 +2844,7 @@ as conversion to and from @command{net.Addr}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/whyrusleeping/tar-utils.git")
+               (url "https://github.com/whyrusleeping/tar-utils")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2852,7 +2869,7 @@ as conversion to and from @command{net.Addr}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cheekybits/is.git")
+               (url "https://github.com/cheekybits/is")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2884,7 +2901,7 @@ as conversion to and from @command{net.Addr}.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/sabhiram/go-gitignore.git")
+               (url "https://github.com/sabhiram/go-gitignore")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2909,7 +2926,7 @@ as conversion to and from @command{net.Addr}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/urfave/cli.git")
+             (url "https://github.com/urfave/cli")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3038,7 +3055,7 @@ anchor names.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/whyrusleeping/json-filter.git")
+               (url "https://github.com/whyrusleeping/json-filter")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3064,7 +3081,7 @@ anchor names.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/whyrusleeping/progmeter.git")
+               (url "https://github.com/whyrusleeping/progmeter")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3089,7 +3106,7 @@ anchor names.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/whyrusleeping/stump.git")
+               (url "https://github.com/whyrusleeping/stump")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3114,7 +3131,7 @@ have super fancy logs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/kr/fs.git")
+               (url "https://github.com/kr/fs")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3161,7 +3178,7 @@ format in Go.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/kr/pretty.git")
+                    (url "https://github.com/kr/pretty")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3184,7 +3201,7 @@ format in Go.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/kr/text.git")
+                    (url "https://github.com/kr/text")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3529,7 +3546,7 @@ decode/encode structures and slices.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pkg/errors.git")
+                    (url "https://github.com/pkg/errors")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3615,6 +3632,135 @@ sensors).")
       (home-page "https://github.com/shirou/gopsutil")
       (license license:bsd-3))))
 
+(define-public go-github-com-danwakefield-fnmatch
+  (let ((commit "cbb64ac3d964b81592e64f957ad53df015803288")
+        (revision "0"))
+    (package
+     (name "go-github-com-danwakefield-fnmatch")
+     (version (git-version "0.0.0" revision commit))
+     (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/danwakefield/fnmatch")
+             (commit commit)))
+       (sha256
+        (base32
+         "0cbf511ppsa6hf59mdl7nbyn2b2n71y0bpkzbmfkdqjhanqh1lqz"))
+       (file-name (git-file-name name version))))
+     (build-system go-build-system)
+     (arguments
+      '(#:import-path "github.com/danwakefield/fnmatch"))
+     (home-page "https://github.com/danwakefield/fnmatch")
+     (synopsis "Updated clone of kballards golang fnmatch gist")
+     (description "This package provides an updated clone of kballards golang
+fnmatch gist (https://gist.github.com/kballard/272720).")
+     (license license:bsd-2))))
+
+(define-public go-github-com-ddevault-go-libvterm
+  (let ((commit "b7d861da381071e5d3701e428528d1bfe276e78f")
+        (revision "0"))
+    (package
+      (name "go-github-com-ddevault-go-libvterm")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                (url "https://github.com/ddevault/go-libvterm")
+                (commit commit)))
+          (sha256
+           (base32
+            "06vv4pgx0i6hjdjcar4ch18hp9g6q6687mbgkvs8ymmbacyhp7s6"))
+          (file-name (git-file-name name version))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/ddevault/go-libvterm"))
+      (propagated-inputs
+       `(("go-github-com-mattn-go-pointer" ,go-github-com-mattn-go-pointer)))
+      (home-page "https://github.com/ddevault/go-libvterm")
+      (synopsis "Go binding to libvterm")
+      (description
+       "This is a fork of another go-libvterm library for use with aerc.")
+      (license license:expat))))
+
+(define-public go-github-com-emersion-go-imap
+  (package
+    (name "go-github-com-emersion-go-imap")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/emersion/go-imap")
+              (commit (string-append "v" version))))
+        (sha256
+         (base32
+          "1id8j2d0rn9sj8y62xhyygqpk5ygrcl9jlfx92sm1jsvxsm3kywq"))
+        (file-name (git-file-name name version))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/emersion/go-imap"))
+    (native-inputs
+     `(("go-golang-org-x-text" ,go-golang-org-x-text)))
+    (home-page "https://github.com/emersion/go-imap")
+    (synopsis "IMAP4rev1 library written in Go")
+    (description "This package provides an IMAP4rev1 library written in Go.  It
+can be used to build a client and/or a server.")
+    (license license:expat)))
+
+(define-public go-github-com-emersion-go-sasl
+  (let ((commit "240c8404624e076f633766c16adbe96c7ac516b7")
+        (revision "0"))
+    (package
+      (name "go-github-com-emersion-go-sasl")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                (url "https://github.com/emersion/go-sasl")
+                (commit commit)))
+          (sha256
+           (base32
+            "1py18p3clp474xhx6ypyp0bgv6n1dfm24m95cyyqb0k3vibar6ih"))
+          (file-name (git-file-name name version))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/emersion/go-sasl"))
+      (home-page "https://github.com/emersion/go-sasl")
+      (synopsis "SASL library written in Go")
+      (description "This package provides a SASL library written in Go.")
+      (license license:expat))))
+
+(define-public go-github-com-emersion-go-imap-idle
+  (let ((commit "2704abd7050ed7f2143753554ee23affdf847bd9")
+        (revision "0"))
+    (package
+      (name "go-github-com-emersion-go-imap-idle")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                (url "https://github.com/emersion/go-imap-idle")
+                (commit commit)))
+          (sha256
+           (base32
+            "0blwcadmxgqsdwgr9m4jqfbpfa2viw5ah19xbybpa1z1z4aj5cbc"))
+          (file-name (git-file-name name version))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/emersion/go-imap-idle"))
+      (native-inputs
+       `(("go-github-com-emersion-go-imap" ,go-github-com-emersion-go-imap)
+         ("go-github-com-emersion-go-sasl" ,go-github-com-emersion-go-sasl)
+         ("go-golang-org-x-text" ,go-golang-org-x-text)))
+      (home-page "https://github.com/emersion/go-imap-idle")
+      (synopsis "IDLE extension for go-imap")
+      (description "This package provides an IDLE extension for go-imap.")
+      (license license:expat))))
+
 (define-public go-github-com-fatih-color
   (package
     (name "go-github-com-fatih-color")
@@ -3622,7 +3768,7 @@ sensors).")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/fatih/color.git")
+                     (url "https://github.com/fatih/color")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3644,7 +3790,7 @@ colorized or SGR defined output to the standard output.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/google/go-cmp.git")
+                     (url "https://github.com/google/go-cmp")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3692,7 +3838,7 @@ common task.")
   (origin
     (method git-fetch)
     (uri (git-reference
-          (url "https://github.com/gotestyourself/gotest.tools.git")
+          (url "https://github.com/gotestyourself/gotest.tools")
           (commit (string-append "v" version))))
     (file-name (git-file-name "go-gotest-tools" version))
     (sha256
@@ -3768,7 +3914,7 @@ test when a comparison fails.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/gotestyourself/gotestsum.git")
+                     (url "https://github.com/gotestyourself/gotestsum")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3815,7 +3961,7 @@ test results.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/golang/protobuf.git")
+                     (url "https://github.com/golang/protobuf")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3840,7 +3986,7 @@ data serialization format.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mattn/go-zglob.git")
+                    (url "https://github.com/mattn/go-zglob")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
index 6963da9dff..734599483b 100644
--- a/gnu/packages/gpodder.scm
+++ b/gnu/packages/gpodder.scm
@@ -43,7 +43,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gpodder/gpodder.git")
+             (url "https://github.com/gpodder/gpodder")
              (commit version)))
        (sha256
         (base32
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 38fa6bea47..5f9dcdbb65 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -154,7 +154,7 @@ between two other data points.")
 (define-public gama
   (package
     (name "gama")
-    (version "2.08")
+    (version "2.09")
     (source
       (origin
         (method url-fetch)
@@ -162,7 +162,7 @@ between two other data points.")
                             version ".tar.gz"))
         (sha256
          (base32
-          "0fic6a3a83hgj3gj85bin3wd6ghgi2qg76d6jfwckamab0hlv7wx"))))
+          "0c1b28frl6109arj09v4zr1xs859krn8871mkvis517g5pb55dc9"))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-tests? #f)) ; race condition
     (native-inputs
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index dc8f2c64a2..65dc23588f 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru>
+;;; Copyright © 2020 Pierre Langlois <pierre.langlos@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -77,7 +78,7 @@
        ("lapack" ,lapack)
        ("openblas" ,openblas)
        ("zlib" ,zlib)))
-    (home-page "http://igraph.org")
+    (home-page "https://igraph.org")
     (synopsis "Network analysis and visualization")
     (description
      "This package provides a library for the analysis of networks and graphs.
@@ -144,7 +145,7 @@ more.")
      `(("r-magrittr" ,r-magrittr)
        ("r-matrix" ,r-matrix)
        ("r-pkgconfig" ,r-pkgconfig)))
-    (home-page "http://igraph.org")
+    (home-page "https://igraph.org")
     (synopsis "Network analysis and visualization")
     (description
      "This package provides routines for simple graphs and network analysis.
@@ -215,7 +216,7 @@ objects from the @code{graph} package.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/wjrl/RBioFabric.git")
+                      (url "https://github.com/wjrl/RBioFabric")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -235,25 +236,49 @@ lines.")
 (define-public python-plotly
   (package
     (name "python-plotly")
-    (version "2.4.1")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "plotly" version))
-        (sha256
-         (base32
-          "0s9gk2fl53x8wwncs3fwii1vzfngr0sskv15v3mpshqmrqfrk27m"))))
+    (version "4.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/plotly/plotly.py")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "08ab677gr85m10zhixr6dnmlfws8q6sra7nhyb8nf3r8dx1ffqhz"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; The tests are not distributed in the release
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "packages/python/plotly")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "-x" "plotly/tests/test_core")
+             (invoke "pytest" "-x" "plotly/tests/test_io")
+             ;; FIXME: Add optional dependencies and enable their tests.
+             ;; (invoke "pytest" "-x" "plotly/tests/test_optional")
+             (invoke "pytest" "_plotly_utils/tests")))
+         (add-before 'reset-gzip-timestamps 'make-files-writable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (file) (chmod file #o644))
+                 (find-files out "\\.gz"))
+               #t))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-decorator" ,python-decorator)
-       ("python-nbformat" ,python-nbformat)
+       ("python-ipywidgets" ,python-ipywidgets)
        ("python-pandas" ,python-pandas)
-       ("python-pytz" ,python-pytz)
        ("python-requests" ,python-requests)
-       ("python-six" ,python-six)))
-    (home-page "https://plot.ly/python/")
+       ("python-retrying" ,python-retrying)
+       ("python-six" ,python-six)
+       ("python-statsmodels" ,python-statsmodels)
+       ("python-xarray" ,python-xarray)))
+    (home-page "https://plotly.com/python/")
     (synopsis "Interactive plotting library for Python")
     (description "Plotly's Python graphing library makes interactive,
 publication-quality graphs online.  Examples of how to make line plots, scatter
@@ -261,8 +286,29 @@ plots, area charts, bar charts, error bars, box plots, histograms, heatmaps,
 subplots, multiple-axes, polar charts, and bubble charts. ")
     (license license:expat)))
 
+(define-public python-plotly-2.4.1
+  (package (inherit python-plotly)
+    (version "2.4.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "plotly" version))
+        (sha256
+         (base32
+          "0s9gk2fl53x8wwncs3fwii1vzfngr0sskv15v3mpshqmrqfrk27m"))))
+   (native-inputs '())
+   (propagated-inputs
+    `(("python-decorator" ,python-decorator)
+      ("python-nbformat" ,python-nbformat)
+      ("python-pandas" ,python-pandas)
+      ("python-pytz" ,python-pytz)
+      ("python-requests" ,python-requests)
+      ("python-six" ,python-six)))
+    (arguments
+     '(#:tests? #f)))) ; The tests are not distributed in the release
+
 (define-public python2-plotly
-  (package-with-python2 python-plotly))
+  (package-with-python2 python-plotly-2.4.1))
 
 (define-public python-louvain
   (package
@@ -272,7 +318,7 @@ subplots, multiple-axes, polar charts, and bubble charts. ")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vtraag/louvain-igraph.git")
+                    (url "https://github.com/vtraag/louvain-igraph")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -305,7 +351,7 @@ not be used for new projects.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/facebookresearch/faiss.git")
+                    (url "https://github.com/facebookresearch/faiss")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 0d768b8a0e..5b18d14893 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -160,7 +160,7 @@ objects!")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/autotrace/autotrace.git")
+                      (url "https://github.com/autotrace/autotrace")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -301,7 +301,7 @@ application can be customized via its API for Python scripting.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/assimp/assimp.git")
+                    (url "https://github.com/assimp/assimp")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -359,7 +359,7 @@ many more.")
 (define-public ilmbase
   (package
     (name "ilmbase")
-    (version "2.5.0")
+    (version "2.5.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -368,9 +368,8 @@ many more.")
               (file-name (git-file-name "ilmbase" version))
               (sha256
                (base32
-                "1k50cvi3sk6gf6w713lkk2gv5cvs74vkc7s7k4z6nmyhi4g89w4y"))
-              (patches (search-patches "ilmbase-fix-tests.patch"
-                                       "ilmbase-fix-test-arm.patch"))))
+                "1vf8bqld2bpcdi99jbr043y6vp01cp3fvbiasrn66xn91mf6imbn"))
+              (patches (search-patches "ilmbase-fix-tests.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -512,7 +511,7 @@ other vector formats such as:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/OGRECave/ogre.git")
+             (url "https://github.com/OGRECave/ogre")
              (commit (string-append "v" version))
              (recursive? #t)))          ;for Dear ImGui submodule
        (file-name (git-file-name name version))
@@ -589,11 +588,15 @@ graphics.")
            (lambda _
              (chdir "OpenEXR")
              #t))
-         (add-before 'check 'increase-test-timeout
+         (add-after 'change-directory 'increase-test-timeout
            (lambda _
              ;; On armhf-linux, we need to override the CTest default
              ;; timeout of 1500 seconds for the OpenEXR.IlmImf test.
-             (setenv "CTEST_TEST_TIMEOUT" "2000")
+             (substitute* "IlmImfTest/CMakeLists.txt"
+               (("add_test\\(NAME OpenEXR\\.IlmImf.*" all)
+                (string-append
+                 all
+                 "set_tests_properties(OpenEXR.IlmImf PROPERTIES TIMEOUT 2000)")))
              #t))
          ,@(if (not (target-64bit?))
                `((add-after 'change-directory 'disable-broken-test
@@ -625,7 +628,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/OpenImageIO/oiio.git")
+                    (url "https://github.com/OpenImageIO/oiio")
                     (commit (string-append "Release-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -945,7 +948,7 @@ output.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/wdas/brdf.git")
+                      (url "https://github.com/wdas/brdf")
                       (commit commit)))
                 (sha256
                  (base32
@@ -1214,7 +1217,7 @@ and GPU architectures.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/floriankirsch/OpenCSG.git")
+               (url "https://github.com/floriankirsch/OpenCSG")
                (commit (string-append "opencsg-"
                                       (string-map dot-to-dash version)
                                       "-release"))))
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index 815a35a974..0f2afb99de 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -211,7 +211,7 @@ visualization tool suite.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pygraphviz/pygraphviz.git")
+             (url "https://github.com/pygraphviz/pygraphviz")
              (commit (string-append "pygraphviz-" version))))
        (file-name (string-append "pygraphviz-" version "-checkout"))
        (sha256
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm
index 5fe353a901..ae896cf9fd 100644
--- a/gnu/packages/groff.scm
+++ b/gnu/packages/groff.scm
@@ -177,7 +177,7 @@ is usually the formatter of \"man\" documentation pages.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/bagder/roffit.git")
+                      (url "https://github.com/bagder/roffit")
                       (commit commit)))
                 (file-name (string-append "roffit-" commit "-checkout"))
                 (sha256
diff --git a/gnu/packages/groovy.scm b/gnu/packages/groovy.scm
index f5d0416f36..e21c4e3775 100644
--- a/gnu/packages/groovy.scm
+++ b/gnu/packages/groovy.scm
@@ -36,7 +36,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/apache/groovy.git")
+             (url "https://github.com/apache/groovy")
              (commit (string-append
                       "GROOVY_"
                       (string-map (lambda (x) (if (eq? x #\.) #\_ x))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 3cadccd25c..e3c097943f 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1741,7 +1741,7 @@ misspelled words in a GtkTextView widget.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/CristianHenzel/ClipIt.git")
+             (url "https://github.com/CristianHenzel/ClipIt")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1856,7 +1856,7 @@ independent of your desktop environment, and supports global key bindings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/v1cont/yad.git")
+             (url "https://github.com/v1cont/yad")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 8386f9522e..21f998524e 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -27,6 +27,9 @@
 ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
 ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2020 Julien Lepiler <julien@lepiller.eu>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
+;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -154,9 +157,9 @@
     ;; projects.
     ;; TODO: Add guile-dbi and guile-dbd optional dependencies.
     (propagated-inputs
-     `(("guile-json" ,guile-json-1)
+     `(("guile-json" ,guile-json-1) ; This ia already using guile-2.2.
        ("guile-readline" ,guile2.2-readline)
-       ("guile-redis" ,guile-redis)))
+       ("guile-redis" ,guile2.2-redis)))
     (native-inputs
      `(("bash"       ,bash)         ;for the `source' builtin
        ("pkgconfig"  ,pkg-config)
@@ -232,7 +235,7 @@ more.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ijp/guildhall.git")
+                      (url "https://github.com/ijp/guildhall")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -933,8 +936,8 @@ messaging library.")
   (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq))
 
 (define-public jupyter-guile-kernel
-  (let ((commit "a7db9245a886e104138474df46c3e88b95cff629")
-        (revision "1"))
+  (let ((commit "f25fb90b95529b17a006a807bd04e6aee12ea304")
+        (revision "2"))
     (package
       (name "jupyter-guile-kernel")
       (version (git-version "0.0.0" revision commit))
@@ -947,7 +950,7 @@ messaging library.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f"))))
+           "0zr1fasdb2yv9kn21yll993y9higqss4jnfs030ndhjb93raa9sr"))))
       (build-system guile-build-system)
       (arguments
        '(#:phases (modify-phases %standard-phases
@@ -982,7 +985,7 @@ messaging library.")
 
                           ;; Fix hard-coded file name in the kernel.
                           (substitute* (string-append dir "/kernel.json")
-                            (("/home/.*/guile-jupyter-kernel.scm")
+                            (("/usr/local/.*/guile-jupyter-kernel.scm")
                              (string-append out "/share/guile/site/"
                                             (target-guile-effective-version)
                                             "/guile-jupyter-kernel.scm"))
@@ -1003,17 +1006,17 @@ messaging library.")
                                                              effective
                                                              "/site-ccache\""))
                                             deps)))
-                              (string-append "--no-auto-compile\""
-                                             (string-join -L ", \"-L\", "
-                                                          'prefix)
-                                             (string-join -C ", \"-C\", "
-                                                          'prefix)
-                                             ", \"-s"))))
+                               (string-append "--no-auto-compile\""
+                                              (string-join -L ", \"-L\", "
+                                                           'prefix)
+                                              (string-join -C ", \"-C\", "
+                                                           'prefix)
+                                              ", \"-s"))))
                           #t))))))
       (inputs
        `(("openssl" ,openssl)
-         ("guile" ,guile-2.2)
-         ("guile-json" ,guile-json-1)
+         ("guile" ,guile-3.0)
+         ("guile-json" ,guile-json-3)
          ("guile-simple-zmq" ,guile-simple-zmq)))
       (synopsis "Guile kernel for the Jupyter Notebook")
       (description
@@ -1348,7 +1351,7 @@ SQL databases.  This package implements the interface for SQLite.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/opencog/guile-dbi.git")
+               (url "https://github.com/opencog/guile-dbi")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1723,10 +1726,10 @@ capabilities.")
     (license license:gpl3+)))
 
 (define-public g-golf
-  (let ((commit "4a4edf25e4877df9182c77843bdd98ab59e13ef7"))
+  (let ((commit "5d2903afb4b6b65c22f587835d8fdff91916e5ee"))
     (package
       (name "g-golf")
-      (version (git-version "1" "683" commit))
+      (version (git-version "1" "804" commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1735,7 +1738,7 @@ capabilities.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "09p0gf71wbmlm9kri693a8fvr9hl3hhlmlidyadwjdh7853xg0h8"))))
+                  "1xkb6a5d3i9s8lpb5cf06bd64p5srqnnhn5l0b2f5csbvyz8hmmh"))))
       (build-system gnu-build-system)
       (native-inputs
        `(("autoconf" ,autoconf)
@@ -1743,10 +1746,11 @@ capabilities.")
          ("texinfo" ,texinfo)
          ("gettext" ,gettext-minimal)
          ("libtool" ,libtool)
-         ("pkg-config" ,pkg-config)))
+         ("pkg-config" ,pkg-config)
+         ("xorg-server" ,xorg-server)))
       (inputs
        `(("guile" ,guile-2.2)
-         ("guile-lib" ,guile-lib)
+         ("guile-lib" ,guile2.2-lib)
          ("clutter" ,clutter)
          ("gtk" ,gtk+)
          ("glib" ,glib)))
@@ -1789,7 +1793,14 @@ capabilities.")
                                                    (assoc-ref outputs "out"))))))))
                  (setenv "GUILE_AUTO_COMPILE" "0")
                  (setenv "GUILE_GGOLF_UNINSTALLED" "1")
-                 #t))))))
+                 #t)))
+           (add-before 'check 'start-xorg-server
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; The test suite requires a running X server.
+               (system (format #f "~a/bin/Xvfb :1 &"
+                               (assoc-ref inputs "xorg-server")))
+               (setenv "DISPLAY" ":1")
+               #t)))))
       (home-page "https://www.gnu.org/software/g-golf/")
       (synopsis "Guile bindings for GObject Introspection")
       (description
@@ -1848,7 +1859,7 @@ provides access to that interface and its types from the Scheme level.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/fisherdj/miniAdapton.git")
+                      (url "https://github.com/fisherdj/miniAdapton")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -2045,7 +2056,7 @@ for Guile\".")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ijp/minikanren.git")
+                    (url "https://github.com/ijp/minikanren")
                     (commit "e844d85512f8c055d3f96143ee506007389a25e3")))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -2483,163 +2494,162 @@ completion, a simple mode line, etc.")
       (license license:gpl3+))))
 
 (define-public guile-stis-parser
-  (let ((commit "6e85d37ffc333b722f4413a6c648263701eb75bd")
-        (revision "1"))
-    (package
-      (name "guile-stis-parser")
-      (version (git-version "0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/tampe/stis-parser")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0v4hvq7rlpbra1ni73lf8k6sdmjlflr50yi3p1f24g85h77pc7c0"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:parallel-build? #f ; not supported
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'chdir
-             (lambda _ (chdir "modules") #t))
-           (add-after 'chdir 'use-canonical-directory-for-go-files
-             (lambda _
-               (substitute* "Makefile.am"
-                 (("/ccache") "/site-ccache"))
-               #t))
-           (add-after 'chdir 'delete-broken-symlink
-             (lambda _
-               (delete-file "parser/stis-parser/lang/.#calc.scm")
-               #t)))))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("pkg-config" ,pkg-config)))
-      (home-page "https://gitlab.com/tampe/stis-parser")
-      (synopsis "Parser combinator framework")
-      (description
-       "This package provides a functional parser combinator library that
+  (package
+    (name "guile-stis-parser")
+    (version "1.2.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/tampe/stis-parser")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fvxdfvc80zqhwzq5x3kxyr6j8p4b51yx85fx1gr3d4gy2ddpx5w"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-build? #f             ; not supported
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "modules") #t))
+         (add-after 'chdir 'delete-broken-symlink
+           (lambda _
+             (delete-file "parser/stis-parser/lang/.#calc.scm")
+             #t)))))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gitlab.com/tampe/stis-parser")
+    (synopsis "Parser combinator framework")
+    (description
+     "This package provides a functional parser combinator library that
 supports backtracking and a small logical framework. The idea is to build up
 chunks that are memoized and there is no clear scanner/parser separation,
 chunks can be expressions as well as simple tokens.")
-      (license license:lgpl2.0+))))
+    (license license:lgpl2.0+)))
 
 (define-public guile-persist
-  (let ((commit "b14927b0368af51c024560aee5f55724aee35233")
-        (revision "1"))
-    (package
-      (name "guile-persist")
-      (version (git-version "0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://gitlab.com/tampe/guile-persist")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0z5nf377wh8yj6n3sx2ddn4bdx1qrqnw899dlqjhg0q69qzil522"))
-                (modules '((guix build utils)))
-                (snippet
-                 '(begin
-                    ;; Install .go files in the right place.
-                    (substitute* "Makefile.am"
-                      (("/ccache") "/site-ccache"))
-                    #t))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-prefix
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (substitute* "src/Makefile.am"
-                 (("/usr/local/lib/guile")
-                  (string-append (assoc-ref outputs "out") "/lib/guile"))
-                 (("/usr/local/include/guile")
-                  (string-append (assoc-ref inputs "guile") "/include/guile"))
-                 (("-L/usr/local/lib")
-                  (string-append "-L" (assoc-ref inputs "guile") "/lib"))
-                 ;; Use canonical directory for go files.
-                 (("/ccache") "/site-ccache"))
-               #t))
-           (add-after 'unpack 'patch-library-reference
-             (lambda* (#:key outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
-                 (substitute* "persist/persistance.scm"
-                   (("\"libguile-persist\"")
-                    (format #f "\"~a/lib/guile/2.2/extensions/libguile-persist\"" out)))
-                 #t))))))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("libtool" ,libtool)
-         ("pkg-config" ,pkg-config)))
-      (home-page "https://gitlab.com/tampe/guile-persist")
-      (synopsis "Persistence programming framework for Guile")
-      (description
-       "This is a serialization library for serializing objects like classes
+  (package
+    (name "guile-persist")
+    (version "1.2.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/tampe/guile-persist")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "19f8hqcax4v40858kx2j8fy1cvzc2djj99r0n17dy1xxmwa097qi"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-prefix
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "src/Makefile.am"
+               (("/usr/local/lib/guile")
+                (string-append (assoc-ref outputs "out") "/lib/guile"))
+               (("/usr/local/include/guile")
+                (string-append (assoc-ref inputs "guile") "/include/guile"))
+               (("-L/usr/local/lib")
+                (string-append "-L" (assoc-ref inputs "guile") "/lib")))
+             #t))
+         (add-after 'unpack 'patch-library-reference
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "persist/persistance.scm"
+                 (("\"libguile-persist\"")
+                  (format #f "\"~a/lib/guile/3.0/extensions/libguile-persist\"" out)))
+               #t))))))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://gitlab.com/tampe/guile-persist")
+    (synopsis "Persistence programming framework for Guile")
+    (description
+     "This is a serialization library for serializing objects like classes
 and objects, closures and structs.  This currently does not support
 serializing continuations or delimited continuations.")
-      (license license:lgpl2.0+))))
+    (license license:lgpl2.0+)))
 
 (define-public python-on-guile
-  (let ((commit "00a51a23247f1edc4ae8eda72b30df5cd7d0015f")
-        (revision "3"))
-    (package
-      (name "python-on-guile")
-      (version (git-version "0.1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://git.elephly.net/software/python-on-guile.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "03rpnqr08rqr3gay128g564rwk8w4jbj28ss6b46z1d4vjs4nk68"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:parallel-build? #f ; not supported
-         #:make-flags '("GUILE_AUTO_COMPILE=0")   ;to prevent guild warnings
-
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'chdir
-             (lambda _ (chdir "modules") #t))
-           (add-after 'install 'wrap
-             (lambda* (#:key outputs #:allow-other-keys)
-               ;; Wrap the 'python' executable so it can find its
-               ;; dependencies.
-               (let ((out  (assoc-ref outputs "out")))
-                 (wrap-program (string-append out "/bin/python")
-                   `("GUILE_LOAD_PATH" ":" prefix
-                     (,(getenv "GUILE_LOAD_PATH")))
-                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                     (,(getenv "GUILE_LOAD_COMPILED_PATH"))))
-                 #t))))))
-      (inputs
-       `(("guile" ,guile-2.2)))
-      (propagated-inputs
-       `(("guile-persist" ,guile-persist)
-         ("guile-readline" ,guile-readline)
-         ("guile-stis-parser" ,guile-stis-parser)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("libtool" ,libtool)
-         ("pkg-config" ,pkg-config)))
-      (home-page "https://gitlab.com/python-on-guile/python-on-guile/")
-      (synopsis "Python implementation in Guile")
-      (description
-       "This package allows you to compile a Guile Python file to any target
+  (package
+    (name "python-on-guile")
+    (version "1.2.3.5")
+    (home-page "https://gitlab.com/python-on-guile/python-on-guile")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page)
+                                  (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "05xrvcj6a4gzq1ybyin270qz8wamgc7w2skyi9iy6hkpgdhxy8vf"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:parallel-build? #f                   ;not supported
+       #:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "modules") #t))
+         (add-after 'chdir 'augment-GUILE_LOAD_PATH
+           (lambda _
+             ;; TODO: It would be better to patch the Makefile.
+             (setenv "GUILE_LOAD_PATH"
+                     (string-append ".:"
+                                    (getenv "GUILE_LOAD_PATH")))
+             #t))
+         (add-after 'install 'wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Wrap the 'python' executable so it can find its
+             ;; dependencies and own modules.
+             (let* ((out (assoc-ref outputs "out"))
+                    (guile-version ,(version-major+minor
+                                     (package-version guile-3.0)))
+                    (scm (string-append out "/share/guile/site/"
+                                        guile-version))
+                    (ccache (string-append out "/lib/guile/" guile-version
+                                           "/site-ccache"))
+                    (load-path (string-join
+                                (cons scm
+                                      ;; XXX: cdr because we augment it above.
+                                      (cdr (string-split
+                                            (getenv "GUILE_LOAD_PATH") #\:)))
+                                ":"))
+                    (compiled-path (string-append
+                                    ccache ":"
+                                    (getenv "GUILE_LOAD_COMPILED_PATH"))))
+               (wrap-program (string-append out "/bin/python")
+                 `("GUILE_LOAD_PATH" ":" prefix
+                   (,load-path))
+                 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                   (,compiled-path)))
+               #t))))))
+    (inputs
+     `(("guile" ,guile-3.0)
+       ("guile-persist" ,guile-persist)
+       ("guile-readline" ,guile-readline)
+       ("guile-stis-parser" ,guile-stis-parser)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Python implementation in Guile")
+    (description
+     "This package allows you to compile a Guile Python file to any target
 from @code{tree-il}.")
-      (license license:lgpl2.0+))))
+    (license license:lgpl2.0+)))
 
 (define-public guile-file-names
   (package
@@ -3103,7 +3113,7 @@ clean and easy to use high level API.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/lloda/guile-ffi-fftw.git")
+                      (url "https://github.com/lloda/guile-ffi-fftw")
                       (commit commit)))
                 (file-name (git-file-name "guile-ffi-fftw" version))
                 (sha256
@@ -3539,7 +3549,7 @@ according to Bitorrent BEP003.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/rekado/guile-irc.git")
+                      (url "https://github.com/rekado/guile-irc")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3554,7 +3564,7 @@ according to Bitorrent BEP003.")
          ("texinfo" ,texinfo)))
       (inputs
        `(("gnutls" ,gnutls)
-         ("guile" ,guile-2.2)))
+         ("guile" ,guile-3.0)))
       (home-page "https://github.com/rekado/guile-irc")
       (synopsis "IRC library for Guile")
       (description "This package provides a Guile library for @dfn{Internet
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index a8f5019687..6430633694 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -308,18 +308,18 @@ without requiring the source code to be rewritten.")
             (files '("lib/guile/3.0/site-ccache"
                      "share/guile/site/3.0")))))))
 
-(define-public guile-3.0.3
+(define-public guile-3.0-latest
   ;; TODO: Make this 'guile-3.0' on the next rebuild cycle.
   (package
     (inherit guile-3.0)
-    (version "3.0.3")
+    (version "3.0.4")
     (source (origin
               (inherit (package-source guile-3.0))
               (uri (string-append "mirror://gnu/guile/guile-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0fz6fgx7ran6nn0l978jmpckjc9knk4g3bddr75n0daqqmhjs95k"))))))
+                "0c8dkyvs6xbxp7rgnhkyakajzhakay7qn9kahj1mj49x5vf4fybb"))))))
 
 (define-public guile-next
   (deprecated-package "guile-next" guile-3.0))
@@ -330,7 +330,7 @@ without requiring the source code to be rewritten.")
   ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40525
   (hidden-package
    (package
-     (inherit guile-3.0)
+     (inherit guile-3.0-latest)
      (propagated-inputs
       `(("bdw-gc" ,libgc-7)
         ,@(srfi-1:alist-delete "bdw-gc" (package-propagated-inputs guile-3.0)))))))
@@ -596,7 +596,7 @@ specification.  These are the main features:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ijp/guile-gdbm.git")
+                    (url "https://github.com/ijp/guile-gdbm")
                     (commit "fa1d5b6231d0e4d096687b378c025f2148c5f246")))
               (file-name (string-append name "-" version "-checkout"))
               (patches (search-patches
diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 6a2e2c695b..211a5a34ac 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -294,7 +294,7 @@ be dangerous and may void your CPU or system board's warranty.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/uoaerg/wavemon.git")
+             (url "https://github.com/uoaerg/wavemon")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -338,7 +338,7 @@ supported by the Linux kernel.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rockchip-linux/rkdeveloptool.git")
+               (url "https://github.com/rockchip-linux/rkdeveloptool")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index f8bee424c3..4c8bf407ba 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2019, 2020 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
@@ -149,7 +149,7 @@ installation of Haskell libraries and programs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jameysharp/corrode.git")
+               (url "https://github.com/jameysharp/corrode")
                (commit "b6699fb2fa552a07c6091276285a44133e5c9789")))
          (file-name (git-file-name name version))
          (sha256
@@ -341,14 +341,14 @@ to @code{cabal repl}).")
 (define-public git-annex
   (package
     (name "git-annex")
-    (version "8.20200617")
+    (version "8.20200720.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://hackage.haskell.org/package/"
                            "git-annex/git-annex-" version ".tar.gz"))
        (sha256
-        (base32 "1vgpqbscvxm03ibxy6cjnp9vd1wpsr3gkajp4z3m9nnkmjz5r4q4"))))
+        (base32 "0g4wlfkwr9w21hvdywc7sk077rxlnigdr4m4yz41rc0s2nbjc9fn"))))
     (build-system haskell-build-system)
     (arguments
      `(#:configure-flags
@@ -370,8 +370,7 @@ to @code{cabal repl}).")
              ;; Factor out necessary build logic from the provided
              ;; `Setup.hs' script.  The script as-is does not work because
              ;; it cannot find its dependencies, and there is no obvious way
-             ;; to tell it where to look.  Note that we do not preserve the
-             ;; code that installs man pages here.
+             ;; to tell it where to look.
              (call-with-output-file "PreConf.hs"
                (lambda (out)
                  (format out "import qualified Build.Configure as Configure~%")
@@ -385,6 +384,18 @@ to @code{cabal repl}).")
            (lambda _
              (invoke "runhaskell" "PreConf.hs")
              #t))
+         (add-after 'build 'build-manpages
+           (lambda _
+             ;; The Setup.hs rewrite above removed custom code for building
+             ;; the man pages.  In addition to that code, git-annex's source
+             ;; tree has a file that's not included in the tarball but is used
+             ;; by the Makefile to build man pages.  Copy the core bits here.
+             (call-with-output-file "Build/MakeMans.hs"
+               (lambda (out)
+                 (format out "module Main where~%")
+                 (format out "import Build.Mans~%")
+                 (format out "main = buildMansOrWarn~%")))
+             (invoke "runhaskell" "Build/MakeMans.hs")))
          (replace 'check
            (lambda _
              ;; We need to set the path so that Git recognizes
@@ -400,6 +411,14 @@ to @code{cabal repl}).")
              ;; Undo `patch-shell-for-tests'.
              (copy-file "/tmp/Shell.hs" "Utility/Shell.hs")
              (apply (assoc-ref %standard-phases 'build) args)))
+         (add-after 'install 'install-manpages
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((man (string-append (assoc-ref outputs "out")
+                                       "/man/man1/")))
+               (mkdir-p man)
+               (for-each (lambda (file) (install-file file man))
+                         (find-files "man")))
+             #t))
          (add-after 'install 'install-symlinks
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -465,7 +484,8 @@ to @code{cabal repl}).")
      `(("ghc-tasty" ,ghc-tasty)
        ("ghc-tasty-hunit" ,ghc-tasty-hunit)
        ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck)
-       ("ghc-tasty-rerun" ,ghc-tasty-rerun)))
+       ("ghc-tasty-rerun" ,ghc-tasty-rerun)
+       ("perl" ,perl)))
     (home-page "https://git-annex.branchable.com/")
     (synopsis "Manage files with Git, without checking in their contents")
     (description "This package allows managing files with Git, without
@@ -604,7 +624,7 @@ and mIRC chat codes.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/david-janssen/kmonad.git")
+             (url "https://github.com/david-janssen/kmonad")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index bb7f57b49d..c2cffbad9e 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -392,7 +392,7 @@ been added since previous test run.")
     (inputs
      `(("ghc-tagged" ,ghc-tagged)
        ("ghc-tasty" ,ghc-tasty)))
-    (home-page "http://github.com/nomeata/tasty-expected-failure")
+    (home-page "https://github.com/nomeata/tasty-expected-failure")
     (synopsis "Mark tasty tests as failure expected")
     (description
      "With the function @code{Test.Tasty.ExpectedFailure.expectFail} in the
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 0c79ece194..c53dc064b1 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -568,7 +568,7 @@ Haskell's Web Application Interface (WAI).")
        ("ghc-tasty-hedgehog" ,ghc-tasty-hedgehog)
        ("ghc-tasty-hunit" ,ghc-tasty-hunit)
        ("ghc-doctest" ,ghc-doctest)))
-    (home-page "http://github.com/sjakobi/bsb-http-chunked")
+    (home-page "https://github.com/sjakobi/bsb-http-chunked")
     (synopsis "Chunked HTTP transfer encoding for bytestring builders")
     (description "This Haskell library contains functions for encoding
 bytestring builders for chunked Hypertext Transfer Protocol (HTTP) 1.1
@@ -616,7 +616,7 @@ transfers.")
        ("ghc-hunit" ,ghc-hunit)
        ("ghc-http-client" ,ghc-http-client)
        ("hspec-discover" ,hspec-discover)))
-    (home-page "http://github.com/yesodweb/wai")
+    (home-page "https://github.com/yesodweb/wai")
     (synopsis "HTTP server library for Haskell's WAI")
     (description "Warp is a server library for HTTP/1.x and HTTP/2
 based WAI (Web Application Interface in Haskell).")
@@ -671,7 +671,7 @@ limitation, automatic pruning, energy saving and replay resistance.")
        ("ghc-tls-session-manager" ,ghc-tls-session-manager)
        ("ghc-wai" ,ghc-wai)
        ("ghc-warp" ,ghc-warp)))
-    (home-page "http://github.com/yesodweb/wai")
+    (home-page "https://github.com/yesodweb/wai")
     (synopsis "SSL/TLS support for Warp")
     (description "This package provides SSL/TLS support for Warp,
 a WAI handler, via the native Haskell TLS implementation.")
@@ -807,7 +807,7 @@ attacks.")
      `(("ghc-attoparsec" ,ghc-attoparsec)
        ("ghc-hspec" ,ghc-hspec)
        ("ghc-quickcheck" ,ghc-quickcheck)))
-    (home-page "http://www.yesodweb.com/")
+    (home-page "https://www.yesodweb.com/")
     (synopsis "CSS parser and renderer")
     (description "This package provides a CSS parser and renderer for
 Haskell.")
@@ -1288,7 +1288,7 @@ functions, widgets, etc.")
                      ("ghc-wai-extra" ,ghc-wai-extra)
                      ("ghc-yesod-core" ,ghc-yesod-core)
                      ("ghc-persistent-sqlite" ,ghc-persistent-sqlite)))
-    (home-page "http://www.yesodweb.com/")
+    (home-page "https://www.yesodweb.com/")
     (synopsis "Helpers for using Persistent from Yesod")
     (description "This Haskell package provides helpers for using Persistent
 from Yesod.")
@@ -1447,7 +1447,7 @@ ignored.")
     (inputs
      `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties)
        ("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://www.haskell.org/haskellwiki/Regular_expressions_for_XML_Schema")
+    (home-page "https://wiki.haskell.org/Regular_expressions_for_XML_Schema")
     (synopsis "Regular expression library for W3C XML Schema regular expressions")
     (description
      "This library supports full W3C XML Schema regular expressions inclusive
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 0508916ead..54c77653cc 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -333,7 +333,7 @@ tool lex or flex for C/C++.")
        ("alsa-lib" ,alsa-lib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.haskell.org/haskellwiki/ALSA")
+    (home-page "https://wiki.haskell.org/ALSA")
     (synopsis "Binding to the ALSA Library API (Exceptions)")
     (description "This package provides access to ALSA infrastructure, that is
 needed by both alsa-seq and alsa-pcm.")
@@ -937,7 +937,7 @@ the bounds of \"base\" as well.")
         (base32
          "1ia6li7qjg1zkak4gf6mnbshw45mq9bfjr0jch58ds0lscmvwyzf"))))
     (build-system haskell-build-system)
-    (home-page "http://www.haskell.org/haskellwiki/Unicode-symbols")
+    (home-page "https://wiki.haskell.org/Unicode-symbols")
     (synopsis "Unicode alternatives for common functions and operators")
     (description "This package defines new symbols for a number of functions,
 operators and types in the base package.  All symbols are documented with
@@ -2113,7 +2113,7 @@ nothing.")
    ;; ghc-test-framework -> ghc-ansi-terminal -> ghc-colour.
    `(#:tests? #f))
   (build-system haskell-build-system)
-  (home-page "https://www.haskell.org/haskellwiki/Colour")
+  (home-page "https://wiki.haskell.org/Colour")
   (synopsis "Model for human colour perception")
   (description
    "This package provides a data type for colours and transparency.
@@ -2472,7 +2472,7 @@ interface}.")
      `(("ghc-hunit" ,ghc-hunit)
        ("ghc-test-framework" ,ghc-test-framework)
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)))
-    (home-page "http://github.com/bos/configurator")
+    (home-page "https://github.com/bos/configurator")
     (synopsis "Configuration management")
     (description
      "This package provides a configuration management library for programs
@@ -2644,7 +2644,7 @@ function performs the conversion you desire.")
        (sha256
         (base32 "1fq4gygxbz0bd0mzgvc1sl3m4gjnsv8nbgpnmdpa29zj5lb9agxc"))))
     (build-system haskell-build-system)
-    (home-page "https://www.haskell.org/haskellwiki/Record_access")
+    (home-page "https://wiki.haskell.org/Record_access")
     (synopsis
      "Haskell utilities for accessing and manipulating fields of records")
     (description "This package provides Haskell modules for accessing and
@@ -2665,7 +2665,7 @@ manipulating fields of records.")
         (base32 "0yp030vafbpddl27m606aibbbr5ar5j5bsv4bksscz3cq4yq5j10"))))
     (build-system haskell-build-system)
     (inputs `(("ghc-data-accessor" ,ghc-data-accessor)))
-    (home-page "https://www.haskell.org/haskellwiki/Record_access")
+    (home-page "https://wiki.haskell.org/Record_access")
     (synopsis "Use Accessor to access state in transformers State monad")
     (description "This package provides Haskell modules to allow use of
 Accessor to access state in transformers State monad.")
@@ -4762,7 +4762,7 @@ matching patterns against file paths.")
     (build-system haskell-build-system)
     (inputs
      `(("ghc-openglraw" ,ghc-openglraw)))
-    (home-page "https://www.haskell.org/haskellwiki/Opengl")
+    (home-page "https://wiki.haskell.org/Opengl")
     (synopsis "Raw Haskell bindings GLU")
     (description "GLURaw is a raw Haskell binding for the GLU 1.3 OpenGL
 utility library.  It is basically a 1:1 mapping of GLU's C API, intended as a
@@ -4789,7 +4789,7 @@ basis for a nicer interface.")
        ("ghc-opengl" ,ghc-opengl)
        ("ghc-openglraw" ,ghc-openglraw)
        ("freeglut" ,freeglut)))
-    (home-page "https://www.haskell.org/haskellwiki/Opengl")
+    (home-page "https://wiki.haskell.org/Opengl")
     (synopsis "Haskell bindings for the OpenGL Utility Toolkit")
     (description "This library provides Haskell bindings for the OpenGL
 Utility Toolkit, a window system-independent toolkit for writing OpenGL
@@ -4825,7 +4825,7 @@ programs.")
                (substitute* "os/generic/Graphics/Gnuplot/Private/OS.hs"
                  (("(gnuplotName = ).*$" all cmd)
                   (string-append cmd "\"" gnuplot "/bin/gnuplot\"")))))))))
-    (home-page "https://www.haskell.org/haskellwiki/Gnuplot")
+    (home-page "https://wiki.haskell.org/Gnuplot")
     (synopsis "2D and 3D plots using gnuplot")
     (description "This package provides a Haskell module for creating 2D and
 3D plots using gnuplot.")
@@ -5129,7 +5129,7 @@ the ‘haddock’ package.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/haskell/haddock.git")
+             (url "https://github.com/haskell/haddock")
              (commit (string-append "haddock-" version "-release"))))
        (file-name (git-file-name name version))
        (sha256
@@ -5145,7 +5145,7 @@ the ‘haddock’ package.")
     (inputs
      `(("ghc-syb" ,ghc-syb)
        ("ghc-xml" ,ghc-xml)))
-    (home-page "http://www.haskell.org/haddock/")
+    (home-page "https://www.haskell.org/haddock/")
     (synopsis "Test utilities for Haddock")
     (description "This package provides test utilities for Haddock.")
     (license license:bsd-3)
@@ -5492,7 +5492,7 @@ template-haskell abstract syntax.")
        ("ghc-utf8-string" ,ghc-utf8-string)
        ("ghc-microlens-platform" ,ghc-microlens-platform)
        ("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://github.com/MarcWeber/hasktags")
+    (home-page "https://github.com/MarcWeber/hasktags")
     (synopsis "Make @code{Ctags} and @code{Etags} files for Haskell programs")
     (description
      "This package provides a means of generating tag files for Emacs and
@@ -6991,7 +6991,7 @@ Kaseorg.")
        ("ghc-test-framework" ,ghc-test-framework)
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
        ("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://github.com/ekmett/linear/")
+    (home-page "https://github.com/ekmett/linear/")
     (synopsis "Linear algebra library for Haskell")
     (description
      "This package provides types and combinators for linear algebra on free
@@ -7625,7 +7625,8 @@ used both from lens and microlens).")
      `(("ghc-errorcall-eq-instance" ,ghc-errorcall-eq-instance)
        ("ghc-quickcheck" ,ghc-quickcheck)
        ("ghc-hunit" ,ghc-hunit)))
-    (home-page "https://software.complete.org/missingh")
+    ;; ‘Official’ <http://software.complete.org/missingh> redirects to a 404.
+    (home-page "https://github.com/haskell-hvr/missingh")
     (synopsis "Large utility library")
     (description
      "MissingH is a library of all sorts of utility functions for Haskell
@@ -8258,7 +8259,7 @@ IPv4, IPv6 and MAC addresses.")
     (native-inputs
      `(("ghc-hspec" ,ghc-hspec)
        ("hspec-discover" ,hspec-discover)))
-    (home-page "http://github.com/sjakobi/newtype-generics")
+    (home-page "https://github.com/sjakobi/newtype-generics")
     (synopsis "Typeclass and set of functions for working with newtypes")
     (description "The @code{Newtype} typeclass represents the packing and
 unpacking of a newtype, and allows you to operate under that newtype with
@@ -8441,7 +8442,7 @@ old @code{time} library.  For new projects, the newer
        ("ghc-gluraw" ,ghc-gluraw)
        ("ghc-statevar" ,ghc-statevar)
        ("ghc-openglraw" ,ghc-openglraw)))
-    (home-page "https://www.haskell.org/haskellwiki/Opengl")
+    (home-page "https://wiki.haskell.org/Opengl")
     (synopsis "Haskell bindings for the OpenGL graphics system")
     (description "This package provides Haskell bindings for the OpenGL
 graphics system (GL, version 4.5) and its accompanying utility library (GLU,
@@ -8467,7 +8468,7 @@ version 1.3).")
      `(("ghc-half" ,ghc-half)
        ("ghc-fixed" ,ghc-fixed)
        ("glu" ,glu)))
-    (home-page "https://www.haskell.org/haskellwiki/Opengl")
+    (home-page "https://wiki.haskell.org/Opengl")
     (synopsis "Raw Haskell bindings for the OpenGL graphics system")
     (description "OpenGLRaw is a raw Haskell binding for the OpenGL 4.5
 graphics system and lots of OpenGL extensions.  It is basically a 1:1 mapping
@@ -8883,7 +8884,7 @@ suitable for inclusion in pandoc YAML metadata.")
        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
        ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
        ("ghc-hunit" ,ghc-hunit)))
-    (home-page "http://johnmacfarlane.net/pandoc")
+    (home-page "https://johnmacfarlane.net/pandoc")
     (synopsis "Types for representing a structured document")
     (description
      "This module defines the @code{Pandoc} data structure, which is used by
@@ -9622,7 +9623,7 @@ ByteStrings in the style of other common *nix hex dump tools.")
     (inputs
      `(("ghc-haskell-lexer" ,ghc-haskell-lexer)
        ("ghc-happy" ,ghc-happy)))
-    (home-page "http://wiki.github.com/yav/pretty-show")
+    (home-page "https://wiki.github.com/yav/pretty-show")
     (synopsis "Tools for working with derived `Show` instances")
     (description
      "This package provides a library and an executable for working with
@@ -10565,7 +10566,7 @@ code where you can safely allocate resources.")
        ("ghc-tasty-hunit" ,ghc-tasty-hunit)
        ("ghc-tasty-hedgehog" ,ghc-tasty-hedgehog)
        ("ghc-hedgehog" ,ghc-hedgehog)))
-    (home-page "http://github.com/Soostone/retry")
+    (home-page "https://github.com/Soostone/retry")
     (synopsis "Retry combinators for monadic actions that may fail")
     (description "This package exposes combinators that can wrap
 arbitrary monadic actions.  They run the action and potentially retry
@@ -11966,7 +11967,7 @@ together.")
        ("ghc-unsafe" ,ghc-unsafe)
        ("ghc-quickcheck" ,ghc-quickcheck)
        ("ghc-syb" ,ghc-syb)))
-    (home-page "https://www.haskell.org/haskellwiki/Storable_Vector")
+    (home-page "https://wiki.haskell.org/Storable_Vector")
     (synopsis "Fast, packed, strict storable arrays with a list interface")
     (description "This library provides fast, packed, strict storable
 arrays with a list interface, a chunky lazy list interface with variable
@@ -13456,7 +13457,7 @@ constant-time:
      `(("ghc-syb" ,ghc-syb)
        ("ghc-hashable" ,ghc-hashable)
        ("ghc-unordered-containers" ,ghc-unordered-containers)))
-    (home-page "http://community.haskell.org/~ndm/uniplate/")
+    (home-page "https://github.com/ndmitchell/uniplate")
     (synopsis "Simple, concise and fast generic operations")
     (description "Uniplate is a library for writing simple and concise generic
 operations.  Uniplate has similar goals to the original Scrap Your Boilerplate
@@ -14351,7 +14352,7 @@ parts.")
         (base32
          "0azlzaxp2dn4l1nr7shsxah2magk1szf6fx0mv75az00qsjw6qg4"))))
     (build-system haskell-build-system)
-    (home-page "http://github.com/willdonnelly/xdg-basedir")
+    (home-page "https://github.com/willdonnelly/xdg-basedir")
     (synopsis "XDG Base Directory library for Haskell")
     (description "This package provides a library implementing the XDG Base Directory spec.")
     (license license:bsd-3)))
diff --git a/gnu/packages/hexedit.scm b/gnu/packages/hexedit.scm
index e1a029167a..c2c6228548 100644
--- a/gnu/packages/hexedit.scm
+++ b/gnu/packages/hexedit.scm
@@ -38,7 +38,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pixel/hexedit.git")
+                    (url "https://github.com/pixel/hexedit")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index dd2d0f1b95..98fe594b7f 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -131,11 +131,21 @@ GNU/Hurd."
     (build-system gnu-build-system)
     ;; Flex is needed both at build and run time.
     (inputs `(("gnumach-headers" ,gnumach-headers)
-              ("flex" ,flex)))
+              ("flex" ,flex)
+              ("perl" ,perl)))
     (native-inputs
      `(("flex" ,flex)
        ("bison" ,bison)))
-    (arguments `(#:tests? #f))
+    (arguments `(#:tests? #f
+                 #:phases
+                 (modify-phases %standard-phases
+                   (add-after 'install 'patch-non-shebang-references
+                     (lambda* (#:key build inputs outputs #:allow-other-keys)
+                       (let ((perl (assoc-ref inputs "perl"))
+                             (out  (assoc-ref outputs "out")))
+                         (substitute* (string-append out "/bin/mig")
+                           (("perl ") (string-append perl "/bin/perl ")))
+                         #t))))))
     (home-page "https://www.gnu.org/software/hurd/microkernel/mach/mig/gnu_mig.html")
     (synopsis "Mach 3.0 interface generator for the Hurd")
     (description
@@ -254,13 +264,21 @@ Library for GNU/Hurd.")
     (arguments
      '(#:modules ((guix build union))
        #:builder (begin
-                   (use-modules (ice-9 match)
+                   (use-modules (srfi srfi-1)
+                                (srfi srfi-26)
+                                (ice-9 match)
                                 (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
+                   (let ((inputs (filter
+                                  (compose (cute member <> '("gnumach-headers"
+                                                             "hurd-headers"
+                                                             "hurd-minimal"))
+                                           car)
+                                  %build-inputs)))
+                     (match inputs
+                       (((names . directories) ...)
+                        (union-build (assoc-ref %outputs "out")
+                                     directories)
+                        #t))))))
     (inputs `(("gnumach-headers" ,gnumach-headers)
               ("hurd-headers" ,hurd-headers)
               ("hurd-minimal" ,hurd-minimal)))
diff --git a/gnu/packages/i2p.scm b/gnu/packages/i2p.scm
index 0061701304..537aeaf76c 100644
--- a/gnu/packages/i2p.scm
+++ b/gnu/packages/i2p.scm
@@ -35,7 +35,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/PurpleI2P/i2pd.git")
+             (url "https://github.com/PurpleI2P/i2pd")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index 0793635b7d..b48f21b551 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@disroot.org>
+;;; Copyright © 2018, 2019, 2020 Peng Mei Yu <i@pengmeiyu.com>
 ;;; Copyright © 2020 kanichos <kanichos@yandex.ru>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;;
@@ -305,7 +305,7 @@ Japanese language input in most graphical applications.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rime/librime.git")
+             (url "https://github.com/rime/librime")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -351,69 +351,59 @@ traditional Chinese output.")
 (define-public rime-data
   (package
     (name "rime-data")
-    (version "0.38.20190131")
+    (version "0.38.20200623")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rime/plum.git")
-             (commit "8b48688cd4610d0c9223eb68831a31b6134e4cc8")))
+             (url "https://github.com/rime/plum")
+             (commit "397d601dd22cfc857613973724724b8f44db9f9c")))
        (file-name "plum-checkout")
        (sha256
-        (base32 "0fv3hv4av9y7afxijh1n8idnyf82v9rxxi2ypmxd7lkj4naa22qh"))))
+        (base32 "06ad5c4m7xsfr4if5ywshfj2aj5g5b5hwzh38dzccn7c1l2ibi0z"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                  ; no tests
+     `(#:modules ((ice-9 match)
+                  ,@%gnu-build-system-modules)
+       #:tests? #f                  ; no tests
        #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
                           "no_update=1")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
            (lambda _
-             ;; Set .DEFAULT_GOAL to `all'.
-             ;; Don't build binary schemas. The output is not deterministic.
+             ;; Don't build binary Rime schema.  The binary Rime schema files
+             ;; are platform dependent and contains timestamp information.
+             ;; Thus they are not reproducible.
+
+             ;; Change `.DEFAULT_GOAL' to `all'.
              (substitute* "Makefile"
                (("^\\.DEFAULT_GOAL := preset")
                 ".DEFAULT_GOAL := all"))
+             ;; Disable git operations.
+             (substitute* "scripts/install-packages.sh"
+               ((".*update-package\\.sh.*") ""))
              #t))
-         ;; Add schema packages into "package/rime" directory.
-         (add-after 'unpack 'add-packages
+         ;; Copy Rime schemas into the "package/rime" directory.
+         (add-after 'unpack 'copy-rime-schemas
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((dest-dir "package/rime"))
+             (let ((dest-dir "package/rime"))
                (mkdir-p dest-dir)
-               (for-each (lambda (pkg)
-                           (symlink (assoc-ref inputs
-                                               (string-append "rime-" pkg))
-                                    (string-append dest-dir "/" pkg)))
-                         '("array"
-                           "bopomofo"
-                           "cangjie"
-                           "combo-pinyin"
-                           "double-pinyin"
-                           "emoji"
-                           "essay"
-                           "ipa"
-                           "jyutping"
-                           "luna-pinyin"
-                           "middle-chinese"
-                           "pinyin-simp"
-                           "prelude"
-                           "quick"
-                           "scj"
-                           "soutzoe"
-                           "stenotype"
-                           "stroke"
-                           "terra-pinyin"
-                           "wubi"
-                           "wugniu")))
+               (for-each
+                (match-lambda
+                  ((name . path)
+                   (if (string-prefix? "rime-" name)
+                       (let ((schema (substring name (string-length "rime-"))))
+                         (symlink path (string-append dest-dir "/" schema))))))
+                inputs))
              #t))
          (delete 'configure))))
-    (native-inputs
+    (inputs
      `(("rime-array"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-array.git")
+                 (url "https://github.com/rime/rime-array")
                  (commit "93cc99238f120606a076220ec4ddcad164f6396a")))
            (file-name "rime-array-checkout")
            (sha256
@@ -423,7 +413,7 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-bopomofo.git")
+                 (url "https://github.com/rime/rime-bopomofo")
                  (commit "ed25098386f5efd3d70b08650f0d1b70c41c11a3")))
            (file-name "rime-bopomofo-checkout")
            (sha256
@@ -433,27 +423,37 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-cangjie.git")
+                 (url "https://github.com/rime/rime-cangjie")
                  (commit "5fd8ce6f64039e505ca02655a621f2e830b97c19")))
            (file-name "rime-cangjie-checkout")
            (sha256
             (base32
              "1gf6r0q593ixar6v0jyvs56cik2gjp7pf9v799rfd2yydyia3bfg"))))
+       ("rime-cantonese"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/rime/rime-cantonese")
+                 (commit "e06fe8e79d7d64db2f2b6339aabc004d8cbc1f67")))
+           (file-name "rime-cantonese-checkout")
+           (sha256
+            (base32
+             "0j6kbhdfj7dx812yzykndzbk53s2v1rsaa2jlyma03hz7qlnnl0s"))))
        ("rime-combo-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-combo-pinyin.git")
-                 (commit "9bd952b964e9744e5d18e9e31625b50f3585a2cb")))
+                 (url "https://github.com/rime/rime-combo-pinyin")
+                 (commit "67b29cdc786928ea46b43a9c660dee3db8f1adff")))
            (file-name "rime-combo-pinyin-checkout")
            (sha256
             (base32
-             "0crafjs39x4j221gb34mxxh3cdpxfhhx3nfw6b6bgkzlrp35a02b"))))
+             "1v6ax51xll2aizbz1xzjyk6p3lmq8cyzbxkrwcffa723zaj0zz4l"))))
        ("rime-double-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-double-pinyin.git")
+                 (url "https://github.com/rime/rime-double-pinyin")
                  (commit "69bf85d4dfe8bac139c36abbd68d530b8b6622ea")))
            (file-name "rime-double-pinyin-checkout")
            (sha256
@@ -463,57 +463,57 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-emoji.git")
-                 (commit "c8d67f9b50bf89a10c57da646d2e6db8799aef38")))
+                 (url "https://github.com/rime/rime-emoji")
+                 (commit "c99d34e4a837349e4679a110bb4b94f71fe015ae")))
            (file-name "rime-emoji-checkout")
            (sha256
             (base32
-             "0ngcm088iyyp3llxvv0m80i7n5928d6cgh256ikhn3ixallxxdxv"))))
+             "1wiwlxjjml9xfgg7z1wzaf4b1bsg81dkwvsfff2b61fwxq61zkgw"))))
        ("rime-essay"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-essay.git")
-                 (commit "71d0b1f3d4f3bfe61ae07581edf07579740c4421")))
+                 (url "https://github.com/rime/rime-essay")
+                 (commit "88055afa3752e4582fa887765d962a30e02bb1fa")))
            (file-name "rime-essay-checkout")
            (sha256
             (base32
-             "1iwz104k7zfk7lpa257kvpqdr6jhbg3p76n3644ywiz4l7kc678i"))))
+             "0ap7xqv6v0x6mdkw2cv93cbr6qhpla3803z04522wb8l9hr7iryg"))))
        ("rime-ipa"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-ipa.git")
-                 (commit "e420c7bfb07153a2d2484eb2bdccdd719811abbb")))
+                 (url "https://github.com/rime/rime-ipa")
+                 (commit "22b71710e029bcb412e9197192a638ab11bc2abf")))
            (file-name "rime-ipa-checkout")
            (sha256
             (base32
-             "1wfv7lb4y61b3qic5mhw92rn46cckldd9wrkcq03mg5512mbw63z"))))
+             "0zdk4f9qkfj3q5hmjnairj1lv6f6y27mic12k886n6sxywwbwr2k"))))
        ("rime-jyutping"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-jyutping.git")
-                 (commit "04891a298319888e8c6b1a20e0fa81cfaea01264")))
+                 (url "https://github.com/rime/rime-jyutping")
+                 (commit "6fe0d727b3178feabd0f01e6cd82599202764735")))
            (file-name "rime-jyutping-checkout")
            (sha256
             (base32
-             "0wsj965khglz36cnvfm4fkv386xvxhmsxgcw88p5qi0b3wlbzzx6"))))
+             "0wz6d3pmi72ysh2c0nml3rsz9hd2vazsyhnz34gq26yf4j85phfs"))))
        ("rime-luna-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-luna-pinyin.git")
-                 (commit "c9c405566177cb3898bdb82d7f4157587f2d9c01")))
+                 (url "https://github.com/rime/rime-luna-pinyin")
+                 (commit "f1268e192ca88b9526467ce04ac3e47c837891ad")))
            (file-name "rime-luna-pinyin-checkout")
            (sha256
             (base32
-             "0i7f2675lvj9pzwlm8550ifnr3xqi77xlyyvml1wpxpkfqhjr475"))))
+             "0nxnjp1ybcrsan1mxnzwbkfhwl99kza6i9k1s7m9wzmhv7x7zahg"))))
        ("rime-middle-chinese"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-middle-chinese.git")
+                 (url "https://github.com/rime/rime-middle-chinese")
                  (commit "ed6d44f8d0bedf6e0c1c3183a270f8f01a211a40")))
            (file-name "rime-middle-chinese-checkout")
            (sha256
@@ -523,17 +523,17 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-pinyin-simp.git")
-                 (commit "bb5a6dfa871669d2f451b477bfff6d131df6f6c6")))
+                 (url "https://github.com/rime/rime-pinyin-simp")
+                 (commit "b73df7fc0994912ce785462b3be569ae81258ac2")))
            (file-name "rime-pinyin-simp-checkout")
            (sha256
             (base32
-             "0ss82042k833w5q72h72ghcfchkx00nx6l4z4fb861s2rxr0bkjd"))))
+             "1m9hchnj1xf5s5185qm66ja0g1324drc98b2jjhnqgcp47bwz9fx"))))
        ("rime-prelude"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-prelude.git")
+                 (url "https://github.com/rime/rime-prelude")
                  (commit "8a52b4f86a59f3eb602f9a4cf6a680a67c15df8c")))
            (file-name "rime-prelude-checkout")
            (sha256
@@ -543,7 +543,7 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-quick.git")
+                 (url "https://github.com/rime/rime-quick")
                  (commit "3fe5911ba608cb2df1b6301b76ad1573bd482a76")))
            (file-name "rime-quick-checkout")
            (sha256
@@ -553,7 +553,7 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-scj.git")
+                 (url "https://github.com/rime/rime-scj")
                  (commit "cab5a0858765eff0553dd685a2d61d5536e9149c")))
            (file-name "rime-scj-checkout")
            (sha256
@@ -563,7 +563,7 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-soutzoe.git")
+                 (url "https://github.com/rime/rime-soutzoe")
                  (commit "beeaeca72d8e17dfd1e9af58680439e9012987dc")))
            (file-name "rime-soutzoe-checkout")
            (sha256
@@ -573,37 +573,37 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-stenotype.git")
-                 (commit "1d472097c32d943d1096644f4c31f28799a17bd8")))
+                 (url "https://github.com/rime/rime-stenotype")
+                 (commit "f3e9189d5ce33c55d3936cc58e39d0c88b3f0c88")))
            (file-name "rime-stenotype-checkout")
            (sha256
             (base32
-             "1dy9qlbyhnshq2k1vcvkqn2624r96iaixhyrx1z7v0vz84fjf6y4"))))
+             "0dl6px7lrh3xa87knjzwzdcwjj1k1dg4l72q7lb48an4s9f1cy5d"))))
        ("rime-stroke"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-stroke.git")
-                 (commit "f802735392b378fb2a56a9b7b53b8ec96a30ccaf")))
+                 (url "https://github.com/rime/rime-stroke")
+                 (commit "ea8576d1accd6fda339e96b415caadb56e2a07d1")))
            (file-name "rime-stroke-checkout")
            (sha256
             (base32
-             "1wlrsskxhldh8369n771gk7sxflzdx0c9qhq1mqm5hhkwc5ig1j0"))))
+             "07h6nq9867hjrd2v3h1pnr940sdrw4mqrzj43siz1rzjxz3s904r"))))
        ("rime-terra-pinyin"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-terra-pinyin.git")
-                 (commit "b9e0edd3182e74b26b03a278c038e669ca538a35")))
+                 (url "https://github.com/rime/rime-terra-pinyin")
+                 (commit "492aaf914f9de37cc9d26b846dc693116de70ae8")))
            (file-name "rime-terra-pinyin-checkout")
            (sha256
             (base32
-             "1vzrv2k178bii4ld9rvpdi8zmcwybd8bks0qzjx2v4kbjgwj28zk"))))
+             "1l4l2w42mc3sf7jwbadx95gzrsq11ld9f6yj2hwaq9accainw3bf"))))
        ("rime-wubi"
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-wubi.git")
+                 (url "https://github.com/rime/rime-wubi")
                  (commit "dd052ee158a38cb791755318b1aef9b4a3ed0316")))
            (file-name "rime-wubi-checkout")
            (sha256
@@ -613,7 +613,7 @@ traditional Chinese output.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/rime/rime-wugniu.git")
+                 (url "https://github.com/rime/rime-wugniu")
                  (commit "abd1ee98efbf170258fcf43875c21a4259e00b61")))
            (file-name "rime-wugniu-checkout")
            (sha256
@@ -623,7 +623,7 @@ traditional Chinese output.")
     (synopsis "Schema data of Rime Input Method Engine")
     (description "@dfn{rime-data} provides the schema data of Rime Input
 Method Engine.")
-    (license lgpl3+)))
+    (license lgpl3)))
 
 (define-public ibus-rime
   (package
@@ -633,7 +633,7 @@ Method Engine.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rime/ibus-rime.git")
+             (url "https://github.com/rime/ibus-rime")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -689,7 +689,7 @@ various input schemas including glyph-based input methods, romanization-based
 input methods as well as those for Chinese dialects.  It has the ability to
 compose phrases and sentences intelligently and provide very accurate
 traditional Chinese output.")
-    (license gpl3+)))
+    (license gpl3)))
 
 (define-public libhangul
   (package
diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm
index 77a0c09b4c..d467096708 100644
--- a/gnu/packages/icu4c.scm
+++ b/gnu/packages/icu4c.scm
@@ -6,6 +6,8 @@
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +26,7 @@
 
 (define-module (gnu packages icu4c)
   #:use-module (gnu packages)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (guix licenses)
@@ -93,6 +96,22 @@ C/C++ part.")
    (license x11)
    (home-page "http://site.icu-project.org/")))
 
+(define-public icu4c-67
+  (package
+    (inherit icu4c)
+    (version "67.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4c-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    "-src.tgz"))
+              (sha256
+               (base32
+                "1p6mhvxl0xr2n0g6xdps3mwzwlv6mjsz3xlpm793p9aiybb0ra4l"))))))
+
 (define-public icu4c-build-root
   (package
     (inherit icu4c)
@@ -115,22 +134,56 @@ C/C++ part.")
 (define-public java-icu4j
   (package
     (name "java-icu4j")
-    (version "59.1")
+    (version "66.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.icu-project.org/files/icu4j/"
-                                  version "/icu4j-"
-                                  (string-map (lambda (x)
-                                                (if (char=? x #\.) #\_ x))
-                                              version)
-                                  "-src.jar"))
+              (uri (string-append
+                    "https://github.com/unicode-org/icu/releases/download/release-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\- x)) version)
+                    "/icu4j-"
+                    (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
+                    ".tgz"))
               (sha256
-               (base32
-                "0bgxsvgi0qcwj60pvcxrf7a3fbk7aksyxnfwpbzavyfrfzixqh0c"))))
+               (base32 "1ahdyz9209lwl7knb2l3gmnkkby221p0vpgx70fj4j02rdzgvw0d"))))
     (build-system ant-build-system)
     (arguments
-     `(#:tests? #f                      ; no tests included
-       #:jar-name "icu4j.jar"))
+     `(#:make-flags
+       (list (string-append "-Djunit.core.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-junit")
+                                   ".*.jar$")))
+             (string-append "-Djunit.junitparams.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-junitparams")
+                                   ".*.jar$")))
+             (string-append "-Djunit.hamcrest.jar="
+                            (car (find-files
+                                   (assoc-ref %build-inputs "java-hamcrest-core")
+                                   ".*.jar$"))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "..")
+             #t))
+         (add-before 'build 'remove-ivy
+           (lambda _
+             ;; This target wants to download ivy and use it to download
+             ;; junit.
+             (substitute* "build.xml"
+               (("depends=\"test-init-junit-dependency\"") ""))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((share (string-append (assoc-ref outputs "out")
+                                         "/share/java/")))
+               (mkdir-p share)
+               (install-file "icu4j.jar" share)
+               #t))))))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-junitparams" ,java-junitparams)
+       ("java-hamcrest-core" ,java-hamcrest-core)))
     (home-page "http://site.icu-project.org/")
     (synopsis "International Components for Unicode")
     (description
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 801dc70149..ea6380167d 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018 Lprndn <guix@lprndn.info>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -487,6 +488,43 @@ quickly, especially on machines with more than one CPU core.  This is primarily
 due to its architecture which automatically parallelises the image workflows.")
     (license license:lgpl2.1+)))
 
+(define-public gmic
+  (package
+    (name "gmic")
+    (version "2.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://gmic.eu/files/source/gmic_"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "13axx7nwchn6ysgpvlw3fib474q4nrwv3qn20g3q03ldid0xvjah"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ;there are no tests
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("curl" ,curl)
+       ("fftw" ,fftw)
+       ("graphicsmagick" ,graphicsmagick)
+       ("libjpeg-turbo" ,libjpeg-turbo)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("libx11" ,libx11)
+       ;;("opencv" ,opencv) ;OpenCV is currently broken in the CI
+       ("openexr" ,openexr)
+       ("zlib" ,zlib)))
+    (home-page "https://gmic.eu/")
+    (synopsis "Full-featured framework for digital image processing")
+    (description "G'MIC is a full-featured framework for digital image
+processing.  It provides several user interfaces to convert / manipulate
+/ filter / visualize generic image datasets, ranging from 1D scalar
+signals to 3D+t sequences of multi-spectral volumetric images, hence
+including 2D color images.")
+    ;; Dual-licensed, either license applies.
+    (license (list license:cecill license:cecill-c))))
+
 (define-public nip2
   (package
     (name "nip2")
@@ -549,7 +587,7 @@ recalculates.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vxl/vxl.git")
+             (url "https://github.com/vxl/vxl")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -591,7 +629,7 @@ libraries designed for computer vision research and implementation.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vxl/vxl.git")
+             (url "https://github.com/vxl/vxl")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -812,7 +850,7 @@ combine the information contained in both.")
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/pyushkevich/c3d.git")
+                   (url "https://github.com/pyushkevich/c3d")
                    (commit commit)))
              (file-name (git-file-name "c3d" version))
              (sha256
@@ -827,7 +865,7 @@ combine the information contained in both.")
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/pyushkevich/greedy.git")
+                   (url "https://github.com/pyushkevich/greedy")
                    (commit commit)))
              (file-name (git-file-name "greedy" version))
              (sha256
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 78d7e7c01b..610a3d77bf 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -10,7 +10,7 @@
 ;;; 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>
+;;; Copyright © 2019, 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2020 Peng Mei Yu <pengmeiyu@riseup.net>
 ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
@@ -74,7 +74,7 @@
 (define-public feh
   (package
     (name "feh")
-    (version "3.4")
+    (version "3.4.1")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -82,7 +82,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0r83zincbfnk8g13xwm2qaccml9srnwlsmpc1f0nhwjkqyjmqm0q"))))
+                "0yvvj1s7ayn0lwils582smwkmckdk0gij5c58g45n4xh981n693q"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -120,77 +120,46 @@ actions.")
               "See 'COPYING' in the distribution."))))
 
 (define-public geeqie
-  ;; The latest release, 1.4, fails to build with Exiv2 0.27.1.  The upstream
-  ;; repo has several fixes for that, so take a snapshot.
-  (let ((commit "c220ddefb1b6b11b54f7598f0d44dd0723325ed4")
-        (revision "1"))
-    (package
-      (name "geeqie")
-      (version (git-version "1.4" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/BestImageViewer/geeqie")
-                      (commit commit)))
-                (sha256
-                 (base32
-                  "07424nzrnwbksgalgg1a6ig2snd986w79kca1cfnv1q9kc7x2h3x"))
-                (file-name (git-file-name name version))))
-      (build-system gnu-build-system)
-      (arguments
-       `( ;; Enable support for a "map" pane using GPS data.
-         #:configure-flags '("--enable-map")
-
-         ;; Parallel builds fail with something like:
-         ;;   image-load.c:143:9: error: ‘gq_marshal_VOID__INT_INT_INT_INT’ undeclared
-         ;; due to unexpressed makefile dependencies.
-         #:parallel-build? #f
-
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'bootstrap 'pre-bootstrap
-             (lambda _
-               (define (write-dummy-changelog port)
-                 (display "See Git history for a change log.\n" port))
-               ;; Create ChangeLog{,.html} to placate the makefile, which would
-               ;; otherwise require access to the Git repo.
-               (call-with-output-file "ChangeLog"
-                 write-dummy-changelog)
-               (call-with-output-file "ChangeLog.html"
-                 write-dummy-changelog)
-
-               ;; Don't try to run 'git' for the version number.
-               (substitute* "configure.ac"
-                 (("m4_esyscmd_s\\([^)]+\\)")
-                  (string-append "[" ,version "]")))
-
-               ;; Remove references to non-existent files.
-               (substitute* "po/POTFILES.in"
-                 (("^plugins/import/.*") ""))
-               #t)))))
-      (inputs
-       `(("clutter" ,clutter)
-         ("libchamplain" ,libchamplain)
-         ("lcms" ,lcms)
-         ("exiv2" ,exiv2)
-         ("libpng" ,libpng)
-         ("gtk+" ,gtk+)))
-      (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)
-         ("glib" ,glib "bin")                     ; glib-gettextize
-         ("intltool" ,intltool)
-         ("pkg-config" ,pkg-config)))
-      (home-page "http://www.geeqie.org/")
-      (synopsis "Lightweight GTK+ based image viewer")
-      (description
-       "Geeqie is a lightweight GTK+ based image viewer for Unix like operating
+  (package
+    (name "geeqie")
+    (version "1.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/BestImageViewer/geeqie")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0nf45sh3pwsv98sppcrqj81b6mdi31n1sbc7gn88m8mhpfp1qq6k"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `( ;; Enable support for a "map" pane using GPS data.
+       #:configure-flags '("--enable-map"
+                           "--enable-gtk3")))
+    (inputs
+     `(("clutter" ,clutter)
+       ("libchamplain" ,libchamplain)
+       ("lcms" ,lcms)
+       ("exiv2" ,exiv2)
+       ("libpng" ,libpng)
+       ("gtk+" ,gtk+)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("glib" ,glib "bin")                       ; glib-gettextize
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://www.geeqie.org/")
+    (synopsis "Lightweight GTK+ based image viewer")
+    (description
+     "Geeqie is a lightweight GTK+ based image viewer for Unix like operating
 systems.  It features: EXIF, IPTC and XMP metadata browsing and editing
 interoperability; easy integration with other software; geeqie works on files
 and directories, there is no need to import images; fast preview for many raw
 image formats; tools for image comparison, sorting and managing photo
 collection.  Geeqie was initially based on GQview.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public gpicview
   (package
@@ -222,7 +191,7 @@ It is the default image viewer on LXDE desktop environment.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/muennich/sxiv.git")
+                    (url "https://github.com/muennich/sxiv")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -268,7 +237,7 @@ it and customize it for your needs.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/hellosiyan/Viewnior.git")
+               (url "https://github.com/hellosiyan/Viewnior")
                (commit (string-append name "-" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -320,7 +289,7 @@ your images.  Among its features are:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/posva/catimg.git")
+             (url "https://github.com/posva/catimg")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -519,7 +488,7 @@ For PDF support, install the @emph{mupdf} package.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jurplel/qView.git")
+             (url "https://github.com/jurplel/qView")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -562,19 +531,21 @@ preloading.")
 (define-public chafa
   (package
     (name "chafa")
-    (version "1.2.2")
+    (version "1.4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hpjansson.org/chafa/releases/chafa-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0aa7119514rhsak5i0kgvwllb9z74lnfzfn7dzfhs27fc8cvx1dg"))))
+                "18rb82bfqj1sj2g4irazx4lwq9q4b4k7my1r0q714vf9yhs41ls6"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("glib" ,glib)
+     `(("freetype" ,freetype)
+       ("libjpeg" ,libjpeg-turbo)
+       ("glib" ,glib)
        ("imagemagick" ,imagemagick)))
     (synopsis "Convert images to ANSI/Unicode characters")
     (description
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 393ee7e08b..3fdc6db8a1 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -87,6 +87,7 @@
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system scons)
@@ -308,7 +309,7 @@ Currently all documentation resides in @file{pnglite.h}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ImageOptim/libimagequant.git")
+             (url "https://github.com/ImageOptim/libimagequant")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -332,7 +333,7 @@ and other PNG optimizers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kornelski/pngquant.git")
+             (url "https://github.com/kornelski/pngquant")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -553,7 +554,7 @@ extracting icontainer icon files.")
    (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.osgeo.org/libtiff/tiff-"
+       (uri (string-append "https://download.osgeo.org/libtiff/tiff-"
                            version ".tar.gz"))
        (sha256
         (base32
@@ -588,7 +589,7 @@ collection of tools for doing simple manipulations of TIFF images.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DanBloomberg/leptonica.git")
+             (url "https://github.com/DanBloomberg/leptonica")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -995,7 +996,7 @@ more modular, simple, and flexible.")
     (home-page
      ;; This vanished page is universally accepted as giblib's home despite not
      ;; mentioning the package once.
-     (string-append "https://web.archive.org/web/20140907071208"
+     (string-append "https://web.archive.org/web/20140907071208/"
                     "https://linuxbrit.co.uk/software/"))
     (synopsis "Wrapper library for imlib2")
     (description
@@ -1356,7 +1357,7 @@ convert, manipulate, filter and display a wide variety of image formats.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mdadams/jasper.git")
+                    (url "https://github.com/mdadams/jasper")
                     (commit (string-append "version-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1379,7 +1380,7 @@ ISO/IEC 15444-1).")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/sekrit-twc/zimg.git")
+              (url "https://github.com/sekrit-twc/zimg")
               (commit (string-append "release-" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -1407,7 +1408,7 @@ the programmer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/myint/perceptualdiff.git")
+             (url "https://github.com/myint/perceptualdiff")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1481,7 +1482,7 @@ changed, making the embedding resistant against first-order statistical tests.")
       (source
        (origin (method git-fetch)
                (uri (git-reference
-                     (url "https://github.com/extemporelang/stb.git")
+                     (url "https://github.com/extemporelang/stb")
                      (commit commit)))
                (sha256
                 (base32
@@ -1687,7 +1688,7 @@ medical image data, e.g. magnetic resonance image (MRI) and functional MRI
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/thezbyg/gpick.git")
+                    (url "https://github.com/thezbyg/gpick")
                     (commit (string-append name "-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1750,7 +1751,7 @@ parsing, viewing, modifying, and saving this metadata.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lupoDharkael/flameshot.git")
+             (url "https://github.com/lupoDharkael/flameshot")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1863,7 +1864,7 @@ identical visual appearance.")
     (origin
      (method git-fetch)
      (uri (git-reference
-           (url "https://github.com/emersion/grim.git")
+           (url "https://github.com/emersion/grim")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
@@ -1889,7 +1890,7 @@ identical visual appearance.")
     (origin
      (method git-fetch)
      (uri (git-reference
-           (url "https://github.com/emersion/slurp.git")
+           (url "https://github.com/emersion/slurp")
            (commit (string-append "v" version))))
      (file-name (git-file-name name version))
      (sha256
@@ -2120,3 +2121,55 @@ It can create and edit indexed palette or 24bit RGB images, offers basic
 painting and palette manipulation tools.  It also handles JPEG, JPEG2000,
 GIF, TIFF, WEBP, BMP, PNG, XPM formats.")
     (license license:gpl3+)))
+
+(define-public phockup
+  (package
+    (name "phockup")
+    (version "1.5.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ivandokov/phockup")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "13ajj0xch7yfqaaxbw0awxs0fz17n1rxir4gqh2wcgxjysqk1j2y"))))
+    (build-system copy-build-system)
+    (arguments
+     `(#:install-plan '(("src" "share/phockup/")
+                        ("phockup.py" "share/phockup/"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* (list "src/dependency.py" "src/exif.py")
+               (("exiftool")
+                (string-append (assoc-ref inputs "perl-image-exiftool")
+                               "/bin/exiftool")))
+             #t))
+         (add-before 'install 'check
+           (lambda _
+             (invoke "pytest")))
+         (add-after 'install 'install-bin
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir (string-append out "/bin"))
+               (symlink (string-append out "/share/phockup/phockup.py")
+                        (string-append out "/bin/phockup")))
+             #t)))))
+    (inputs
+     `(("perl-image-exiftool" ,perl-image-exiftool)
+       ("python" ,python)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-pytest-mock" ,python-pytest-mock)))
+    (home-page "https://github.com/ivandokov/phockup")
+    (synopsis "Organize photos and videos in folders")
+    (description "Phockup is a media sorting tool that uses creation date and
+time information in photos and videos to organize them into folders by year,
+month and day.  All files which are not images or videos or those which do not
+have creation date information will be placed in a folder called
+@file{unknown}.")
+    (license license:expat)))
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 15f174f8b6..ba3c71d964 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -37,7 +37,7 @@
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/ipfs/go-ipfs-cmdkit.git")
+                 (url "https://github.com/ipfs/go-ipfs-cmdkit")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -65,7 +65,7 @@ that are shared between @command{go-ipfs/commands} and its rewrite
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ipfs/go-ipfs-api.git")
+               (url "https://github.com/ipfs/go-ipfs-api")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -110,7 +110,7 @@ that are shared between @command{go-ipfs/commands} and its rewrite
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/whyrusleeping/gx.git")
+             (url "https://github.com/whyrusleeping/gx")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index 81e4205acf..5abd54b49a 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -80,12 +80,10 @@
           "0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
         (patches (search-patches "quassel-qt-514-compat.patch"))
         (modules '((guix build utils)))
-        ;; We don't want to install the bundled scripts.
+        ;; We don't want to install the bundled inxi script.
         (snippet
          '(begin
-            (delete-file-recursively "data/scripts")
-            (substitute* "data/CMakeLists.txt"
-              (("NOT WIN32") "WIN32"))
+            (delete-file "data/scripts/inxi")
             #t))))
     (build-system cmake-build-system)
     (arguments
@@ -103,8 +101,7 @@
          (add-after 'unpack 'patch-inxi-reference
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((inxi (string-append (assoc-ref inputs "inxi") "/bin/inxi")))
-               (substitute* "src/common/aliasmanager.cpp"
-                 ((" inxi ") (string-append " " inxi " ")))
+               (symlink inxi "data/scripts/inxi")
                #t))))
        #:tests? #f)) ; no test target
     (native-inputs
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index d5cb3b62f6..85a06026ed 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -23,6 +23,7 @@
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -62,7 +63,7 @@
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
 
-(define %jami-version "20200401.1.6f090de")
+(define %jami-version "20200710.1.6bd18d2")
 
 (define* (jami-source #:key without-daemon)
   (origin
@@ -78,7 +79,7 @@
          #f))
     (sha256
      (base32
-      "0lryx9n1jn0jsw7s10pbwivqv0d5m3jdzhdhdyg5n02v72mjvkmh"))))
+      "0lg61jv39x7kc9lq30by246xb6gcgp1rzj49ak7ff8nqpfzyfvva"))))
 
 ;; Savoir-Faire Linux modifies many libraries to add features
 ;; to Jami. This procedure makes applying patches to a given
@@ -141,8 +142,10 @@
              ;; against pjproject-jami:
              ;;   relocation R_X86_64_32S against `.rodata' can not be used when
              ;;   making a shared object;
-             "CFLAGS=-fPIC"
-             "CXXFLAGS=-fPIC")
+             ;; -DNDEBUG is needed to prevent assertion from happening and
+             ;; stopping the daemon.
+             "CFLAGS=-fPIC -DNDEBUG"
+             "CXXFLAGS=-fPIC -DNDEBUG")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'make-git-checkout-writable
@@ -167,7 +170,10 @@
                   "0006-ignore_ipv6_on_transport_check"
                   "0007-pj_ice_sess"
                   "0008-fix_ioqueue_ipv6_sendto"
-                  "0009-add-config-site"))
+                  "0009-add-config-site"
+                  "0010-fix-pkgconfig"
+                  "0011-fix-tcp-death-detection"
+                  "0012-fix-turn-shutdown-crash"))
                #t)))
          ;; TODO: We could use substitute-keyword-arguments instead of
          ;; repeating the phases from pjproject, but somehow it does
@@ -455,6 +461,7 @@
        ("gsm" ,gsm)
        ("jack" ,jack-1)
        ("jsoncpp" ,jsoncpp)
+       ("libarchive" ,libarchive)
        ("libnatpmp" ,libnatpmp)
        ("libogg" ,libogg)
        ("libva" ,libva)
@@ -590,6 +597,3 @@ IAX protocols, as well as decentralized calling using P2P-DHT.
 This package provides the Jami client for the GNOME desktop.")
     (home-page "https://jami.net")
     (license license:gpl3+)))
-
-(define-public jami-client-gnome
-  (deprecated-package "jami-client-gnome" jami))
diff --git a/gnu/packages/java-compression.scm b/gnu/packages/java-compression.scm
index b1d3ae7060..112f04af53 100644
--- a/gnu/packages/java-compression.scm
+++ b/gnu/packages/java-compression.scm
@@ -207,7 +207,6 @@ compressor/decompressor.")
      `(#:jar-name "iq80-snappy.jar"
        #:source-dir "src/main/java"
        #:test-dir "src/test"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
          (replace 'check
@@ -228,13 +227,13 @@ compressor/decompressor.")
              ;; We don't have hadoop
              (delete-file "src/main/java/org/iq80/snappy/HadoopSnappyCodec.java")
              (delete-file "src/test/java/org/iq80/snappy/TestHadoopSnappyCodec.java")
-             #t)))))
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
     (home-page "https://github.com/dain/snappy")
     (native-inputs
-     `(("guava" ,java-guava)
+     `(("java-guava" ,java-guava)
        ("java-snappy" ,java-snappy)
-       ("hamcrest" ,java-hamcrest-core)
-       ("testng" ,java-testng)))
+       ("java-testng" ,java-testng)))
     (synopsis "Java port of the Snappy (de)compressor")
     (description
      "Iq80-snappy is a port of the Snappy compressor and decompressor rewritten
@@ -303,14 +302,21 @@ It can be used as a replacement for the Apache @code{CBZip2InputStream} /
              ;; the package is not contained in a subdirectory
              (chdir "..")
              #t))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Do we want to install *Demo.jar?
-             (install-file "build/jar/xz.jar"
-                           (string-append
-                             (assoc-ref outputs "out")
-                             "/share/java/xz.jar"))
-             #t)))))
+         (add-before 'install 'generate-pom
+           (lambda _
+             (copy-file "maven/pom_template.xml" "pom.xml")
+             (substitute* "pom.xml"
+               (("@VERSION@") ,version)
+               (("@TITLE@") "XZ data compression")
+               (("@HOMEPAGE@") "http://tukaani.org/xz/java.html"))
+             #t))
+        (add-before 'install 'rename-jar
+          (lambda _
+            (rename-file "build/jar/xz.jar"
+                         (string-append "build/jar/xz-" ,version ".jar"))
+            #t))
+        (replace 'install
+          (install-from-pom "pom.xml")))))
     (native-inputs
      `(("unzip" ,unzip)))
     (home-page "https://tukaani.org")
diff --git a/gnu/packages/java-graphics.scm b/gnu/packages/java-graphics.scm
index bc9972eb0a..f7a89021cd 100644
--- a/gnu/packages/java-graphics.scm
+++ b/gnu/packages/java-graphics.scm
@@ -96,7 +96,7 @@ features not found in the core libraries.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bourgesl/marlin-renderer.git")
+                    (url "https://github.com/bourgesl/marlin-renderer")
                     (commit (string-append "v" (string-map (match-lambda
                                                              (#\. #\_)
                                                              (c c))
diff --git a/gnu/packages/java-maths.scm b/gnu/packages/java-maths.scm
index 748ae67b58..97343e0a16 100644
--- a/gnu/packages/java-maths.scm
+++ b/gnu/packages/java-maths.scm
@@ -37,7 +37,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mikiobraun/jblas.git")
+                    (url "https://github.com/mikiobraun/jblas")
                     (commit (string-append "jblas-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index d5bc713c70..8df45e0904 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017, 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
-;;; Copyright © 2017, 2018, 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2017-2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -54,7 +54,6 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
-  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages ghostscript) ;lcms
   #:use-module (gnu packages gnome)
@@ -67,6 +66,8 @@
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux) ;alsa
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages maven)
+  #:use-module (gnu packages maven-parent-pom)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages web)
@@ -165,6 +166,64 @@ defined in The Java Language Specification into the bytecoded instruction set
 and binary format defined in The Java Virtual Machine Specification.")
     (license license:ibmpl1.0)))
 
+(define-public drip
+  ;; Last release is from 2014, with a few important commits afterwards.
+  (let ((commit "a4bd00df0199e78243847f06cc04ecaea31f8f08"))
+    (package
+      (name "drip")
+      (version (git-version "0.2.4" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/ninjudd/drip")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0wzmjwfyldr3jn49517xd8yn7dgdk8h88qkga3kjyg1zc375ylg2"))))
+      (build-system gnu-build-system)
+      (native-inputs
+       `(("jdk" ,icedtea "jdk")))
+      (arguments
+       `(#:tests? #f                    ; No tests.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-before 'install 'fix-wrapper
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((jps (string-append (assoc-ref inputs "jdk") "/bin/jps")))
+                 (substitute* "bin/drip"
+                   (("jps") jps)
+                   (("brew update && brew upgrade drip") "guix pull && guix install drip")
+                   ;; No need to make:
+                   (("\\(cd -- \"\\$drip_dir\" && make -s\\) \\|\\| exit 1") "")
+                   ;; No need to include source:
+                   (("\\[\\[ -r \\$drip_dir/src/org/flatland/drip/Main\\.java \\]\\]")
+                    "true"))
+                 #t)))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (share (string-append out "/share/drip")))
+                 (mkdir-p bin)
+                 (for-each
+                  (lambda (file)
+                    (install-file (string-append "bin/" file) bin))
+                  '("drip" "drip_daemon" "drip_proxy"))
+                 (install-file "drip.jar" share)
+                 (substitute* (string-append bin "/drip")
+                   (("drip_dir=\\$bin_dir/..")
+                    (string-append "drip_dir=" share)))
+                 #t))))))
+      (home-page "https://github.com/ninjudd/drip")
+      (synopsis "Faster Java Virtual Machine launching")
+      (description "Drip is a launcher for the Java Virtual Machine that
+provides much faster startup times than the @command{java} command.  The @command{drip}
+script is intended to be a drop-in replacement for the @command{java} command,
+only faster.")
+      (license license:epl1.0))))
+
 ;; This is the last version of GNU Classpath that can be built without ECJ.
 (define classpath-bootstrap
   (package
@@ -254,11 +313,6 @@ language.")
        ("libffi" ,libffi)
        ("zip" ,zip)
        ("zlib" ,zlib)))
-    ;; When built with a recent GCC and glibc the configure step of icedtea-6
-    ;; fails with an invalid instruction error.
-    (native-inputs
-     `(("gcc" ,gcc-5)
-       ("libc" ,glibc-2.28)))
     (home-page "http://jamvm.sourceforge.net/")
     (synopsis "Small Java Virtual Machine")
     (description "JamVM is a Java Virtual Machine conforming to the JVM
@@ -708,6 +762,8 @@ machine.")))
               (sha256
                (base32
                 "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn"))
+              (patches
+               (search-patches "jamvm-2.0.0-disable-branch-patching.patch"))
               (snippet
                '(begin
                   ;; Remove precompiled software.
@@ -2600,7 +2656,7 @@ OpenJFX distribution.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/javacc/javacc.git")
+                    (url "https://github.com/javacc/javacc")
                     (commit "release_41")))
               (file-name (string-append "javacc-" version "-checkout"))
               (sha256
@@ -2641,6 +2697,35 @@ as tree building (via a tool called JJTree included with JavaCC), actions,
 debugging, etc.")
     (license license:bsd-3)))
 
+;; javacc-3, as javacc-4 is not properly bootstrapped: is contains a javacc.jar
+;; in the bootstrap/ directory.
+(define-public javacc-3
+  (package
+    (inherit javacc-4)
+    (version "3.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/javacc/javacc.git")
+                    (commit "release_32")))
+              (file-name (string-append "javacc-" version "-checkout"))
+              (sha256
+               (base32
+                "1pyf1xyh8gk83nxqn2v2mdws32l68ydznha41cxa4l2kkbq1v1g3"))))
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-java-version
+           (lambda _
+             (for-each
+               (lambda (file)
+                 (substitute* file
+                   (("debug=") "source=\"1.4\" debug=")))
+               (find-files "." "build.xml"))
+             #t))
+         (replace 'install (install-jars "bin/lib")))))))
+
 (define-public javacc
   (package
     (inherit javacc-4)
@@ -2649,7 +2734,7 @@ debugging, etc.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/javacc/javacc.git")
+             (url "https://github.com/javacc/javacc")
              (commit version)))
        (file-name (git-file-name "javacc" version))
        (sha256
@@ -2848,9 +2933,11 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
                                  ,(package-version java-commons-lang) ".jar"))
                  (("\\$\\{lib\\}/commons-io/commons-io.jar")
                   (string-append (assoc-ref inputs "java-commons-io")
-                                 "/share/java/commons-io-"
+                                 "/lib/m2/commons-io/commons-io/"
+                                 ,(package-version java-commons-io)
+                                 "/commons-io-"
                                  ,(package-version java-commons-io)
-                                 "-SNAPSHOT.jar"))
+                                 ".jar"))
                  ;; Remove dependency on svn
                  (("<build-info.*") "")
                  (("\\$\\{revision.number\\}")
@@ -3141,18 +3228,19 @@ libraries from the SIS division at ETH Zurich like jHDF5.")
                                  ,(package-version java-commons-lang) ".jar"))
                  (("\\$\\{lib\\}/commons-io/commons-io.jar")
                   (string-append (assoc-ref inputs "java-commons-io")
-                                 "/share/java/commons-io-"
+                                 "/lib/m2/commons-io/commons-io/"
                                  ,(package-version java-commons-io)
-                                 "-SNAPSHOT.jar"))
+                                 "/commons-io-"
+                                 ,(package-version java-commons-io)
+                                 ".jar"))
                  (("\\$\\{lib\\}/testng/testng-jdk15.jar")
                   (string-append (assoc-ref inputs "java-testng")
                                  "/share/java/java-testng.jar"))
                  (("\\$\\{lib\\}/junit4/junit.jar")
-                  (string-append (assoc-ref inputs "java-junit")
-                                 "/share/java/junit.jar"))
+                  (car (find-files (assoc-ref inputs "java-junit") "jar$")))
                  (("\\$\\{lib\\}/jmock/hamcrest/hamcrest-core.jar")
-                  (string-append (assoc-ref inputs "java-hamcrest-core")
-                                 "/share/java/hamcrest-core.jar")))
+                  (car (find-files (assoc-ref inputs "java-hamcrest-core")
+                                   "jar$"))))
                ;; Remove dependency on ch.rinn.restrictions
                (with-directory-excursion "source/java/ch/systemsx/cisd/hdf5/"
                  (substitute* '("BitSetConversionUtils.java"
@@ -3275,7 +3363,7 @@ API and version 2.1 of the Java ServerPages API.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/javaee/servlet-spec.git")
+                      (url "https://github.com/javaee/servlet-spec")
                       (commit version)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3465,7 +3553,28 @@ documentation tools.")
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "qdox.jar"
-       #:tests? #f)); no tests
+       #:tests? #f; no tests
+       #:modules
+       ((guix build ant-build-system)
+        (guix build java-utils)
+        (guix build utils)
+        (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-pom
+           (lambda _
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `((project
+                       (modelVersion "4.0.0")
+                       (name "QDox")
+                       (groupId "com.thoughtworks.qdox")
+                       (artifactId "qdox")
+                       (version ,,version))))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "https://github.com/codehaus/qdox")
     (synopsis "Parse definitions from Java source files")
     (description "QDox is a high speed, small footprint parser for extracting
@@ -3474,6 +3583,23 @@ class/interface/method definitions from source files complete with JavaDoc
 documentation tools.")
     (license license:asl2.0)))
 
+(define-public java-qdox-2-M9
+  (package
+    (inherit java-qdox)
+    (version "2.0-M9"); required by plexus-java
+    (source (origin
+              (method url-fetch)
+              ;; 2.0-M4, -M5 at https://github.com/paul-hammant/qdox
+              ;; Older releases at https://github.com/codehaus/qdox/
+              ;; Note: The release at maven is pre-generated. The release at
+              ;; github requires jflex.
+              (uri (string-append "https://repo1.maven.org/maven2/"
+                                  "com/thoughtworks/qdox/qdox/" version
+                                  "/qdox-" version "-sources.jar"))
+              (sha256
+               (base32
+                "1s2jnmx2dkwnaha12lcj26aynywgwa8sslc47z82wx8xai13y4fg"))))))
+
 (define-public java-jarjar
   (package
     (name "java-jarjar")
@@ -3490,10 +3616,10 @@ documentation tools.")
               (snippet
                '(begin
                   ;; Delete bundled thirds-party jar archives.
-                  ;; TODO: unbundle maven-plugin-api.
-                  (delete-file "lib/asm-4.0.jar")
-                  (delete-file "lib/asm-commons-4.0.jar")
-                  (delete-file "lib/junit-4.8.1.jar")
+                  (delete-file-recursively "lib")
+                  (delete-file "src/test/enumtest.jar")
+                  ;; the CLASSPATH needs this directory, create an empty one
+                  (mkdir-p "lib")
                   #t))))
     (build-system ant-build-system)
     (arguments
@@ -3508,11 +3634,11 @@ documentation tools.")
                (("<path id=\"path.build\">")
                 (string-append "<path id=\"path.build\"><fileset dir=\""
                                (assoc-ref inputs "java-asm-bootstrap")
-                               "/share/java\" includes=\"**/*.jar\"/>"))
+                               "/lib/m2\" includes=\"**/*.jar\"/>"))
                (("<zipfileset src=\"lib/asm-4.0.jar\"/>") "")
                (("lib/asm-commons-4.0.jar")
-                (string-append (assoc-ref inputs "java-asm-bootstrap")
-                               "/share/java/asm-6.0.jar"))
+                (car (find-files (assoc-ref inputs "java-asm-bootstrap")
+                                 "asm-6.0.jar")))
                (("<include name=\"org/objectweb/asm/commons/Remap\\*\\.class\"/>")
                 (string-append "<include name=\"org/objectweb/asm/"
                                "commons/Remap*.class\"/>"
@@ -3522,6 +3648,13 @@ documentation tools.")
                                "<include name=\"org/objectweb/asm/"
                                "commons/SignatureRemapper.class\"/>")))
              #t))
+         (add-before 'build 'remove-maven-dependency
+           (lambda _
+             ;; We do not need to build jarjar as a maven plugin just yet, so
+             ;; remove this file.  Maven requires jarjar (but not that plugin),
+             ;; so removing it improves the bootstrap.
+             (delete-file "src/main/com/tonicsystems/jarjar/JarJarMojo.java")
+             #t))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((target (string-append (assoc-ref outputs "out")
@@ -3564,6 +3697,7 @@ an Ant task that extends the built-in @code{jar} task.")
     (arguments
      `(#:tests? #f ; Tests require junit
        #:modules ((guix build ant-build-system)
+                  (guix build java-utils)
                   (guix build utils)
                   (srfi srfi-1))
        #:make-flags (list (string-append "-Dversion=" ,version))
@@ -3617,28 +3751,18 @@ private Method[] allMethods = getSortedMethods();")))
            (lambda _
              (mkdir-p "lib/integration")
              #t))
+         (add-before 'build 'create-pom
+           (lambda _
+             (substitute* "pom/hamcrest-core.pom"
+               (("@VERSION@") ,version))
+             #t))
          (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((target (string-append (assoc-ref outputs "out")
-                                           "/share/java/"))
-                    (version-suffix ,(string-append "-" version ".jar"))
-                    (install-without-version-suffix
-                     (lambda (jar)
-                       (copy-file jar
-                                  (string-append target
-                                                 (basename jar version-suffix)
-                                                 ".jar")))))
-               (mkdir-p target)
-               (for-each
-                install-without-version-suffix
-                (find-files "build"
-                            (lambda (name _)
-                              (and (string-suffix? ".jar" name)
-                                   (not (string-suffix? "-sources.jar" name)))))))
-             #t)))))
+           (install-from-pom "pom/hamcrest-core.pom")))))
     (native-inputs
      `(("java-qdox-1.12" ,java-qdox-1.12)
        ("java-jarjar" ,java-jarjar)))
+    (propagated-inputs
+     `(("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom)))
     (home-page "http://hamcrest.org/")
     (synopsis "Library of matchers for building test expressions")
     (description
@@ -3648,6 +3772,52 @@ declaratively, to be used in other frameworks.  Typical scenarios include
 testing frameworks, mocking libraries and UI validation rules.")
     (license license:bsd-2)))
 
+(define java-hamcrest-parent-pom
+  (package
+    (inherit java-hamcrest-core)
+    (name "java-hamcrest-parent-pom")
+    (propagated-inputs '())
+    (native-inputs '())
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda _
+             (substitute* "pom/hamcrest-parent.pom"
+               (("@VERSION@") ,(package-version java-hamcrest-core)))
+             #t))
+         (replace 'install
+           (install-pom-file "pom/hamcrest-parent.pom")))))))
+
+(define-public java-hamcrest-library
+  (package
+    (inherit java-hamcrest-core)
+    (name "java-hamcrest-library")
+    (arguments
+     (substitute-keyword-arguments (package-arguments java-hamcrest-core)
+      ((#:build-target _) "library")
+      ((#:phases phases)
+       `(modify-phases ,phases
+          (add-after 'unpack 'patch-classpath-for-integration
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "build.xml"
+                (("build/hamcrest-core-\\$\\{version\\}\\.jar")
+                 (car (find-files (assoc-ref inputs "java-hamcrest-core")
+                                  "jar$"))))
+              #t))
+          (replace 'create-pom
+            (lambda _
+             (substitute* "pom/hamcrest-library.pom"
+               (("@VERSION@") ,(package-version java-hamcrest-core)))
+              #t))
+          (replace 'install
+            (install-from-pom "pom/hamcrest-library.pom"))))))
+    (propagated-inputs
+     `(("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom)))))
+
 (define-public java-junit
   (package
     (name "java-junit")
@@ -3669,10 +3839,23 @@ testing frameworks, mocking libraries and UI validation rules.")
                   #t))))
     (build-system ant-build-system)
     (arguments
-     `(#:tests? #f ; no tests
-       #:jar-name "junit.jar"))
-    (inputs
+     `(#:jar-name "junit.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:test-exclude (list "**/SimpleTest.java" "**/StackTracesTest.java"
+                            "**/RuleChainTest.java" "**/TestWatchmanTest.java")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'copy-test-resources
+           (lambda _
+             (copy-recursively "src/test/resources" "build/test-classes")
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
      `(("java-hamcrest-core" ,java-hamcrest-core)))
+    (native-inputs
+     `(("java-hamcrest-library" ,java-hamcrest-library)))
     (home-page "https://junit.org/junit4/")
     (synopsis "Test framework for Java")
     (description
@@ -3681,10 +3864,42 @@ JUnit provides assertions for testing expected results, test fixtures for
 sharing common test data, and test runners for running tests.")
     (license license:epl1.0)))
 
+(define-public java-junitparams
+  (package
+    (name "java-junitparams")
+    (version "1.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/Pragmatists/JUnitParams")
+                     (commit (string-append "JUnitParams-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rb52xdfp99invyjrras3w0bf0a81cz30yd47rkkiyqcqj0y1q9b"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "junitparams.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:test-exclude (list "**/SuperclassTest.java")))
+    (inputs
+     `(("java-junit" ,java-junit)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-assertj" ,java-assertj)))
+    (home-page "https://github.com/Pragmatists/JUnitParams")
+    (synopsis "Parameterised test support for JUnit")
+    (description "The JUnitParams project adds a new runner to JUnit and
+provides much easier and readable parametrised tests for JUnit.")
+    (license license:asl2.0)))
+
 (define-public java-plexus-utils
   (package
     (name "java-plexus-utils")
-    (version "3.2.0")
+    ;; sisu-build-api needs this version, later versions don't work
+    (version "3.2.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3693,7 +3908,7 @@ sharing common test data, and test runners for running tests.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1mlx7xrq7lgqjqcpg7y4hi1ghavf28vvk3har82037dqx61n0f15"))))
+                "1w169glixyk94jbczj8jzg897lsab46jihiaa3dhw0p06g35va8b"))))
     (build-system ant-build-system)
     ;; FIXME: The default build.xml does not include a target to install
     ;; javadoc files.
@@ -3723,11 +3938,21 @@ cli/shell/BourneShell.java"
 
                ;; FIXME: The command line tests fail, maybe because they use
                ;; absolute paths.
-               (delete-file "cli/CommandlineTest.java"))
-             #t)))))
+               (delete-file "cli/CommandlineTest.java")
+
+               ;; These tests require openjdk jmh, which is not packaged yet
+               (for-each delete-file (find-files "." "PerfTest.java$")))
+             #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources" "build/classes")
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
     (native-inputs
      `(("java-hamcrest-core" ,java-hamcrest-core)
        ("java-junit" ,java-junit)))
+    (propagated-inputs
+     `(("plexus-parent-pom" ,plexus-parent-pom-5.1)))
     (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
@@ -3735,10 +3960,24 @@ Plexus framework to ease working with strings, files, command lines, XML and
 more.")
     (license license:asl2.0)))
 
+(define-public java-plexus-utils-3.3.0
+  (package
+    (inherit java-plexus-utils)
+    (version "3.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/codehaus-plexus/plexus-utils")
+                     (commit (string-append "plexus-utils-" version))))
+              (file-name (git-file-name "java-plexus-utils" version))
+              (sha256
+               (base32
+                "0d0fq21rzjy0j55kcp8w9k1rbq9rwr0r7cc8239p9jbz54vihp0g"))))))
+
 (define-public java-plexus-interpolation
   (package
     (name "java-plexus-interpolation")
-    (version "1.23")
+    (version "1.26")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3747,11 +3986,16 @@ more.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "005hxxg1adv71a96lz4vp65bk3v1pi76j4c45z29xzizclib16vl"))))
+                "1rahjmhywf6d5m32qzlc9izawyvcd71abfm9k03f13rs2xmfxzlh"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "plexus-interpolation.jar"
-       #:source-dir "src/main"))
+       #:source-dir "src/main"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1)))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
@@ -3769,7 +4013,7 @@ these two libraries to vary independently of one another.")
 (define-public java-plexus-classworlds
   (package
     (name "java-plexus-classworlds")
-    (version "2.5.2")
+    (version "2.6.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3778,12 +4022,17 @@ these two libraries to vary independently of one another.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1iv8x55fbni2hg4l7pdpbwfq75xmvq1f25g6nxma8rcdpihsh13r"))))
+                "034k2hgvj1saalwbnzrbg4n0zgzwcpz1lhlb8q4kgglsp9pmm03s"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "plexus-classworlds.jar"
        #:source-dir "src/main"
-       #:tests? #f));; FIXME: we need to generate some resources as in pom.xml
+       #:tests? #f;; FIXME: we need to generate some resources as in pom.xml
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1)))
     (native-inputs
      `(("java-junit" ,java-junit)))
     (home-page "https://codehaus-plexus.github.io/plexus-classworlds/")
@@ -3811,22 +4060,31 @@ components.")
      `(#:jar-name "container-default.jar"
        #:source-dir "plexus-container-default/src/main/java"
        #:test-dir "plexus-container-default/src/test"
-       #:jdk ,icedtea-8
        #:tests? #f; requires plexus-archiver, which depends on this package
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'fix-google-collections
+           (lambda _
+             ;; Google collections are now replaced with guava
+             (substitute* "plexus-container-default/pom.xml"
+               (("google-collections") "guava")
+               (("com.google.collections") "com.google.guava"))
+             #t))
          (add-before 'build 'copy-resources
            (lambda _
              (copy-recursively
                "plexus-container-default/src/main/resources/"
                "build/classes")
-             #t)))))
-    (inputs
-     `(("worldclass" ,java-plexus-classworlds)
-       ("xbean" ,java-geronimo-xbean-reflect)
-       ("utils" ,java-plexus-utils)
-       ("junit" ,java-junit)
-       ("guava" ,java-guava)))
+             #t))
+         (replace 'install
+           (install-from-pom "plexus-container-default/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-worldclass" ,java-plexus-classworlds)
+       ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-junit" ,java-junit)
+       ("java-guava" ,java-guava)
+       ("java-plexus-containers-parent-pom" ,java-plexus-containers-parent-pom)))
     (home-page "https://github.com/codehaus-plexus/plexus-containers")
     (synopsis "Inversion-of-control container")
     (description "Plexus-default-container is Plexus' inversion-of-control
@@ -3834,10 +4092,25 @@ components.")
 implementation.")
     (license license:asl2.0)))
 
+(define java-plexus-containers-parent-pom
+  (package
+    (inherit java-plexus-container-default-bootstrap)
+    (name "java-plexus-containers-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("plexus-parent-pom" ,plexus-parent-pom-4.0)))))
+
 (define-public java-plexus-io
   (package
     (name "java-plexus-io")
-    (version "3.0.0")
+    (version "3.2.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -3846,25 +4119,28 @@ implementation.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1h4q9l2j9sfbscvxpnyy2hazi0r83h3am86y4r959wrl1b24xxwd"))))
+                "1r3wqfpbxq8vp4p914i8p88r0994rmcjw02hz14n11cfb6gsyvlr"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "plexus-io.jar"
        #:source-dir "src/main/java"
        #:test-dir "src/test"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'copy-resources
            (lambda _
-             (mkdir-p "build/classes/META-INF/plexus")
-             (copy-file "src/main/resources/META-INF/plexus/components.xml"
-                        "build/classes/META-INF/plexus/components.xml")
-             #t)))))
+             (mkdir-p "build/classes")
+             (copy-recursively "src/main/resources" "build/classes")
+             (mkdir-p "build/test-classes")
+             (copy-recursively "src/test/resources" "build/test-classes")
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils-3.3.0)
+       ("java-commons-io" ,java-commons-io)
+       ("plexus-parent-pom" ,plexus-parent-pom-5.1)))
     (inputs
-     `(("utils" ,java-plexus-utils)
-       ("commons-io" ,java-commons-io)
-       ("java-jsr305" ,java-jsr305)))
+     `(("java-jsr305" ,java-jsr305)))
     (native-inputs
      `(("junit" ,java-junit)
        ("hamcrest" ,java-hamcrest-core)
@@ -3882,19 +4158,18 @@ reusing it in maven.")
 (define-public java-plexus-archiver
   (package
     (name "java-plexus-archiver")
-    (version "4.1.0")
+    (version "4.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/codehaus-plexus/plexus-archiver"
                                   "/archive/plexus-archiver-" version ".tar.gz"))
               (sha256
                (base32
-                "0ry6i92gli0mvdmfih2vgs0lkf9yvx18h2ajxim66yg6yipnp0hg"))))
+                "144n971r3lfrx3l12nf2scm80x4xdvgbkk4bjpa4vcvvdrll6qys"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "plexus-archiver.jar"
        #:source-dir "src/main/java"
-       #:jdk ,icedtea-8
        #:test-dir "src/test"
        #:test-exclude (list "**/Abstract*.java" "**/Base*.java")
        #:phases
@@ -3912,19 +4187,22 @@ reusing it in maven.")
              #t))
          (add-before 'build 'copy-resources
            (lambda _
-             (mkdir-p "build/classes/META-INF/plexus")
-             (copy-file "src/main/resources/META-INF/plexus/components.xml"
-                        "build/classes/META-INF/plexus/components.xml")
-             #t)))))
+             (mkdir-p "build/classes")
+             (copy-recursively "src/main/resources" "build/classes")
+             (mkdir-p "build/test-classes")
+             (copy-recursively "src/test/resources" "build/test-classes")
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils-3.3.0)
+       ("java-plexus-io" ,java-plexus-io)
+       ("java-iq80-snappy" ,java-iq80-snappy)
+       ("java-commons-compress" ,java-commons-compress)
+       ("plexus-parent-pom" ,plexus-parent-pom-6.1)))
     (inputs
-     `(("utils" ,java-plexus-utils)
-       ("commons-io" ,java-commons-io)
-       ("snappy" ,java-iq80-snappy)
-       ("io" ,java-plexus-io)
-       ("compress" ,java-commons-compress)
-       ("container-default" ,java-plexus-container-default-bootstrap)
-       ("snappy" ,java-snappy)
-       ("java-jsr305" ,java-jsr305)))
+     `(("java-jsr305" ,java-jsr305)
+       ("java-plexus-container-default"
+        ,java-plexus-container-default-bootstrap)))
     (native-inputs
      `(("java-hamcrest-core" ,java-hamcrest-core)
        ("junit" ,java-junit)
@@ -3953,9 +4231,15 @@ archives (jar).")
                             ;; Failures
                             "**/ComponentRealmCompositionTest.java"
                             "**/PlexusContainerTest.java")
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'fix-google-collections
+           (lambda _
+             ;; Google collections are now replaced with guava
+             (substitute* "plexus-container-default/pom.xml"
+               (("google-collections") "guava")
+               (("com.google.collections") "com.google.guava"))
+             #t))
          (add-before 'build 'copy-resources
            (lambda _
              (copy-recursively
@@ -3970,7 +4254,9 @@ archives (jar).")
                    dir "/plexus/component/composition/"
                    "ComponentRealmCompositionTest.java")
                  (("src/test") "plexus-container-default/src/test"))
-               #t))))))
+               #t)))
+         (replace 'install
+           (install-from-pom "plexus-container-default/pom.xml")))))
     (inputs
      `(("worldclass" ,java-plexus-classworlds)
        ("xbean" ,java-geronimo-xbean-reflect)
@@ -3988,13 +4274,64 @@ archives (jar).")
     (arguments
      `(#:jar-name "plexus-component-annotations.jar"
        #:source-dir "plexus-component-annotations/src/main/java"
-       #:tests? #f)); no tests
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "plexus-component-annotations/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-containers-parent-pom" ,java-plexus-containers-parent-pom)))
     (inputs '())
     (native-inputs '())
     (synopsis "Plexus descriptors generator")
     (description "This package is a Maven plugin to generate Plexus descriptors
 from source tags and class annotations.")))
 
+(define-public java-plexus-component-metadata
+  (package
+    (inherit java-plexus-container-default)
+    (name "java-plexus-component-metadata")
+    (arguments
+     `(#:jar-name "plexus-component-metadata.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:jdk ,icedtea-8
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "plexus-component-metadata")
+             #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources"
+                               "build/classes/")
+             #t)))))
+    (propagated-inputs
+     `(("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-plexu-component-annotations" ,java-plexus-component-annotations)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-cli" ,java-plexus-cli)
+       ("java-plexus-classworlds" ,java-plexus-classworlds)
+       ("maven-plugin-api" ,maven-plugin-api)
+       ("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("maven-core-bootstrap" ,maven-core-bootstrap)
+       ("maven-model" ,maven-model)
+       ("java-commons-cli" ,java-commons-cli)
+       ("java-qdox" ,java-qdox)
+       ("java-jdom2" ,java-jdom2)
+       ("java-asm" ,java-asm)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-guava" ,java-guava)
+       ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
+    (synopsis "Inversion-of-control container for Maven")
+    (description "The Plexus project provides a full software stack for creating
+and executing software projects.  Based on the Plexus container, the
+applications can utilise component-oriented programming to build modular,
+reusable components that can easily be assembled and reused.  This package
+provides the Maven plugin generating the component metadata.")))
+
 (define-public java-plexus-cipher
   (package
     (name "java-plexus-cipher")
@@ -4012,7 +4349,6 @@ from source tags and class annotations.")))
     (arguments
      `(#:jar-name "plexus-cipher.jar"
        #:source-dir "src/main/java"
-       #:jdk ,icedtea-8
        #:tests? #f; FIXME: requires sisu-inject-bean
        #:phases
        (modify-phases %standard-phases
@@ -4023,16 +4359,83 @@ from source tags and class annotations.")))
              (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
                (lambda _
                  (display "org.sonatype.plexus.components.cipher.DefaultPlexusCipher\n")))
-             #t)))))
+             #t))
+         (add-before 'install 'fix-test-dependency
+           (lambda _
+             ;; sisu-inject-bean is only used for tests, but its scope is "provided".
+             (substitute* "pom.xml"
+               (("provided") "test"))
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
     (inputs
      `(("java-cdi-api" ,java-cdi-api)
        ("java-javax-inject" ,java-javax-inject)))
+    (propagated-inputs
+     `(("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-15)))
+    (native-inputs
+     `(("java-junit" ,java-junit)))
     (home-page "https://github.com/sonatype/plexus-cipher")
     (synopsis "Encryption/decryption Component")
     (description "Plexus-cipher contains a component to deal with encryption
 and decryption.")
     (license license:asl2.0)))
 
+(define-public java-plexus-java
+  (package
+    (name "java-plexus-java")
+    (version "0.9.10")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/codehaus-plexus/plexus-languages")
+                     (commit (string-append "plexus-languages-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0vmvgq5hfxs90yyxgssfpwq78l7vwx1ljwpkk594mrdr8sm668b5"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (for-each delete-file (find-files "." ".*.jar$"))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "plexus-java.java"
+       #:source-dir "plexus-java/src/main/java"
+       #:test-dir "plexus-java/src/test"
+       #:tests? #f; require mockito 2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "plexus-java/src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             (invoke "ant" "jar")
+             #t))
+         (add-before 'install 'install-parent
+           (install-pom-file "pom.xml"))
+         (replace 'install
+           (install-from-pom "plexus-java/pom.xml")))))
+    (propagated-inputs
+     `(("java-asm" ,java-asm)
+       ("java-qdox" ,java-qdox-2-M9)
+       ("java-javax-inject" ,java-javax-inject)
+       ("plexus-parent-pom" ,plexus-parent-pom-4.0)))
+    (inputs
+     `(("java-plexus-component-annotations" ,java-plexus-component-annotations)))
+    (native-inputs
+     `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
+       ("java-junit" ,java-junit)))
+    (home-page "https://codehaus-plexus.github.io/plexus-languages/plexus-java")
+    (synopsis "Shared language features for Java")
+    (description "This package contains shared language features of the Java
+language, for the plexus project.")
+    (license license:asl2.0)))
+
 (define-public java-plexus-compiler-api
   (package
     (name "java-plexus-compiler-api")
@@ -4050,10 +4453,14 @@ and decryption.")
     (arguments
      `(#:jar-name "plexus-compiler-api.jar"
        #:source-dir "plexus-compiler-api/src/main/java"
-       #:jdk ,icedtea-8
-       #:test-dir "plexus-compiler-api/src/test"))
-    (inputs
+       #:test-dir "plexus-compiler-api/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "plexus-compiler-api/pom.xml")))))
+    (propagated-inputs
      `(("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-plexus-compiler-pom" ,java-plexus-compiler-pom)
        ("java-plexus-util" ,java-plexus-utils)))
     (native-inputs
      `(("java-junit" ,java-junit)))
@@ -4064,6 +4471,91 @@ compilers.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define java-plexus-compiler-pom
+  (package
+    (inherit java-plexus-compiler-api)
+    (name "java-plexus-compiler-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml"))
+         (add-after 'install 'install-compilers
+           (install-pom-file "plexus-compilers/pom.xml")))))
+    (propagated-inputs
+     `(("plexus-components-parent-pom-4.0" ,plexus-components-parent-pom-4.0)))))
+
+(define plexus-components-parent-pom-4.0
+  (package
+    (name "plexus-components-parent-pom")
+    (version "4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/codehaus-plexus/plexus-components")
+                     (commit (string-append "plexus-components-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "041bm8yv0m2i17mqg8zljib4ykpha7ijls2qfdwvkma4d39lhysi"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+      `(("plexus-parent-pom-4.0" ,plexus-parent-pom-4.0)))
+    (home-page "https://codehaus-plexus.github.io/plexus-components")
+    (synopsis "Plexus parent pom")
+    (description "This package contains the Plexus components parent POM.")
+    (license license:asl2.0)))
+
+(define-public java-plexus-compiler-manager
+  (package
+    (inherit java-plexus-compiler-api)
+    (name "java-plexus-compiler-manager")
+    (arguments
+     `(#:jar-name "compiler-compiler-manager.java"
+       #:source-dir "plexus-compiler-manager/src/main/java"
+       #:test-dir "plexus-compiler-manager/src/test"
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "plexus-compiler-manager/src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             (invoke "ant" "jar")
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (replace 'install
+           (install-from-pom "plexus-compiler-manager/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-compiler-api" ,java-plexus-compiler-api)
+       ("java-plexus-compiler-pom" ,java-plexus-compiler-pom)
+       ("java-plexus-container-default" ,java-plexus-container-default)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-plexus-component-metadata" ,java-plexus-component-metadata)))
+    (synopsis "Compiler management for Plexus Compiler component")
+    (description "Plexus Compiler is a Plexus component to use different
+compilers through a uniform API.  This component chooses the compiler
+implementation to use in a project.")))
+
 (define-public java-plexus-compiler-javac
   (package
     (inherit java-plexus-compiler-api)
@@ -4073,17 +4565,105 @@ compilers.")
        #:source-dir "plexus-compilers/plexus-compiler-javac/src/main/java"
        #:jdk ,icedtea-8
        #:tests? #f; depends on compiler-test -> maven-core -> ... -> this package.
-       #:test-dir "plexus-compilers/plexus-compiler-javac/src/test"))
-    (inputs
+       #:test-dir "plexus-compilers/plexus-compiler-javac/src/test"
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         ;; We cannot use java-plexus-component-metadata to generate the metadata
+         ;; because it ultimately depends on this package.
+         ;; Create it manually instead
+         (add-before 'build 'create-metadata
+           (lambda _
+             (let* ((dir "build/classes/META-INF/plexus")
+                    (file (string-append dir "/components.xml")))
+               (mkdir-p dir)
+               (with-output-to-file file
+                 (lambda _
+                   (sxml->xml
+                     `(component-set
+                        (components
+                          (component
+                            (role "org.codehaus.plexus.compiler.Compiler")
+                            (role-hint "javac")
+                            (implementation "org.codehaus.plexus.compiler.javac.JavacCompiler")
+                            (isolated-realm "false"))))))))
+             #t))
+         (replace 'install
+           (install-from-pom "plexus-compilers/plexus-compiler-javac/pom.xml")))))
+    (propagated-inputs
      `(("java-plexus-compiler-api" ,java-plexus-compiler-api)
        ("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-container-default" ,java-plexus-container-default)))
-    (native-inputs
-     `(("java-junit" ,java-junit)))
     (synopsis "Javac Compiler support for Plexus Compiler component")
     (description "This package contains the Javac Compiler support for Plexus
 Compiler component.")))
 
+(define plexus-components-pom-1.1.20
+  (package
+    (name "plexus-components-pom-1.1.20")
+    (version "1.1.20")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/codehaus-plexus/plexus-components")
+                     (commit (string-append "plexus-components-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1q254k95m9icyfsvaw8c226midg8v6v436wvivhv7im825mnp5yb"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("plexus-parent-pom" ,plexus-parent-pom-3.1)))
+    (home-page "https://github.com/codehaus-plexus/plexus-components")
+    (synopsis "Maven parent pom for plexus packages")
+    (description "This package contains the parent pom for plexus component
+packages.")
+    (license license:asl2.0)))
+
+(define-public java-plexus-digest
+  (package
+    (name "java-plexus-digest")
+    (version "1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/codehaus-plexus/plexus-digest")
+                     (commit "2a52ad1bda8297fa0e287163d2fa37245ec6a430")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "19w5wxsliz8r42niry68qa665kvjsb8081dazg9vgd3pca72w07x"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "plexus-digest.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("plexus-components-pom-1.1.20" ,plexus-components-pom-1.1.20)))
+    (native-inputs
+     `(("java-junit" ,java-junit)))
+    (home-page "https://github.com/codehaus-plexus/plexus-digest")
+    (synopsis "Hash function utilities for Java")
+    (description "This package is a plexus component that contains hash
+function utilities.")
+    (license license:asl2.0)))
+
 (define-public java-plexus-sec-dispatcher
   (package
     (name "java-plexus-sec-dispatcher")
@@ -4102,7 +4682,6 @@ Compiler component.")))
     (arguments
      `(#:jar-name "plexus-sec-dispatcher.jar"
        #:source-dir "src/main/java"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'generate-models
@@ -4150,9 +4729,12 @@ Compiler component.")))
          (add-before 'check 'fix-paths
            (lambda _
              (copy-recursively "src/test/resources" "target")
-             #t)))))
-    (inputs
-     `(("java-plexus-cipher" ,java-plexus-cipher)))
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-cipher" ,java-plexus-cipher)
+       ("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-12)))
     (native-inputs
      `(("java-modello-core" ,java-modello-core)
        ;; for modello:
@@ -4254,7 +4836,9 @@ which behaves as if all files were just created.</description>\n
     </component>\n
   </components>\n
 </component-set>\n")))
-             #t)))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (inputs
      `(("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-container-default" ,java-plexus-container-default)))
@@ -4300,7 +4884,7 @@ project and determining what files need to be rebuilt.")
                               "modello/core/io/ModelReaderTest.java")
                  (("src/test") "modello-core/src/test")))
              #t)))))
-    (inputs
+    (propagated-inputs
      `(("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-container-default" ,java-plexus-container-default)
        ("java-sisu-build-api" ,java-sisu-build-api)))
@@ -4349,8 +4933,7 @@ XSD and documentation.")
                                "build/classes")
              #t)))))
     (inputs
-     `(("java-modello-core" ,java-modello-core)
-       ,@(package-inputs java-modello-core)))
+     `(("java-modello-core" ,java-modello-core)))
     (synopsis "Modello Java Plugin")
     (description "Modello Java Plugin generates Java objects for the model.")))
 
@@ -4379,10 +4962,9 @@ XSD and documentation.")
                  "java/org/codehaus/modello/plugins/xml/XmlModelloPluginTest.java"
                  (("src/test") "modello-plugins/modello-plugin-xml/src/test")))
              #t)))))
-    (inputs
+    (propagated-inputs
      `(("java-modello-core" ,java-modello-core)
-       ("java-modello-plugins-java" ,java-modello-plugins-java)
-       ,@(package-inputs java-modello-core)))
+       ("java-modello-plugins-java" ,java-modello-plugins-java)))
     (synopsis "Modello XML Plugin")
     (description "Modello XML Plugin contains shared code for every plugins
 working on XML representation of the model.")))
@@ -4425,11 +5007,10 @@ every feature for every plugin.")))
              (copy-recursively "modello-plugins/modello-plugin-xpp3/src/main/resources"
                                "build/classes")
              #t)))))
-    (inputs
+    (propagated-inputs
      `(("java-modello-core" ,java-modello-core)
        ("java-modello-plugins-java" ,java-modello-plugins-java)
-       ("java-modello-plugins-xml" ,java-modello-plugins-xml)
-       ,@(package-inputs java-modello-core)))
+       ("java-modello-plugins-xml" ,java-modello-plugins-xml)))
     (native-inputs
      `(("java-xmlunit" ,java-xmlunit)
        ("java-modello-test" ,java-modello-test)
@@ -4450,9 +5031,6 @@ on the XPP3 API (XML Pull Parser).")))
                (base32
                 "115l5pqblirdkmzi32dxx7gbcm4jy0s14y5wircr6h8jdr9aix00"))))
     (build-system ant-build-system)
-    (propagated-inputs
-     `(("java-aqute-bndlib" ,java-aqute-bndlib)
-       ("java-aqute-libg" ,java-aqute-libg)))
     (arguments
      `(#:build-target "compile"
        ;; The tests require an old version of Janino, which no longer compiles
@@ -4469,6 +5047,12 @@ on the XPP3 API (XML Pull Parser).")))
         "-Dbiz.aQute.bnd.path=dummy-path")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'remove-bnd-dependency
+           (lambda _
+             ;; This file is the only one to require bnd, and is not needed
+             ;; because we don't build a bundle.
+             (delete-file "src/org/objectweb/asm/tools/ModuleInfoBndPlugin.java")
+             #t))
          (add-before 'install 'build-jars
            (lambda* (#:key make-flags #:allow-other-keys)
              ;; We cannot use the "jar" target because it depends on a couple
@@ -4477,10 +5061,19 @@ on the XPP3 API (XML Pull Parser).")))
              (invoke "jar"
                      "-cf" (string-append "dist/asm-" ,version ".jar")
                      "-C" "output/build/tmp" ".")))
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* (find-files "archive" "\\.pom$")
+               (("@product.artifact@") ,version))
+             #t))
+         (add-before 'install 'install-parent
+           (install-pom-file "archive/asm-parent.pom"))
          (replace 'install
-           (install-jars "dist")))))
+           (install-from-pom "archive/asm.pom")))))
     (native-inputs
      `(("java-junit" ,java-junit)))
+    (propagated-inputs
+     `(("java-org-ow2-parent-pom" ,java-org-ow2-parent-pom-1.3)))
     (home-page "https://asm.ow2.io/")
     (synopsis "Very small and fast Java bytecode manipulation framework")
     (description "ASM is an all purpose Java bytecode manipulation and
@@ -4490,6 +5083,32 @@ transformations and analysis algorithms allow easily assembling custom
 complex transformations and code analysis tools.")
     (license license:bsd-3)))
 
+(define java-org-ow2-parent-pom-1.3
+  (package
+    (name "java-org-ow2-parent-pom")
+    (version "1.3")
+    (source (origin
+              (method url-fetch)
+              (uri "https://repo1.maven.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom")
+              (sha256
+               (base32
+                "1yr8hfx8gffpppa4ii6cvrsq029a6x8hzy7nsavxhs60s9kmq8ai"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'unpack)
+         (delete 'build)
+         (delete 'configure)
+         (replace 'install
+           (install-pom-file (assoc-ref %build-inputs "source"))))))
+    (home-page "https://ow2.org")
+    (synopsis "Ow2.org parent pom")
+    (description "This package contains the parent pom for projects from ow2.org,
+including java-asm.")
+    (license license:lgpl2.1+)))
+
 (define java-asm-bootstrap
   (package
     (inherit java-asm)
@@ -4497,13 +5116,7 @@ complex transformations and code analysis tools.")
     (arguments
      (substitute-keyword-arguments (package-arguments java-asm)
        ((#:tests? _) #f)))
-    (native-inputs `())
-    (propagated-inputs
-     `(("java-aqute-bndlib" ,java-aqute-bndlib-bootstrap)
-       ("java-aqute-libg" ,java-aqute-libg-bootstrap)
-       ,@(delete `("java-aqute-bndlib" ,java-aqute-bndlib)
-                 (delete `("java-aqute-libg" ,java-aqute-libg)
-                         (package-inputs java-asm)))))))
+    (native-inputs `())))
 
 (define-public java-cglib
   (package
@@ -4513,7 +5126,7 @@ complex transformations and code analysis tools.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cglib/cglib.git")
+             (url "https://github.com/cglib/cglib")
              (commit (string-append
                       "RELEASE_"
                       (string-map (lambda (c) (if (char=? c #\.) #\_ c))
@@ -4764,8 +5377,29 @@ The jMock library
                               (find-files (assoc-ref inputs "java-easymock") "\\.jar$")))
                        ";"))
                      (("build/hamcrest-core-\\$\\{version\\}\\.jar")
-                      (string-append (assoc-ref inputs "java-hamcrest-core")
-                                     "/share/java/hamcrest-core.jar")))
+                      (car (find-files (assoc-ref inputs "java-hamcrest-core")
+                                       "jar$"))))
+                   #t))
+               (replace 'install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((target (string-append (assoc-ref outputs "out")
+                                                 "/share/java/"))
+                          (version-suffix
+                            ,(string-append
+                               "-" (package-version java-hamcrest-core) ".jar"))
+                          (install-without-version-suffix
+                           (lambda (jar)
+                             (copy-file jar
+                                        (string-append target
+                                                       (basename jar version-suffix)
+                                                       ".jar")))))
+                     (mkdir-p target)
+                     (for-each
+                      install-without-version-suffix
+                      (find-files "build"
+                                  (lambda (name _)
+                                    (and (string-suffix? ".jar" name)
+                                         (not (string-suffix? "-sources.jar" name)))))))
                    #t)))))))
     (inputs
      `(("java-junit" ,java-junit)
@@ -4825,9 +5459,10 @@ overly clever.")
        #:make-flags
        (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
              (junit    (assoc-ref %build-inputs "java-junit")))
-         (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
-               (string-append "-Dhamcrest.jar=" hamcrest
-                              "/share/java/hamcrest-core.jar")))
+         (list (string-append "-Djunit.jar="
+                              (car (find-files junit "jar$")))
+               (string-append "-Dhamcrest.jar="
+                              (car (find-files hamcrest ".*.jar$")))))
        #:phases
        (modify-phases %standard-phases
          ;; We want to build the jar in the build phase and run the tests
@@ -4914,9 +5549,10 @@ targeting the JVM.")
        (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
              (junit    (assoc-ref %build-inputs "java-junit"))
              (easymock (assoc-ref %build-inputs "java-easymock")))
-         (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
-               (string-append "-Dhamcrest.jar=" hamcrest
-                              "/share/java/hamcrest-core.jar")
+         (list (string-append "-Djunit.jar="
+                              (car (find-files junit "jar$")))
+               (string-append "-Dhamcrest.jar="
+                              (car (find-files hamcrest "jar$")))
                (string-append "-Deasymock.jar=" easymock
                               "/share/java/easymock.jar")))
        #:phases
@@ -5051,16 +5687,18 @@ setter and getter method.")
      `(#:test-target "test"
        #:make-flags
        (list (string-append "-Djunit.jar="
-                            (assoc-ref %build-inputs "java-junit")
-                            "/share/java/junit.jar"))
+                            (car (find-files (assoc-ref %build-inputs "java-junit")
+                                             "jar$"))))
        #:phases
        (modify-phases %standard-phases
          (add-after 'build 'build-javadoc ant-build-javadoc)
-         (replace 'install (install-jars "target"))
+         (replace 'install (install-from-pom "pom.xml"))
          (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
+    (propagated-inputs
+     `(("apache-commons-parent-pom" ,apache-commons-parent-pom-39)))
     (home-page "https://commons.apache.org/io/")
     (synopsis "Common useful IO related classes")
     (description "Commons-IO contains utility classes, stream implementations,
@@ -5084,8 +5722,8 @@ file filters and endian classes.")
      `(#:test-target "test"
        #:make-flags
        (list (string-append "-Dmaven.junit.jar="
-                            (assoc-ref %build-inputs "java-junit")
-                            "/share/java/junit.jar"))
+                            (car (find-files (assoc-ref %build-inputs "java-junit")
+                                             "jar$"))))
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'delete-network-tests
@@ -5120,8 +5758,8 @@ file filters and endian classes.")
      `(#:test-target "test"
        #:make-flags
        (list (string-append "-Dmaven.junit.jar="
-                            (assoc-ref %build-inputs "java-junit")
-                            "/share/java/junit.jar")
+                            (car (find-files (assoc-ref %build-inputs "java-junit")
+                                             "jar$")))
              "-Dmaven.compiler.source=1.7"
              "-Dmaven.compiler.target=1.7")
        #:phases
@@ -5205,42 +5843,24 @@ included:
 (define-public java-commons-lang3
   (package
     (name "java-commons-lang3")
-    (version "3.4")
+    (version "3.9")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://apache/commons/lang/source/"
                            "commons-lang3-" version "-src.tar.gz"))
        (sha256
-        (base32 "0xpshb9spjhplq5a7mr0y1bgfw8190ik4xj8f569xidfcki1d6kg"))))
+        (base32 "0s4ffbvsyl16c90l45ximsg4dwd8hmz7wsza3p308fw43h6mwhb6"))))
     (build-system ant-build-system)
-    (outputs '("out" "doc"))
     (arguments
-     `(#:test-target "test"
-       #:make-flags
-       (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-all"))
-             (junit    (assoc-ref %build-inputs "java-junit"))
-             (easymock (assoc-ref %build-inputs "java-easymock"))
-             (io       (assoc-ref %build-inputs "java-commons-io")))
-         (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
-               (string-append "-Dhamcrest.jar=" hamcrest
-                              "/share/java/hamcrest-all.jar")
-               (string-append "-Dcommons-io.jar=" io
-                              "/share/java/commons-io-"
-                              ,(package-version java-commons-io)
-                              "-SNAPSHOT.jar")
-               (string-append "-Deasymock.jar=" easymock
-                              "/share/java/easymock.jar")))
+     `(#:jar-name "commons-lang3.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f; require junit5
        #:phases
        (modify-phases %standard-phases
-         (add-after 'build 'build-javadoc ant-build-javadoc)
-         (replace 'install (install-jars "target"))
-         (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
-    (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-commons-io" ,java-commons-io)
-       ("java-hamcrest-all" ,java-hamcrest-all)
-       ("java-easymock" ,java-easymock)))
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("apache-commons-parent-pom" ,apache-commons-parent-pom-48)))
     (home-page "https://commons.apache.org/lang/")
     (synopsis "Extension of the java.lang package")
     (description "The Commons Lang components contains a set of Java classes
@@ -5483,7 +6103,28 @@ bottlenecks move away from the database in an effectively cached system.")
     (arguments
      `(#:tests? #f ; no tests included
        #:jdk ,icedtea-8
-       #:jar-name "jsr250.jar"))
+       #:jar-name "jsr250.jar"
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build maven pom)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-pom
+           (lambda _
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `((project
+                       (modelVersion "4.0.0")
+                       (name "jsr250")
+                       (groupId "javax.annotation")
+                       (artifactId "jsr250-api")
+                       (version ,,version))))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "https://jcp.org/en/jsr/detail?id=250")
     (synopsis "Security-related annotations")
     (description "This package provides annotations for security.  It provides
@@ -5509,7 +6150,28 @@ namespaces.")
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f ; no tests included
-       #:jar-name "jsr305.jar"))
+       #:jar-name "jsr305.jar"
+       #:modules ((guix build ant-build-system)
+                  (guix build java-utils)
+                  (guix build maven pom)
+                  (guix build utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-pom
+           (lambda _
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `((project
+                       (modelVersion "4.0.0")
+                       (name "jsr305")
+                       (groupId "com.google.code.findbugs")
+                       (artifactId "jsr305")
+                       (version ,,version))))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "http://findbugs.sourceforge.net/")
     (synopsis "Annotations for the static analyzer called findbugs")
     (description "This package provides annotations for the findbugs package.
@@ -5522,22 +6184,24 @@ It provides packages in the @code{javax.annotations} namespace.")
     ;; This is the last release of Guava that can be built with Java 7.
     (version "20.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/google/guava/"
-                                  "releases/download/v" version
-                                  "/guava-" version "-sources.jar"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/google/guava/")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1gawrs5gi6j5hcfxdgpnfli75vb9pfi4sn09pnc8xacr669yajwr"))))
+                "00h5cawdjic1vind3yivzh1f58flvm1yfmhsyqwyvmbvj1vakysp"))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
        #:jar-name "guava.jar"
+       #:source-dir "guava/src"
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'trim-sources
            (lambda _
-             (with-directory-excursion "src/com/google/common"
+             (with-directory-excursion "guava/src/com/google/common"
                ;; Remove annotations to avoid extra dependencies:
                ;; * "j2objc" annotations are used when converting Java to
                ;;   Objective C;
@@ -5556,9 +6220,12 @@ It provides packages in the @code{javax.annotations} namespace.")
                  (("@ForOverride") "")
                  (("@J2ObjCIncompatible") "")
                  (("@IgnoreJRERequirement") "")))
-             #t)))))
+             #t))
+         (replace 'install (install-from-pom "guava/pom.xml")))))
     (inputs
      `(("java-jsr305" ,java-jsr305)))
+    (propagated-inputs
+     `(("java-guava-parent-pom" ,java-guava-parent-pom)))
     (home-page "https://github.com/google/guava")
     (synopsis "Google core libraries for Java")
     (description "Guava is a set of core libraries that includes new
@@ -5568,6 +6235,21 @@ concurrency, I/O, hashing, primitives, reflection, string processing, and much
 more!")
     (license license:asl2.0)))
 
+(define java-guava-parent-pom
+  (package
+    (inherit java-guava)
+    (name "java-guava-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-oss-parent-pom" ,java-sonatype-oss-parent-pom-7)))))
+
 ;; The java-commons-logging package provides adapters to many different
 ;; logging frameworks.  To avoid an excessive dependency graph we try to build
 ;; it with only a minimal set of adapters.
@@ -5756,7 +6438,7 @@ an Apache AB clone based on HttpCore.")))
 (define-public java-httpcomponents-httpclient
   (package
     (name "java-httpcomponents-httpclient")
-    (version "4.5.3")
+    (version "4.5.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/httpcomponents/httpclient/"
@@ -5764,7 +6446,7 @@ an Apache AB clone based on HttpCore.")))
                                   version "-src.tar.gz"))
               (sha256
                (base32
-                "1428399s7qy3cim5wc6f3ks4gl9nf9vkjpfmnlap3jflif7g2pj1"))))
+                "1va99m2zc2liv0v9vn72p5ja8yz4s5wq7zpahaai5nr966kvxzkb"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "httpcomponents-httpclient.jar"
@@ -5891,12 +6573,14 @@ programs.")
                ;; package at this point.
                ;; https://github.com/powermock/powermock
                (delete-file "archivers/sevenz/SevenZNativeHeapTest.java"))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-xz" ,java-xz)
+       ("apache-commons-parent-pom" ,apache-commons-parent-pom-41)))
+    (native-inputs
      `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)
-       ("java-mockito" ,java-mockito-1)
-       ("java-xz" ,java-xz)))
+       ("java-mockito" ,java-mockito-1)))
     (home-page "https://commons.apache.org/proper/commons-compress/")
     (synopsis "Java library for working with compressed files")
     (description "The Apache Commons Compress library defines an API for
@@ -6750,7 +7434,11 @@ logging framework for Java.")))
     (build-system ant-build-system)
     ;; TODO: javadoc
     (arguments
-     `(#:jar-name "commons-cli.jar"))
+     `(#:jar-name "commons-cli.jar"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
@@ -6776,34 +7464,38 @@ This is a part of the Apache Commons Project.")
 (define-public java-commons-codec
   (package
     (name "java-commons-codec")
-    (version "1.10")
+    (version "1.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/commons/codec/source/"
                                   "commons-codec-" version "-src.tar.gz"))
               (sha256
                (base32
-                "1w9qg30y4s0x8gnmr2fgj4lyplfn788jqxbcz27lf5kbr6n8xr65"))))
+                "11xr0agckkhm91pb5akf2mbk84yd54gyr178wj57gsm97fi7nkh9"))))
     (build-system ant-build-system)
-    (outputs '("out" "doc"))
     (arguments
-     `(#:test-target "test"
-       #:make-flags
-       (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
-             (junit    (assoc-ref %build-inputs "java-junit")))
-         (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
-               (string-append "-Dhamcrest.jar=" hamcrest
-                              "/share/java/hamcrest-core.jar")
-               ;; Do not append version to jar.
-               "-Dfinal.name=commons-codec"))
+     `(#:jar-name "java-commons-codec.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:test-exclude (list "**/*AbstractTest.java")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'build 'build-javadoc ant-build-javadoc)
-         (replace 'install (install-jars "dist"))
-         (add-after 'install 'install-doc (install-javadoc "dist/docs/api")))))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources"
+                               "build/classes")
+             #t))
+         (add-before 'check 'copy-test-resources
+           (lambda _
+             (copy-recursively "src/test/resources"
+                               "build/test-classes")
+             #t))
+         (replace 'install (install-from-pom "pom.xml")))))
     (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)))
+     `(("java-commons-lang3" ,java-commons-lang3)
+       ("java-junit" ,java-junit)))
+    (propagated-inputs
+      `(("apache-commons-parent-pom" ,apache-commons-parent-pom-50)))
     (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
@@ -6919,8 +7611,12 @@ more efficient storage-wise than an uncompressed bitmap (as implemented in the
                 (string-append "<include name=\"**/*Test.java\" />"
                                "<exclude name=\"**/MultithreadedInitializationTest"
                                ".java\" />")))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "slf4j-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-slf4j-parent" ,java-slf4j-parent)))
+    (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)))
     (home-page "https://www.slf4j.org/")
@@ -6932,14 +7628,20 @@ allowing the end user to plug in the desired logging framework at deployment
 time.")
     (license license:expat)))
 
-(define java-slf4j-api-bootstrap
+(define java-slf4j-parent
   (package
     (inherit java-slf4j-api)
-    (name "java-slf4j-api-bootstrap")
-    (inputs `())
+    (name "java-slf4j-parent")
+    (native-inputs `())
+    (propagated-inputs '())
     (arguments
-     (substitute-keyword-arguments (package-arguments java-slf4j-api)
-       ((#:tests? _ #f) #f)))))
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (delete 'configure)
+         (replace 'install
+           (install-pom-file "pom.xml")))))))
 
 (define-public java-slf4j-simple
   (package
@@ -6962,11 +7664,14 @@ time.")
              ;; ... and build test helper classes here:
              (apply invoke
                     `("javac" "-d" "."
-                      ,@(find-files "slf4j-api/src/test" ".*\\.java"))))))))
-    (inputs
+                      ,@(find-files "slf4j-api/src/test" ".*\\.java")))))
+         (replace 'install
+           (install-from-pom "slf4j-simple/pom.xml")))))
+    (propagated-inputs
+     `(("java-slf4j-api" ,java-slf4j-api)))
+    (native-inputs
      `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)
-       ("java-slf4j-api" ,java-slf4j-api)))
+       ("java-hamcrest-core" ,java-hamcrest-core)))
     (home-page "https://www.slf4j.org/")
     (synopsis "Simple implementation of simple logging facade for Java")
     (description "SLF4J binding for the Simple implementation, which outputs
@@ -7363,8 +8068,7 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;"))
      `(("junit" ,java-junit)))
     (propagated-inputs
      `(("java-stringtemplate" ,java-stringtemplate-3)
-       ("antlr" ,antlr2)
-       ("antlr3" ,antlr3-3.1)))))
+       ("antlr" ,antlr2)))))
 
 (define-public antlr3-3.1
   (package
@@ -8225,20 +8929,6 @@ it manages project dependencies, gives diffs jars, and much more.")
      `(("hamcrest" ,java-hamcrest-core)
        ("java-junit" ,java-junit)))))
 
-(define java-aqute-libg-bootstrap
-  (package
-    (inherit java-aqute-libg)
-    (name "java-aqute-libg-bootstrap")
-    (arguments
-     ;; Disable tests, at this stage of bootstrap we have no test frameworks.
-     (substitute-keyword-arguments (package-arguments java-aqute-libg)
-       ((#:tests? _ #f) #f)))
-    (inputs
-     `(("slf4j-bootstrap" ,java-slf4j-api-bootstrap)
-       ,@(delete `("slf4j" ,java-slf4j-api)
-                 (package-inputs java-aqute-libg))))
-    (native-inputs '())))
-
 (define-public java-aqute-bndlib
   (package
     (inherit java-aqute-bnd-annotation)
@@ -8262,17 +8952,6 @@ it manages project dependencies, gives diffs jars, and much more.")
        ("promise" ,java-osgi-util-promise)
        ("osgi" ,java-osgi-core)))))
 
-(define java-aqute-bndlib-bootstrap
-  (package
-    (inherit java-aqute-bndlib)
-    (name "java-aqute-bndlib-bootstrap")
-    (inputs
-     `(("slf4j-bootstrap" ,java-slf4j-api-bootstrap)
-       ("java-aqute-libg-bootstrap" ,java-aqute-libg-bootstrap)
-       ,@(delete `("slf4j" ,java-slf4j-api)
-                 (delete `("java-aqute-libg" ,java-aqute-libg)
-                         (package-inputs java-aqute-bndlib)))))))
-
 (define-public java-ops4j-pax-tinybundles
   (package
     (name "java-ops4j-pax-tinybundles")
@@ -8900,7 +9579,7 @@ the subsequent value resolution at any given level.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/nhatminhle/cofoja.git")
+                    (url "https://github.com/nhatminhle/cofoja")
                     (commit (string-append "v" version))))
               (file-name (string-append "java-cofoja-" version "-checkout"))
               (sha256
@@ -8971,7 +9650,28 @@ this is not a static analysis tool.)")
      `(#:jar-name "java-aopalliance.jar"
        #:jdk ,icedtea-8
        #:tests? #f; no tests
-       #:source-dir "aopalliance/src/main"))
+       #:source-dir "aopalliance/src/main"
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build maven pom)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'create-pom
+           (lambda _
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `((project
+                       (modelVersion "4.0.0")
+                       (name "aopalliance")
+                       (groupId "aopalliance")
+                       (artifactId "aopalliance")
+                       (version "1.0"))))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "http://aopalliance.sourceforge.net")
     (synopsis "Aspect-Oriented Programming")
     (description "The AOP Alliance project is a joint project between several
@@ -8982,20 +9682,25 @@ software engineering people who are interested in Aspect-Oriented Programming
 (define-public java-javax-inject
   (package
     (name "java-javax-inject")
-    (version "tck-1")
+    (version "1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/javax-inject/javax-inject/"
-                                  "archive/javax.inject-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/javax-inject/javax-inject")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ydrlvh2r7vr1g7lhjwy3w2dggpj9h6pix1lakkkgdywb365n6g0"))))
+                "1rspl0nkvk1jif6nccikw93xic6ljj2b6kpy2mffwi2mnvc13j7x"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-javax-inject.jar"
-       #:jdk ,icedtea-8
-       #:tests? #f)); no tests
-    (home-page "http://github.com/javax-inject/javax-inject")
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (home-page "https://github.com/javax-inject/javax-inject")
     (synopsis "JSR-330: Dependency Injection for Java")
     (description "This package specifies a means for obtaining objects in such
 a way as to maximize reusability, testability and maintainability compared to
@@ -9015,32 +9720,42 @@ the dependency is said to be unsatisfied, and the application is broken.")
     (name "java-guice")
     (version "4.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/google/guice/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/google/guice")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (modules '((guix build utils)))
               (snippet
                `(begin
-                  (for-each delete-file (find-files "." ".*.jar"))))
+                  (for-each delete-file (find-files "." ".*.jar")) #t))
               (sha256
                (base32
-                "0dwmqjzlavb144ywqqglj3h68hqszkff8ai0a42hyb5il0qh4rbp"))))
+                "18im5hdfl4q1b9chww2s1ii60sn3ydyyar32a2sf2p2g8zlbdswq"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-guice.jar"
        #:jdk ,icedtea-8
        #:tests? #f; FIXME: tests are not in a java sub directory
-       #:source-dir "core/src"))
-    (inputs
-     `(("guava" ,java-guava)
+       #:source-dir "core/src"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-files-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
+         (replace 'install
+           (install-from-pom "core/pom.xml")))))
+    (propagated-inputs
+     `(("java-aopalliance" ,java-aopalliance)
+       ("java-asm" ,java-asm)
        ("java-cglib" ,java-cglib)
-       ("java-aopalliance" ,java-aopalliance)
+       ("java-guava" ,java-guava)
        ("java-javax-inject" ,java-javax-inject)
-       ("java-asm" ,java-asm)))
+       ("java-guice-parent-pom" ,java-guice-parent-pom)))
     (home-page "https://github.com/google/guice")
     (synopsis "Lightweight dependency injection framework")
-    (description "Guice is a lightweight dependency injection framework fo
+    (description "Guice is a lightweight dependency injection framework for
 Java 6 and above.")
     (license license:asl2.0)))
 
@@ -9052,24 +9767,76 @@ Java 6 and above.")
      `(#:jar-name "guice-servlet.jar"
        #:source-dir "extensions/servlet/src/"
        #:jdk ,icedtea-8
-       #:tests? #f)); FIXME: not in a java subdir
+       #:tests? #f  ; FIXME: not in a java subdir
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-files-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t)))))
     (inputs
      `(("guice" ,java-guice)
        ("servlet"  ,java-classpathx-servletapi)
        ,@(package-inputs java-guice)))))
 
+(define java-guice-parent-pom
+  (package
+    (inherit java-guice)
+    (name "java-guice-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-after 'install 'install-extensions
+           (install-pom-file "extensions/pom.xml"))
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("java-google-parent-pom" ,java-google-parent-pom-5)))))
+
+(define java-google-parent-pom-5
+  (package
+    (name "java-google-parent-pom")
+    (version "5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/google/google-maven-parents")
+                     (commit (string-append "google-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zb7hx24p8k8rfdvix2vsbfqn73jhrycdndvhf8j5gbii9wbqibv"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (home-page "https://github.com/google/google-maven-parents")
+    (synopsis "Google parent pom")
+    (description "This package contains the Maven parent POM for other Google
+Java projects.")
+    (license license:asl2.0)))
+
 (define-public java-assertj
   (package
     (name "java-assertj")
     (version "3.8.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/joel-costigliola/"
-                                  "assertj-core/archive/"
-                                  "assertj-core-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/joel-costigliola/assertj-core")
+                     (commit (string-append "assertj-core-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kf124fxskf548rklkg86294w2x6ajqrff94rrhyqns31danqkfz"))))
+                "1k35cg2in7pzk4pbdjryr0pll5lgk1r6ngrn0j8cdlgi7w8zh2d1"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-assertj.jar"
@@ -9094,14 +9861,22 @@ readability and make maintenance of tests easier.")
     (name "java-jboss-javassist")
     (version "3.21.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/jboss-javassist/javassist/"
-                                  "archive/rel_"
-                                  (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
-                                  "_ga.tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/jboss-javassist/javassist")
+                     (commit
+                       (string-append "rel_"
+                                      (string-map
+                                        (lambda (x) (if (eq? x #\.) #\_ x)) version)
+                                      "_ga"))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "10lpcr3sbf7y6fq6fc2h2ik7rqrivwcy4747bg0kxhwszil3cfmf"))))
+                "0h3zlcyqiaq01fspm69h7vki67raw305w89p4ha8vlhpzw02qifm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (delete-file "javassist.jar")))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jboss-javassist.jar"
@@ -9110,9 +9885,9 @@ readability and make maintenance of tests easier.")
        #:tests? #f; FIXME: requires junit-awtui and junit-swingui from junit3
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'remove-binary
+         (add-after 'unpack 'make-files-writable
            (lambda _
-             (delete-file "javassist.jar")
+             (for-each make-file-writable (find-files "."))
              #t)))))
     (native-inputs
      `(("junit" ,java-junit)))
@@ -9129,13 +9904,14 @@ file when the JVM loads it.")
     (name "java-jcommander")
     (version "1.71")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/cbeust/jcommander/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/cbeust/jcommander")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1f5k2ckay6qjc3d3w3d7bc0p3cx3c7n6p6zxvw1kibqdr0q98wlx"))))
+                "12vcpc19sd7jhvjgp7xz1qjanfix162xb3x2q5zah93rjklj1h57"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jcommander.jar"
@@ -9154,25 +9930,41 @@ annotations.")
     (name "java-bsh")
     (version "2.0b6")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/beanshell/beanshell/archive/"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/beanshell/beanshell")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1bawkxk6jyc75hxvzkpz689h73cn3f222m0ar3nvb0dal2b85kfv"))))
+                "0kz3f0xjack6c9syssi4qjw1rbd3q5963sk5pmr143hiibxa9csw"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Delete bundled third-party jar archives.
+                  (for-each delete-file (find-files "." ".*.jar$"))
+                  (for-each (lambda (file) (chmod file #o644))
+                            (find-files "." "."))
+                  #t))))
     (build-system ant-build-system)
     (arguments
      `(#:build-target "jarall"
        #:test-target "junit-tests-all"
        #:phases
        (modify-phases %standard-phases
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* "pom.xml"
+               (("org.apache-extras.beanshell") "org.beanshell"))
+             #t))
          (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
-               (mkdir-p share)
-               (copy-file "dist/bsh-2.0b6.jar" (string-append share "/bsh-2.0b6.jar"))
-               #t))))))
+           (install-from-pom "pom.xml")))))
+    (inputs
+     `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
+       ("java-commons-bsf" ,java-commons-bsf)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("javacc" ,javacc-3)))
     (home-page "http://beanshell.org/")
     (synopsis "Lightweight Scripting for Java")
     (description "BeanShell is a small, free, embeddable Java source
@@ -9278,7 +10070,7 @@ those in Perl and JavaScript.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/cbeust/testng.git")
+                    (url "https://github.com/cbeust/testng")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -9356,7 +10148,7 @@ to use.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/neilalexander/jnacl.git")
+                      (url "https://github.com/neilalexander/jnacl")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -9939,7 +10731,7 @@ protocol-independent framework to build mail and messaging applications.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/zeromq/jeromq.git")
+                    (url "https://github.com/zeromq/jeromq")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -10088,13 +10880,16 @@ outputting XML data from Java code.")
                ;; org.apache.xbean.asm6 is actually repackaged java-asm
                (substitute* (string-append dir "XbeanAsmParameterNameLoader.java")
                  (("org.apache.xbean.asm5") "org.objectweb.asm"))
-               #t))))))
+               #t)))
+         (replace 'install (install-from-pom "xbean-reflect/pom.xml")))))
     (inputs
      `(("asm" ,java-asm)
        ("log4j" ,java-log4j-api)
        ("log4j-1.2" ,java-log4j-1.2-api)
        ("log4j-core" ,java-log4j-core)
        ("logging" ,java-commons-logging-minimal)))
+    (propagated-inputs
+     `(("java-geronimo-parent-pom" ,java-geronimo-parent-pom)))
     (native-inputs
      `(("junit" ,java-junit)))
     (home-page "https://geronimo.apache.org/maven/xbean/3.6/xbean-reflect/")
@@ -10103,6 +10898,65 @@ outputting XML data from Java code.")
 and graphs of objects for dependency injection frameworks")
     (license license:asl2.0)))
 
+(define java-geronimo-genesis-2.1
+  (package
+    (name "java-geronimo-genesis")
+    (version "2.1")
+    (source (origin
+              (method svn-fetch)
+              (uri (svn-reference
+                     (url (string-append "https://svn.apache.org/repos/asf/"
+                                         "geronimo/genesis/tags/genesis-"
+                                         version))
+                     (revision 1807396)))
+              (file-name (string-append name "-" version "-source"))
+              (sha256
+               (base32
+                "119yn795jvnjf52si84q192s8wag1k013iabg78b7wnadssnnh31"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml"))
+         (add-after 'install 'install-enforcer-rules
+           (install-pom-file "genesis-enforcer-rules/pom.xml"))
+         (add-after 'install 'install-flava
+           (install-pom-file "genesis-default-flava/pom.xml"))
+         (add-after 'install 'install-packaging
+           (install-pom-file "genesis-packaging/pom.xml"))
+         (add-after 'install-flava 'install-flava-java4
+           (install-pom-file "genesis-default-flava/genesis-java1.4-flava/pom.xml"))
+         (add-after 'install-flava 'install-flava-java5
+           (install-pom-file "genesis-default-flava/genesis-java5-flava/pom.xml"))
+         (add-after 'install-flava 'install-flava-java6
+           (install-pom-file "genesis-default-flava/genesis-java6-flava/pom.xml")))))
+    (propagated-inputs
+     `(("apache-parent-pom" ,apache-parent-pom-13)))
+    (home-page "https://geronimo.apache.org")
+    (synopsis "Collection of maven POM files for the Geronimo project")
+    (description "Apache Geronimo is a server runtime.  This package contains
+only pom files used by other components in the Geronimo project.")
+    (license license:asl2.0)))
+
+(define java-geronimo-parent-pom
+  (package
+    (inherit java-geronimo-xbean-reflect)
+    (name "java-geronimo-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("java-geronimo-genesis" ,java-geronimo-genesis-2.1)))))
+
 (define-public java-geronimo-xbean-bundleutils
   (package
     (inherit java-geronimo-xbean-reflect)
@@ -10141,7 +10995,7 @@ public Bundle getBundle()"))
        ("java-osgi-framework" ,java-osgi-framework)
        ("java-eclipse-osgi" ,java-eclipse-osgi)
        ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin)))))
- 
+
 (define-public java-geronimo-xbean-asm-util
   (package
     (inherit java-geronimo-xbean-reflect)
@@ -10153,7 +11007,7 @@ public Bundle getBundle()"))
     (inputs
      `(("java-asm" ,java-asm)))
     (native-inputs '())))
- 
+
 (define-public java-geronimo-xbean-finder
   (package
     (inherit java-geronimo-xbean-reflect)
@@ -10237,7 +11091,11 @@ including pre-existing objects that you do not have source-code of.")
                (with-directory-excursion "hawtjni-generator/src/main/resources/"
                  (install-file "libhawtjni.so" lib)
                  (install-file "hawtjni.h" inc)))
-             #t)))))
+             #t))
+         (add-before 'install 'install-parent
+           (install-pom-file "pom.xml"))
+         (replace 'install
+           (install-from-pom "hawtjni-runtime/pom.xml")))))
     (inputs
      `(("java-commons-cli" ,java-commons-cli)
        ("java-asm" ,java-asm)
@@ -10296,8 +11154,16 @@ that is part of the SWT Tools project.")
            (lambda* (#:key outputs #:allow-other-keys)
              (install-file "src/main/native-package/src/jansi.h"
                            (string-append (assoc-ref outputs "out") "/include"))
-             #t)))))
-    (inputs
+             #t))
+         (add-before 'install 'fix-pom
+           (lambda _
+             ;; pom contains variables to complete name, but we don't support that
+             (substitute* "pom.xml"
+               (("\\$\\{platform\\}") "native"))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
      `(("java-hawtjni" ,java-hawtjni)))
     (home-page "https://fusesource.github.io/jansi/")
     (synopsis "Native library for jansi")
@@ -10326,8 +11192,25 @@ console output.")
        (modify-phases %standard-phases
          (add-after 'check 'clear-term
            (lambda _
-             (invoke "echo" "-e" "\\e[0m"))))))
-    (inputs
+             (invoke "echo" "-e" "\\e[0m")))
+         (add-before 'install 'install-parent
+           (install-pom-file "pom.xml"))
+         (add-before 'install 'fix-pom
+           (lambda _
+             ;; pom adds jansi native versions for different platforms, but we
+             ;; only need one, so use native instead
+             (substitute* "jansi/pom.xml"
+               (("windows32") "native")
+               (("windows64") "native")
+               (("osx") "native")
+               (("linux32") "native")
+               (("linux64") "native")
+               (("freebsd32") "native")
+               (("freebsd64") "native"))
+             #t))
+         (replace 'install
+           (install-from-pom "jansi/pom.xml")))))
+    (propagated-inputs
      `(("java-jansi-native" ,java-jansi-native)))
     (native-inputs
      `(("java-junit" ,java-junit)
@@ -10353,7 +11236,31 @@ sequences to format your console output which works on every platform.")
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-jboss-el-api_spec.jar"
-       #:jdk ,icedtea-8))
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build maven pom)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         ;; the origin of javax.el:javax.el-api is unknown, so we use this package
+         ;; instead, which implements the same thing.  We override the pom file
+         ;; to "rename" the package so it can be found by maven.
+         (add-before 'install 'override-pom
+           (lambda _
+             (delete-file "pom.xml")
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `(project
+                      (modelVersion "4.0.0")
+                      (name "el-api")
+                      (groupId "javax.el")
+                      (artifactId "javax.el-api")
+                      (version "3.0")))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (inputs
      `(("java-junit" ,java-junit)))
     (home-page "https://github.com/jboss/jboss-el-api_spec")
@@ -10382,7 +11289,33 @@ JavaServer Pages (JSP).")
      `(#:jar-name "java-jboss-interceptors-api_spec.jar"
        #:jdk ,icedtea-8
        #:source-dir "."
-       #:tests? #f)); no tests
+       #:tests? #f; no tests
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build maven pom)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         ;; the origin of javax.interceptor:javax.interceptor-api is unknown,
+         ;; so we use this package instead, which implements the same thing.
+         ;; We override the pom file to "rename" the package so it can be found
+         ;; by maven.
+         (add-before 'install 'override-pom
+           (lambda _
+             (delete-file "pom.xml")
+             (with-output-to-file "pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `(project
+                      (modelVersion "4.0.0")
+                      (name "interceptor-api")
+                      (groupId "javax.interceptor")
+                      (artifactId "javax.interceptor-api")
+                      (version "3.0")))))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
     (home-page "https://github.com/jboss/jboss-interceptors-api_spec")
     (synopsis "Interceptors 1.2 API classes from JSR 318")
     (description "Java-jboss-interceptors-api-spec implements the Interceptors
@@ -10409,11 +11342,16 @@ specific events.")
        #:jar-name "java-cdi-api.jar"
        #:test-dir "api/src/test"
        #:jdk ,icedtea-8
-       #:tests? #f)); Tests fail because we don't have a CDI provider yet
-    (inputs
+       #:tests? #f; Tests fail because we don't have a CDI provider yet
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "api/pom.xml")))))
+    (propagated-inputs
      `(("java-javax-inject" ,java-javax-inject)
        ("java-jboss-el-api-spec" ,java-jboss-el-api-spec)
-       ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)))
+       ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)
+       ("java-weld-parent-pom" ,java-weld-parent-pom)))
     (native-inputs
      `(("java-testng" ,java-testng)
        ("java-hamcrest-core" ,java-hamcrest-core)))
@@ -10726,13 +11664,13 @@ features that bring it on par with the Z shell line editor.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                  (url "https://github.com/xmlunit/test-resources.git")
+                  (url "https://github.com/xmlunit/test-resources")
                   (commit "a590d2ae865c3e0455691d76ba8eefccc2215aec")))
            (file-name "java-xmlunit-test-resources")
            (sha256
             (base32
              "0r0glj37pg5l868yjz78gckr91cs8fysxxbp9p328dssssi91agr"))))))
-    (home-page "http://www.xmlunit.org/")
+    (home-page "https://www.xmlunit.org/")
     (synopsis "XML output testing")
     (description "XMLUnit provides you with the tools to verify the XML you
 emit is the one you want to create.  It provides helpers to validate against
@@ -10991,11 +11929,10 @@ from ORO, Inc.")
                ;; so don't fail if we can't find a native library for another architecture.
                (("zipfileset") "zipfileset erroronmissingarchive=\"false\""))
              ;; Copy test dependencies
-             (copy-file (string-append (assoc-ref inputs "java-junit")
-                                       "/share/java/junit.jar")
+             (copy-file (car (find-files (assoc-ref inputs "java-junit") "jar$"))
                         "lib/junit.jar")
-             (copy-file (string-append (assoc-ref inputs "java-hamcrest-core")
-                                       "/share/java/hamcrest-core.jar")
+             (copy-file (car (find-files (assoc-ref inputs "java-hamcrest-core")
+                                         "jar$"))
                         "lib/hamcrest-core.jar")
              ;; FIXME: once reflections.jar is built, copy it to lib/test.
              #t))
@@ -11044,11 +11981,11 @@ Java method invocation.")
                 (string-append (assoc-ref inputs "java-native-access")
                                "/share/java/jna.jar"))
                (("../../lib/hamcrest-core-.*.jar")
-                (string-append (assoc-ref inputs "java-hamcrest-core")
-                               "/share/java/hamcrest-core.jar"))
+                (car (find-files (assoc-ref inputs "java-hamcrest-core")
+                                 "jar$")))
                (("../../lib/junit.jar")
-                (string-append (assoc-ref inputs "java-junit")
-                               "/share/java/junit.jar")))
+                (car (find-files (assoc-ref inputs "java-junit")
+                                 "jar$"))))
              #t))
          (replace 'install
            (install-jars "dist")))))
@@ -11285,25 +12222,30 @@ and reporting) project dependencies.  It is characterized by the following:
 (define-public java-eclipse-sisu-inject
   (package
     (name "java-eclipse-sisu-inject")
-    (version "0.3.3")
+    (version "0.3.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                      (url "https://github.com/eclipse/sisu.inject/")
-                     (commit "releases/0.3.3")))
+                     (commit (string-append "releases/" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gibc9x0bw0f4ls086fx73610fcspz9g2as7kcpcfhvl5znysvg7"))))
+                "16044sizdb0rjbhlfbmcnpds5y7by7dyn9b0c11606aikqi8k3x6"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "eclipse-sisu-inject.jar"
        #:source-dir "org.eclipse.sisu.inject/src"
-       #:jdk ,icedtea-8
-       #:tests? #f)); no tests
-    (inputs
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "org.eclipse.sisu.inject/pom.xml")))))
+    (propagated-inputs
      `(("java-guice" ,java-guice)
-       ("java-guice-servlet" ,java-guice-servlet)
+       ("java-sisu-inject-parent-pom" ,java-sisu-inject-parent-pom)))
+    (inputs
+     `(("java-guice-servlet" ,java-guice-servlet)
        ("java-javax-inject" ,java-javax-inject)
        ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("java-junit" ,java-junit)
@@ -11324,6 +12266,20 @@ Integration with other containers via the Eclipse Extension Registry and the
 OSGi Service Registry is a goal of this project.")
     (license license:epl1.0)))
 
+(define java-sisu-inject-parent-pom
+  (package
+    (inherit java-eclipse-sisu-inject)
+    (name "java-sisu-inject-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs '())))
+
 (define-public java-eclipse-sisu-plexus
   (package
     (name "java-eclipse-sisu-plexus")
@@ -11331,7 +12287,7 @@ OSGi Service Registry is a goal of this project.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/eclipse/sisu.plexus.git")
+                     (url "https://github.com/eclipse/sisu.plexus")
                      (commit (string-append "releases/" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -11385,22 +12341,27 @@ OSGi Service Registry is a goal of this project.")
                (substitute* "java/org/eclipse/sisu/plexus/DefaultPlexusContainerTest.java"
                  (("resources/component-jar")
                   "org.eclipse.sisu.plexus.tests/resources/component-jar")))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "org.eclipse.sisu.plexus/pom.xml")))))
+    (propagated-inputs
      `(("java-plexus-classworlds" ,java-plexus-classworlds)
-       ("java-plexus-util" ,java-plexus-utils)
+       ("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-component-annotations" ,java-plexus-component-annotations)
-       ("java-osgi-framework" ,java-osgi-framework)
+       ("java-cdi-api" ,java-cdi-api)
        ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
-       ("java-guice" ,java-guice)
-       ("java-javax-inject" ,java-javax-inject)
+       ("java-sisu-plexus-parent-pom" ,java-sisu-plexus-parent-pom)))
+    (inputs
+     `(("java-osgi-framework" ,java-osgi-framework)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-junit" ,java-junit)))
-    (native-inputs
-     `(("java-guava" ,java-guava)
+       ("java-javax-inject" ,java-javax-inject)
+       ("java-guice" ,java-guice)
+       ("java-guava" ,java-guava)
        ("java-aopalliance" ,java-aopalliance)
-       ("java-cglib" ,java-cglib)
-       ("java-asm" ,java-asm)))
+       ("java-asm" ,java-asm)
+       ("java-cglib" ,java-cglib)))
+    (native-inputs
+     `(("java-junit" ,java-junit)))
     (home-page "https://www.eclipse.org/sisu/")
     (synopsis "Plexus support for the sisu container")
     (description "Sisu is a modular JSR330-based container that supports
@@ -11408,6 +12369,21 @@ classpath scanning, auto-binding, and dynamic auto-wiring.  This package
 adds Plexus support to the Sisu-Inject container.")
     (license license:epl1.0)))
 
+(define java-sisu-plexus-parent-pom
+  (package
+    (inherit java-eclipse-sisu-plexus)
+    (name "java-sisu-plexus-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-oss-parent-pom-9" ,java-sonatype-oss-parent-pom-9)))))
+
 (define-public java-commons-compiler
   (package
     (name "java-commons-compiler")
@@ -11926,6 +12902,7 @@ Isolation and Durability) properties.")
               (uri (git-reference
                      (url "https://github.com/remkop/picocli")
                      (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "1sxp6rxjfgjd98ly14b3d15dvxkm5wg4g46w12jyhmr0kmkaca3c"))))
@@ -11941,3 +12918,28 @@ Isolation and Durability) properties.")
 for the JVM.  It supports colors, autocompletion, subcommands, and more.  Written
 in Java, usable from Groovy, Kotlin, Scala, etc.")
     (license license:asl2.0)))
+
+(define-public java-jetbrains-annotations
+  (package
+    (name "java-jetbrains-annotations")
+    (version "19.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/JetBrains/java-annotations")
+                     (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0z6i1xs60cd5ffz23c49sq68wn5mphhs3xpar1n93ppama2ng80v"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "jetbrains-annotations.jar"
+       #:source-dir "common/src/main/java:java8/src/main/java"
+       #:tests? #f)); no tests
+    (home-page "https://github.com/JetBrains/java-annotations")
+    (synopsis "Annotations for Java and other JVM languages")
+    (description "This package contains a set of Java annotations which can be
+used in JVM-based languages.  They serve as an additional documentation and
+can be interpreted by IDEs and static analysis tools to improve code analysis.")
+    (license license:expat)))
diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm
index 97c3a571a1..d5ff5bffee 100644
--- a/gnu/packages/javascript.scm
+++ b/gnu/packages/javascript.scm
@@ -188,7 +188,7 @@ Explorer 6-9, Safari 4.x (and iPhone 3.x), and Firefox 3.x.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/douglascrockford/JSON-js.git")
+                      (url "https://github.com/douglascrockford/JSON-js")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -303,7 +303,7 @@ HTML tables with minimal effort.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/requirejs/requirejs.git")
+                     (url "https://github.com/requirejs/requirejs")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/jrnl.scm b/gnu/packages/jrnl.scm
index 5b57cc7c9b..85d3863e05 100644
--- a/gnu/packages/jrnl.scm
+++ b/gnu/packages/jrnl.scm
@@ -38,7 +38,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/maebert/jrnl.git")
+             (url "https://github.com/maebert/jrnl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 8db5e66131..78488a4e99 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -61,7 +61,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/JuliaLang/libuv.git")
+                       (url "https://github.com/JuliaLang/libuv")
                        (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -196,7 +196,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vtjnash/libwhich.git")
+             (url "https://github.com/vtjnash/libwhich")
              ;; fixes linux-vdso.so related tests
              (commit "87cffe10080c98e7b5786c5166e420bf1ada1d41")))
        (file-name (string-append name "-" version "-checkout"))
diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm
index 3f16bc27f1..f826ebd171 100644
--- a/gnu/packages/jupyter.scm
+++ b/gnu/packages/jupyter.scm
@@ -145,7 +145,7 @@ Messaging Protocol}.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/QuantStack/xeus.git")
+                    (url "https://github.com/QuantStack/xeus")
                     (commit version)))
               (sha256
                (base32
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index cba00b2882..9a80e362b6 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -567,7 +567,7 @@ different notification systems.")
 (define-public kdeconnect
   (package
     (name "kdeconnect")
-    (version "20.04.1")
+    (version "20.04.2")
     (source
       (origin
         (method url-fetch)
@@ -576,7 +576,7 @@ different notification systems.")
                             version ".tar.xz"))
         (sha256
          (base32
-          "1knhpjdbffw858dfd9kml91a02fkc0rcjydfavcyr79j9x8mv3bq"))))
+          "0yq3afbbcc9gmlcachvh3xz3gdj57092fpagp36l5knw8gr0d9ip"))))
     (build-system qt-build-system)
     (arguments
      `(#:configure-flags '("-DBUILD_TESTING=ON"
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 742172a969..556dd6b4e5 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -90,7 +90,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/graeme-hill/crossguid.git")
+                      (url "https://github.com/graeme-hill/crossguid")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -140,7 +140,7 @@ generator library for C++.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/xbmc/libdvdnav.git")
+                      (url "https://github.com/xbmc/libdvdnav")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -175,7 +175,7 @@ generator library for C++.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/xbmc/libdvdread.git")
+                      (url "https://github.com/xbmc/libdvdread")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -210,7 +210,7 @@ generator library for C++.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/xbmc/libdvdcss.git")
+                      (url "https://github.com/xbmc/libdvdcss")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -273,7 +273,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/xbmc/xbmc.git")
+                    (url "https://github.com/xbmc/xbmc")
                     (commit (string-append version "-Leia"))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index c66718aa1e..366ea2c8e6 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -613,7 +613,7 @@ suitable for both the desktop and mobile devices.")
          ;; 'tegaki-recognize.in' are missing in the tarball.
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tegaki/tegaki.git")
+               (url "https://github.com/tegaki/tegaki")
                (commit commit)))
          (sha256
           (base32
diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm
index 235113d475..0cc67da874 100644
--- a/gnu/packages/lean.scm
+++ b/gnu/packages/lean.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,7 @@
 (define-public lean
   (package
     (name "lean")
-    (version "3.5.0")
+    (version "3.17.1")
     (home-page "https://github.com/leanprover-community/lean")
     (source (origin
               (method git-fetch)
@@ -35,12 +36,19 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fdblq8ckrv6wqxfl4ybcs3ybfq7y096c9f5j4j75ymb14r401lr"))))
+                "15yfryg98x9lvy00v1w5kg4hp921mpvlxx1ic3m08k1ls6p1gkj4"))))
     (build-system cmake-build-system)
     (inputs
      `(("gmp" ,gmp)))
     (arguments
      `(#:build-type "Release"           ; default upstream build type
+       ;; XXX: Test phases currently fail on 32-bit sytems.
+       ;; Tests for those architectures have been temporarily
+       ;; disabled, pending further investigation.
+       #:tests? ,(let ((arch (or (%current-target-system)
+                              (%current-system))))
+                   (not (or (string-prefix? "i686" arch)
+                            (string-prefix? "armhf" arch))))
        #:phases
        (modify-phases %standard-phases
          (add-after 'patch-source-shebangs 'patch-tests-shebangs
diff --git a/gnu/packages/lego.scm b/gnu/packages/lego.scm
index 396b37ddd9..2067e45dd1 100644
--- a/gnu/packages/lego.scm
+++ b/gnu/packages/lego.scm
@@ -78,7 +78,7 @@ restrictions that stem from limitations of the standard RCX firmware.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/leozide/leocad.git")
+                    (url "https://github.com/leozide/leocad")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm
index d449e0729e..f6ee355b68 100644
--- a/gnu/packages/less.scm
+++ b/gnu/packages/less.scm
@@ -63,7 +63,7 @@ text editors.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/wofr06/lesspipe.git")
+                    (url "https://github.com/wofr06/lesspipe")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 97a3bebeba..0e6a31d78c 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -249,5 +249,5 @@ project.")
 dynamic libraries, binding functions within them, and calling those functions
 from Ruby code.  Moreover, a Ruby-FFI extension works without changes on Ruby
 and JRuby.")
-    (home-page "http://wiki.github.com/ffi/ffi")
+    (home-page "https://wiki.github.com/ffi/ffi")
     (license bsd-3)))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index a98ae152f6..ebe4fd7246 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -1049,7 +1049,7 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
 (define-public libreoffice
   (package
     (name "libreoffice")
-    (version "6.4.4.2")
+    (version "6.4.5.2")
     (source
      (origin
        (method url-fetch)
@@ -1057,10 +1057,9 @@ converting QuarkXPress file format.  It supports versions 3.1 to 4.1.")
         (string-append
          "https://download.documentfoundation.org/libreoffice/src/"
          (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
-       (patches (search-patches "libreoffice-poppler-compat.patch"))
        (sha256
         (base32
-         "0y6026h374787yy2f3as1q7clxmgywsfdrj62kw3577wvybqaf2l"))))
+         "1v4ili9j8d0xfj3q69niski1v65icg8xi09ip2bsk343rawwck3a"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index 3842f3fead..7b13d98d95 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -128,7 +128,7 @@ version of libusb to run with newer libusb.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/usb4java/libusb4java.git")
+                      (url "https://github.com/usb4java/libusb4java")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -166,12 +166,14 @@ with usb4java.")
     (name "java-usb4java")
     (version "1.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/usb4java/usb4java/"
-                                  "archive/usb4java-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/usb4java/usb4java")
+                     (commit (string-append "usb4java-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0gzpsnzwgsdyra3smq288yvxnwrgvdwxr6g8jbknnsk56kv6wc34"))))
+                "0aip6k24czz5g58qwb963mpick0b6ks774drfpdd8gcdvj9iv87j"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "usb4java.jar"
@@ -354,7 +356,7 @@ I2C and SPI devices attached to the USB Hub.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libimobiledevice/libplist.git")
+             (url "https://github.com/libimobiledevice/libplist")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -594,7 +596,7 @@ devices.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libusb/hidapi.git")
+             (url "https://github.com/libusb/hidapi")
              (commit (string-append "hidapi-" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 95847165fd..14bccadce3 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -45,6 +45,8 @@
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -72,8 +74,10 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cpio)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages compression)
@@ -196,37 +200,37 @@ defconfig.  Return the appropriate make target if applicable, otherwise return
 
 (define deblob-scripts-5.7
   (linux-libre-deblob-scripts
-   "5.7.1"
-   (base32 "1c0n39wg6xij4x63ppg0m80kfcffkn3iilm3chyiix09n9g7vb78")
-   (base32 "02is246xaql1br3kizqicrkp982nw4gdwpn7nlzjazvsmyd1hcv2")))
+   "5.7.10"
+   (base32 "1gharhw104wxp9dxjkzzvsqc2xn44mc9yvacc3v7jh7b6bb0a64a")
+   (base32 "1n198gx18rxc7xflgiwya43inkwayc91pgb129kngfza8sm6v8ks")))
 
 (define deblob-scripts-5.4
   (linux-libre-deblob-scripts
-   "5.4.37"
+   "5.4.53"
    (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25")
    (base32 "10qb890is4z58vr8czh3xx69q62l3b3j38y410kgiw8nii3zx5lr")))
 
 (define deblob-scripts-4.19
   (linux-libre-deblob-scripts
-   "4.19.103"
+   "4.19.134"
    (base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
    (base32 "1w2wgxblpq09i33qmqgw5v3r5rm9vkkygr6m0sgv4zgczk9s29wr")))
 
 (define deblob-scripts-4.14
   (linux-libre-deblob-scripts
-   "4.14.170"
+   "4.14.189"
    (base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
    (base32 "1qij18inijj6c3ma8hv98yjagnzxdxyn134da9fd23ky8q6hbvky")))
 
 (define deblob-scripts-4.9
   (linux-libre-deblob-scripts
-   "4.9.213"
+   "4.9.231"
    (base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
    (base32 "0fxajshb75siq39lj5h8xvhdj8lcmddkslwlyj65rhlwk6g2r4b2")))
 
 (define deblob-scripts-4.4
   (linux-libre-deblob-scripts
-   "4.4.213"
+   "4.4.231"
    (base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
    (base32 "0hhin1jpfkd6nwrb6xqxjzl3hdxy4pn8a15hy2d3d83yw6pflbsf")))
 
@@ -371,50 +375,50 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
     (sha256 hash)))
 
 
-(define-public linux-libre-5.7-version "5.7.4")
+(define-public linux-libre-5.7-version "5.7.10")
 (define-public linux-libre-5.7-pristine-source
   (let ((version linux-libre-5.7-version)
-        (hash (base32 "06mm0bmjw54aypfhhbm9aaz5bmgymvygfak587iwv901635gb95w")))
+        (hash (base32 "0i1x347q1rs9r11f7qic62d5465dzngxs0n44ryknmxpcl6469a7")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.7)))
 
-(define-public linux-libre-5.4-version "5.4.47")
+(define-public linux-libre-5.4-version "5.4.53")
 (define-public linux-libre-5.4-pristine-source
   (let ((version linux-libre-5.4-version)
-        (hash (base32 "0v4d86yci4lq82nb1fgf0g3j0348v6q6m77czpm4b3cs7lwrs2wp")))
+        (hash (base32 "08bd7lgj2c26h3rm8lm7w6dvi8zhjiilmrxf1rpp5m90jbwvd9zs")))
    (make-linux-libre-source version
                             (%upstream-linux-source version hash)
                             deblob-scripts-5.4)))
 
-(define-public linux-libre-4.19-version "4.19.128")
+(define-public linux-libre-4.19-version "4.19.134")
 (define-public linux-libre-4.19-pristine-source
   (let ((version linux-libre-4.19-version)
-        (hash (base32 "0g31ad3wziy4xqna0yvwjcnza3jhd93syjpfvmwh0b4pkj2adar9")))
+        (hash (base32 "0vrsiqqsiv0z4jhafqch2g27ig28nmw69hw32a8lc5fkcm7shzbx")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.19)))
 
-(define-public linux-libre-4.14-version "4.14.185")
+(define-public linux-libre-4.14-version "4.14.189")
 (define-public linux-libre-4.14-pristine-source
   (let ((version linux-libre-4.14-version)
-        (hash (base32 "1iixxwidp53s2i2br58wbx5s69f2jcllb116z73pv7fmd06b2czk")))
+        (hash (base32 "1qgr6hb714xi7rav4za4vk4l7c0ma3ndf0f2ca3q8ly5gd2j3rd7")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.14)))
 
-(define-public linux-libre-4.9-version "4.9.228")
+(define-public linux-libre-4.9-version "4.9.231")
 (define-public linux-libre-4.9-pristine-source
   (let ((version linux-libre-4.9-version)
-        (hash (base32 "0d7w2zzs79ywxzfrh4bmk5lw318qbkcb8mcsyyh3cc25qqlz9gwg")))
+        (hash (base32 "1sz8xk767yy4lxqvy4229yrgkwnm43hdrbr54aa1flns5yh3p12g")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.9)))
 
-(define-public linux-libre-4.4-version "4.4.228")
+(define-public linux-libre-4.4-version "4.4.231")
 (define-public linux-libre-4.4-pristine-source
   (let ((version linux-libre-4.4-version)
-        (hash (base32 "0y1xc5lk8j3p5maarksmh18wy921rgcngzsih7q1a82rah1fsjxr")))
+        (hash (base32 "1c6p5hv18isa328pvpa3qmmsg4qsssf2mwsx3hzn489rb8ycdxp7")))
     (make-linux-libre-source version
                              (%upstream-linux-source version hash)
                              deblob-scripts-4.4)))
@@ -618,6 +622,30 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
     ("CONFIG_CIFS" . m)
     ("CONFIG_9P_FS" . m)))
 
+;; See https://github.com/iovisor/bcc/blob/master/INSTALL.md#kernel-configuration
+(define %bpf-extra-linux-options
+  `(;; Needed for probes
+    ("CONFIG_UPROBE_EVENTS" . #t)
+    ("CONFIG_KPROBE_EVENTS" . #t)
+    ;; kheaders module also helpful for tracing
+    ("CONFIG_IKHEADERS" . #t)
+    ("CONFIG_BPF" . #t)
+    ("CONFIG_BPF_SYSCALL" . #t)
+    ("CONFIG_BPF_JIT_ALWAYS_ON" . #t)
+    ;; optional, for tc filters
+    ("CONFIG_NET_CLS_BPF" . m)
+    ;; optional, for tc actions
+    ("CONFIG_NET_ACT_BPF" . m)
+    ("CONFIG_BPF_JIT" . #t)
+    ;; for Linux kernel versions 4.1 through 4.6
+    ;; ("CONFIG_HAVE_BPF_JIT" . y)
+    ;; for Linux kernel versions 4.7 and later
+    ("CONFIG_HAVE_EBPF_JIT" . #t)
+    ;; optional, for kprobes
+    ("CONFIG_BPF_EVENTS" . #t)
+    ;; kheaders module
+    ("CONFIG_IKHEADERS" . #t)))
+
 (define (config->string options)
   (string-join (map (match-lambda
                       ((option . 'm)
@@ -936,6 +964,23 @@ It has been modified to remove all non-free binary blobs.")
                      '("riscv64-linux")
                      #:extra-version "riscv64-generic"))
 
+(define-public linux-libre-with-bpf
+  (let ((base-linux-libre
+         (make-linux-libre*
+          linux-libre-5.4-version
+          linux-libre-5.4-source
+          '("x86_64-linux" "i686-linux" "armhf-linux"
+            "aarch64-linux" "riscv64-linux")
+          #:extra-version "bpf"
+          #:configuration-file kernel-config
+          #:extra-options
+          (append %bpf-extra-linux-options
+                  %default-extra-linux-options))))
+    (package
+      (inherit base-linux-libre)
+      (inputs `(("cpio" ,cpio) ,@(package-inputs base-linux-libre))))))
+
+
 
 ;;;
 ;;; Linux kernel modules.
@@ -951,7 +996,7 @@ It has been modified to remove all non-free binary blobs.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/teleshoes/acpi_call.git")
+               (url "https://github.com/teleshoes/acpi_call")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -994,7 +1039,7 @@ and should be used with caution, especially on untested models.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/aircrack-ng/rtl8812au.git")
+               (url "https://github.com/aircrack-ng/rtl8812au")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1040,7 +1085,7 @@ RTL8812AU, RTL8821AU, and RTL8814AU chips.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tomaspinho/rtl8821ce.git")
+               (url "https://github.com/tomaspinho/rtl8821ce")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1163,7 +1208,7 @@ supported under @file{/sys/class/backlight/}.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/umlaeute/v4l2loopback.git")
+                    (url "https://github.com/umlaeute/v4l2loopback")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1486,12 +1531,13 @@ block devices, UUIDs, TTYs, and many other tools.")
     (name "ddate")
     (version "0.2.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/bo0ts/ddate/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/bo0ts/ddate")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
-               (base32 "1bbqqq8mswj4bp9083gxjaky5ysfznax4cynsqwmy125z053yg6m"))))
+               (base32 "1qchxnxvghbma6gp1g78wnjxsri0b72ha9axyk31cplssl7yn73f"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))
     (home-page "https://github.com/bo0ts/ddate")
@@ -2505,14 +2551,14 @@ devices.  It replaces @code{iwconfig}, which is deprecated.")
 (define-public powertop
   (package
     (name "powertop")
-    (version "2.12")
+    (version "2.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://01.org/sites/default/files/downloads/"
                            "powertop-" version ".tar.gz"))
        (sha256
-        (base32 "1kiiwa5p2r7h1lzcf53xq61ckaa4wk565s9fs6vw4bfk84y3mfsw"))))
+        (base32 "0y1ixw8v17fdb1ima0zshrd0rh4zxdh10r93nrrvq6d4lhn9jpx6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -2979,16 +3025,16 @@ for systems using the Linux kernel.  This includes commands such as
 (define-public inotify-tools
   (package
     (name "inotify-tools")
-    (version "3.20.1")
+    (version "3.20.2.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rvoicilas/inotify-tools.git")
+                    (url "https://github.com/rvoicilas/inotify-tools")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "14dci1i4mhsd5sa33k8h3ayphk19kizynh5ql9ryibdpmcanfiyq"))))
+                "1r12bglkb0bkqff6kgxjm81hk6z20nrxq3m7iv15d4nrqf9pm7s0"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -3062,7 +3108,7 @@ from the module-init-tools project.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rfjakob/earlyoom.git")
+                    (url "https://github.com/rfjakob/earlyoom")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3350,6 +3396,37 @@ mapper.  Kernel components are part of Linux-libre.")
                #t))))))
     (synopsis "Logical volume management for Linux (statically linked)")))
 
+(define-public thin-provisioning-tools
+  (package
+    (name "thin-provisioning-tools")
+    (version "0.8.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jthornber/thin-provisioning-tools")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "01wl8c0cjbx1smbhj8dx6av5bnw5775m58gasc3vqwvsj0s9hq19"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; Doesn't build with --enable-testing due to a function name collision
+     ;; with glibc. Fixed upstream. TODO: Enable tests when 0.9.0 is released.
+     `(#:tests? #f))
+    (native-inputs
+     `(("automake" ,automake)
+       ("autoreconf" ,autoconf)))
+    (inputs
+     `(("boost" ,boost)
+       ("expat" ,expat)
+       ("libaio" ,libaio)))
+    (synopsis "Tools for manipulating the metadata of device-mapper targets")
+    (description "A suite of tools for manipulating the metadata of the
+dm-thin, dm-cache and dm-era device-mapper targets.")
+    (home-page "https://github.com/jthornber/thin-provisioning-tools")
+    (license license:gpl3+)))
+
 (define-public wireless-tools
   (package
     (name "wireless-tools")
@@ -3566,7 +3643,7 @@ country-specific regulations for the wireless spectrum.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/groeck/lm-sensors.git")
+             (url "https://github.com/groeck/lm-sensors")
              (commit (string-append "V" (string-join
                                          (string-split version #\.) "-")))))
        (file-name (git-file-name name version))
@@ -3787,13 +3864,14 @@ particular the @code{perf} command.")
     (name "pflask")
     (version "0.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/ghedo/pflask/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/ghedo/pflask")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1g8fjj67dfkc2s0852l9vqi1pm61gp4rxbpzbzg780f5s5hd1fys"))))
+                "1jikjbhlxlqracnai3v9krzcgd2xwp0p4adw5n07yxc7b857damz"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
@@ -3850,12 +3928,18 @@ thanks to the use of namespaces.")
      `(#:configure-flags '("--localstatedir=/var")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-reference-to-squashfs-tools
+         (add-after 'unpack 'patch-references
            (lambda _
              (substitute* "libexec/cli/build.exec"
                (("if ! singularity_which mksquashfs") "if 0")
                (("if ! mksquashfs")
                 (string-append "if ! " (which "mksquashfs"))))
+             (substitute* (list "libexec/cli/help.exec"
+                                "libexec/bootstrap-scripts/functions"
+                                "libexec/bootstrap-scripts/post.sh"
+                                "libexec/functions")
+               (("egrep ")
+                (string-append (which "egrep") " ")))
              #t))
          (add-after 'install 'set-PATH
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -3924,7 +4008,7 @@ Translation (@dfn{SAT}) are also supported.")
 (define-public nvme-cli
   (package
     (name "nvme-cli")
-    (version "1.11.2")
+    (version "1.12")
     (home-page "https://github.com/linux-nvme/nvme-cli")
     (source (origin
               (method git-fetch)
@@ -3932,7 +4016,7 @@ Translation (@dfn{SAT}) are also supported.")
                     (url home-page)
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "0ngh7zffjf6ac8b22hdi4ry7hjlafih172hrbpw8j17r7c0wjy9i"))
+               (base32 "0ldky34sn0m5c4hgiip0fkzm465nca69bhxicpd5dg8wxhzxqrp3"))
               (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -4969,7 +5053,7 @@ feature, and a laptop with an accelerometer.  It has no effect on SSDs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vmatare/thinkfan.git")
+             (url "https://github.com/vmatare/thinkfan")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5027,7 +5111,7 @@ from userspace.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/teleshoes/tpacpi-bat.git")
+             (url "https://github.com/teleshoes/tpacpi-bat")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5364,16 +5448,16 @@ cpufreq sub-system is enabled or not.")
 (define-public haveged
   (package
     (name "haveged")
-    (version "1.9.8")
+    (version "1.9.13")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jirka-h/haveged.git")
+             (url "https://github.com/jirka-h/haveged")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1znr58fb3faq4nmrvc3c5whkc1f3chivm4vhicdwr9pdsyqqsd51"))))
+        (base32 "0g3hcvpky76cabgcfqh65fay7nnjkms32sgmlf33q969833hijqz"))))
     (build-system gnu-build-system)
     (home-page "https://www.issihosts.com/haveged")
     (synopsis "Entropy source for the Linux random number generator")
@@ -5582,7 +5666,7 @@ exceeded.")
 (define-public mtd-utils
   (package
     (name "mtd-utils")
-    (version "2.1.1")
+    (version "2.1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -5590,7 +5674,7 @@ exceeded.")
                     "mtd-utils-" version ".tar.bz2"))
               (sha256
                (base32
-                "1lijl89l7hljx8xx70vrz9srd3h41v5gh4b0lvqnlv831yvyh5cd"))))
+                "1mp9fqgnz5r69s8ly98ry6k2blqnaqpllwi8m930dm0n8zrwbm4a"))))
     (arguments
      '(#:configure-flags '("--enable-unit-tests")))
     (native-inputs
@@ -5646,7 +5730,7 @@ developers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/clbr/radeontop.git")
+             (url "https://github.com/clbr/radeontop")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5800,7 +5884,7 @@ monitoring tools for Linux.  These include @code{mpstat}, @code{iostat},
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/haikarainen/light.git")
+             (url "https://github.com/haikarainen/light")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1a70zcf88ifsnwll486aicjnh48zisdf8f7vi34ihw61kdadsq9s"))
@@ -5888,7 +5972,7 @@ interface in sysfs, which can be accomplished with the included udev rules.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/linrunner/TLP.git")
+             (url "https://github.com/linrunner/TLP")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -6007,7 +6091,7 @@ every time the power supply source is changed.")
 (define-public lshw
   (package
     (name "lshw")
-    (version "B.02.18")
+    (version "B.02.19.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.ezix.org/software/"
@@ -6015,7 +6099,7 @@ every time the power supply source is changed.")
                                   ".tar.gz"))
               (sha256
                (base32
-                "0brwra4jld0d53d7jsgca415ljglmmx1l2iazpj4ndilr48yy8mf"))))
+                "100gm1c6gb2hkfws22h0xhvv7nz38p49lxd1csikj8qlhyn4gcwv"))))
     (build-system gnu-build-system)
     (arguments
       `(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -6082,7 +6166,7 @@ used by nftables.")
 (define-public nftables
   (package
     (name "nftables")
-    (version "0.9.5")
+    (version "0.9.6")
     (source
      (origin
        (method url-fetch)
@@ -6091,7 +6175,7 @@ used by nftables.")
                   (string-append "https://www.nftables.org/projects/nftables"
                                  "/files/nftables-" version ".tar.bz2")))
        (sha256
-        (base32 "05kyri19q776mymkbcxq3786l6nrf4xg7f3n8my0aw63mdz9bhgj"))))
+        (base32 "0vmn6xwqa1nq6crfxshh049b199d0aj6hfgin7k068xhibzgvmk8"))))
     (build-system gnu-build-system)
     (arguments `(#:configure-flags
                  '("--disable-man-doc"))) ; FIXME: Needs docbook2x.
@@ -6120,7 +6204,7 @@ userspace queueing component and the logging subsystem.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/proot-me/PRoot.git")
+             (url "https://github.com/proot-me/PRoot")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6289,13 +6373,14 @@ NexGen, Rise, and SiS CPUs.")
     (version "0.5")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/JasonFerrara/jmtpfs/archive/v"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version ".tar.gz"))
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JasonFerrara/jmtpfs")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "10v8d7mmx8b8123x5f9y9zaaa428ms6wkngwn2ra71n5a53wrjn0"))))
+          "1pm68agkhrwgrplrfrnbwdcvx5lrivdmqw8pb5gdmm3xppnryji1"))))
     (build-system gnu-build-system)
     (inputs
      `(("file" ,file)
@@ -6316,12 +6401,13 @@ the MTP device as a file system.")
    (version "0.51")
    (source
     (origin
-     (method url-fetch)
-     (uri (string-append "https://github.com/jamesodhunt/procenv/archive/"
-                         version ".tar.gz"))
-     (file-name (string-append name "-" version ".tar.gz"))
+     (method git-fetch)
+     (uri (git-reference
+            (url "https://github.com/jamesodhunt/procenv")
+            (commit version)))
+     (file-name (git-file-name name version))
      (sha256
-      (base32 "1javw97yw0qvjmj14js8vw6nsfyf2xc0kfiyq5f2hsp0553w2cdq"))))
+      (base32 "1ilrsw1rc85w29mkbkmm5n5w427gapv43yrjzvkb4kc9xhscgdjn"))))
    (build-system gnu-build-system)
    (arguments `(#:configure-flags '("--disable-silent-rules")))
    (native-inputs `(("groff" ,groff) ; for tests
@@ -6335,7 +6421,7 @@ the MTP device as a file system.")
 itself and its environment as possible.  It can be used as a test
 tool, to understand the type of environment a process runs in, and for
 comparing system environments.")
-   (home-page "http://github.com/jamesodhunt/procenv/")
+   (home-page "https://github.com/jamesodhunt/procenv/")
    (license license:gpl3+)))
 
 (define-public libfabric
@@ -6561,7 +6647,7 @@ interface to this kernel feature.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dgraziotin/mbpfan.git")
+             (url "https://github.com/dgraziotin/mbpfan")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6596,7 +6682,7 @@ privileges.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/intel/opa-psm2.git")
+                    (url "https://github.com/intel/opa-psm2")
                     (commit (string-append "PSM2_" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6714,7 +6800,7 @@ management tools in userspace.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vishvananda/netlink.git")
+                    (url "https://github.com/vishvananda/netlink")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6786,7 +6872,7 @@ file systems.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jeremie-koenig/genext2fs.git")
+                    (url "https://github.com/jeremie-koenig/genext2fs")
                     ;; 1.4.1-3 had a VCS tag but 1.4.1-4 doesn't.
                     (commit "9ee43894634998b0b2b309d636f25c64314c9421")))
               (file-name (git-file-name name version))
@@ -6840,12 +6926,18 @@ the superuser to make device nodes.")
             (substitute* "Makefile"
              (("/bin/sh") (which "sh")))
             #t))
-        (add-after 'unpack 'patch-getopt
+        (add-after 'unpack 'patch-script
           (lambda*  (#:key inputs #:allow-other-keys)
             (substitute* "scripts/fakeroot.in"
              (("getopt")
               (string-append (assoc-ref inputs "util-linux")
-                             "/bin/getopt")))
+                             "/bin/getopt"))
+             (("sed")
+              (string-append (assoc-ref inputs "sed")
+                             "/bin/sed"))
+             (("cut")
+              (string-append (assoc-ref inputs "coreutils")
+                             "/bin/cut")) )
             #t))
         (add-before 'configure 'setenv
           (lambda _
@@ -6882,7 +6974,9 @@ the superuser to make device nodes.")
        ("xz" ,xz))) ; for the tests
     (inputs
      `(("libcap" ,libcap/next)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux)
+       ("sed" ,sed)
+       ("coreutils" ,coreutils)))
     (synopsis "Provides a fake root environment")
     (description "@command{fakeroot} runs a command in an environment where
 it appears to have root privileges for file manipulation. This is useful
@@ -6931,7 +7025,7 @@ set as @code{LD_PRELOAD} to override the C library file system functions.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/linuxwacom/input-wacom.git")
+                    (url "https://github.com/linuxwacom/input-wacom")
                     (commit (string-append "input-wacom-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -7127,3 +7221,50 @@ cache data store that is used by network file systems such as @code{AFS} and
 @code{NFS} to cache data locally on disk.  The content of the cache is
 persistent over reboots.")
     (license license:gpl2+)))
+
+(define-public libbpf
+  (package
+    (name "libbpf")
+    (version "0.0.9")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/libbpf/libbpf")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "18l0gff7nm841mwhr7bc7x863xcyvwh58zl7mc0amnsjqlbrvqg7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libelf" ,libelf)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f ; No tests
+       #:make-flags
+       (list
+        (string-append "PREFIX=''")
+        (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+        (string-append "LIBDIR=/lib")
+        (string-append
+         "CC=" (assoc-ref %build-inputs "gcc") "/bin/gcc"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "scripts/check-reallocarray.sh"
+               (("/bin/rm" rm)
+                (string-append (assoc-ref inputs "coreutils") rm)))
+             (chdir "src")
+             #t)))))
+    (home-page "https://github.com/libbpf/libbpf")
+    (synopsis "BPF CO-RE (Compile Once – Run Everywhere)")
+    (description
+     "Libbpf supports building BPF CO-RE-enabled applications, which, in
+contrast to BCC, do not require the Clang/LLVM runtime or linux kernel
+headers.")
+    (license `(,license:lgpl2.1 ,license:bsd-2))))
diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm
index 510bc032f8..2b0cea16ab 100644
--- a/gnu/packages/lirc.scm
+++ b/gnu/packages/lirc.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -92,7 +93,7 @@
        ("linux-headers" ,linux-libre-headers)
        ("alsa-lib" ,alsa-lib)
        ("python" ,python)))
-    (home-page "http://www.lirc.org/")
+    (home-page "https://www.lirc.org/")
     (synopsis "Linux Infrared Remote Control")
     (description
      "LIRC allows computers to send and receive IR signals of many commonly
@@ -114,7 +115,7 @@ on just one button press.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tompreston/python-lirc.git")
+               (url "https://github.com/tompreston/python-lirc")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index c89ad4aef9..985ab05af7 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -54,6 +54,8 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages enchant)
+  #:use-module (gnu packages fonts)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages imagemagick)
@@ -74,30 +76,29 @@
   #:use-module (srfi srfi-19))
 
 (define-public sbcl-alexandria
-  (let ((commit "5e5c7d83090cc0fbf32c4628362ac3ce2c50dc59"))
-    (package
-      (name "sbcl-alexandria")
-      (version "1.0.1")
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
-               (commit commit)))
-         (sha256
-          (base32
-           "010w8829dq28jf8ajfzas9nfvpxa5bal04mg299xq6y9spihc2iz"))
-         (file-name (git-file-name name version))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-       `(("rt" ,sbcl-rt)))
-      (synopsis "Collection of portable utilities for Common Lisp")
-      (description
-       "Alexandria is a collection of portable utilities.  It does not contain
+  (package
+   (name "sbcl-alexandria")
+   (version "1.1")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
+           (commit (string-append "v" version))))
+     (sha256
+      (base32
+       "1zanb3xa98js0i66iqcmx3gp123p1m2d1fxn8d7bfzyfad5f6xn2"))
+     (file-name (git-file-name name version))))
+   (build-system asdf-build-system/sbcl)
+   (native-inputs
+    `(("rt" ,sbcl-rt)))
+   (synopsis "Collection of portable utilities for Common Lisp")
+   (description
+    "Alexandria is a collection of portable utilities.  It does not contain
 conceptual extensions to Common Lisp.  It is conservative in scope, and
 portable between implementations.")
-      (home-page "https://common-lisp.net/project/alexandria/")
-      (license license:public-domain))))
+   (home-page "https://common-lisp.net/project/alexandria/")
+   (license license:public-domain)))
 
 (define-public cl-alexandria
   (sbcl-package->cl-source-package sbcl-alexandria))
@@ -147,7 +148,7 @@ In order to make one or several variables file-local, use the macros
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sionescu/fiveam.git")
+             (url "https://github.com/sionescu/fiveam")
              (commit (string-append "v" version))))
        (file-name (git-file-name "fiveam" version))
        (sha256
@@ -173,14 +174,14 @@ interactive development model in mind.")
 (define-public sbcl-bordeaux-threads
   (package
     (name "sbcl-bordeaux-threads")
-    (version "0.8.7")
+    (version "0.8.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sionescu/bordeaux-threads.git")
+                    (url "https://github.com/sionescu/bordeaux-threads")
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "1whpfmyxp2fsw6viqj45fqgsifgr534c575bfh5vaqw5m84b6alp"))
+               (base32 "19i443fz3488v1pbbr9x24y8h8vlyhny9vj6c9jk5prm702awrp6"))
               (file-name
                (git-file-name "bordeaux-threads" version))))
     (inputs `(("alexandria" ,sbcl-alexandria)))
@@ -210,7 +211,7 @@ support.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
+           (url "https://github.com/trivial-gray-streams/trivial-gray-streams")
            (commit commit)))
          (sha256
           (base32 "0b1pxlccmnagk9cbh4cy8s5k66g3x0gwib5shjwr24xvrji6lp94"))
@@ -241,7 +242,7 @@ thin compatibility layer for gray streams.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/joaotavora/fiasco.git")
+               (url "https://github.com/joaotavora/fiasco")
                (commit commit)))
          (file-name (git-file-name "fiasco" version))
          (sha256
@@ -275,7 +276,7 @@ logical continuation of Stefil.  It focuses on interactive debugging.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/edicl/flexi-streams.git")
+             (url "https://github.com/edicl/flexi-streams")
              (commit (string-append "v" version))))
        (file-name (git-file-name "flexi-streams" version))
        (sha256
@@ -312,7 +313,7 @@ streams which are similar to string streams.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/edicl/cl-ppcre.git")
+             (url "https://github.com/edicl/cl-ppcre")
              (commit (string-append "v" version))))
        (file-name (git-file-name "cl-ppcre" version))
        (sha256
@@ -339,7 +340,7 @@ compatible with ANSI-compliant Common Lisp implementations.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/edicl/cl-unicode.git")
+                    (url "https://github.com/edicl/cl-unicode")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -383,7 +384,7 @@ ANSI-compliant Common Lisp implementations.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/xach/zpb-ttf.git")
+             (url "https://github.com/xach/zpb-ttf")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -496,7 +497,7 @@ anti-aliased vectorial paths.")))
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rpav/spatial-trees.git")
+               (url "https://github.com/rpav/spatial-trees")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -533,7 +534,7 @@ spatially-extended data.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/robert-strandh/Flexichain.git")
+               (url "https://github.com/robert-strandh/Flexichain")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -565,7 +566,7 @@ a sequence (or chain) of such elements.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mbattyani/cl-pdf.git")
+               (url "https://github.com/mbattyani/cl-pdf")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -597,7 +598,7 @@ files.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/sharplispers/clx.git")
+         (url "https://github.com/sharplispers/clx")
          (commit version)))
        (sha256
         (base32
@@ -675,8 +676,9 @@ antialiased TrueType font rendering using CLX and XRender extension.")
 ;; we expose the union of these as `sbcl-slynk'.  The following variable
 ;; describes the base module.
 (define sbcl-slynk-boot0
-  (let ((revision "2")
-        (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
+  (let ((revision "3")
+        ;; Update together with emacs-sly.
+        (commit "6a2f543cb21f14104c2253af5a1427b884a987ae"))
     (package
       (name "sbcl-slynk-boot0")
       (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
@@ -685,10 +687,10 @@ antialiased TrueType font rendering using CLX and XRender extension.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/joaotavora/sly.git")
+           (url "https://github.com/joaotavora/sly")
            (commit commit)))
          (sha256
-          (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
+          (base32 "0wbpg9p9yg2hd62l15pvy50fk3hndq5zzyqlyyf04g368s895144"))
          (file-name (string-append "slynk-" version "-checkout"))
          (modules '((guix build utils)
                     (ice-9 ftw)))
@@ -700,9 +702,7 @@ antialiased TrueType font rendering using CLX and XRender extension.")
                (("\\.\\./contrib")
                 "contrib")
                (("\\(defsystem :slynk/util")
-                "(defsystem :slynk/util :depends-on (:slynk)")
-               ((":depends-on \\(:slynk :slynk/util\\)")
-                ":depends-on (:slynk :slynk-util)"))
+                "(defsystem :slynk/util :depends-on (:slynk)"))
              (substitute* "contrib/slynk-trace-dialog.lisp"
                (("\\(slynk::reset-inspector\\)") ; Causes problems on load
                 "nil"))
@@ -728,7 +728,7 @@ antialiased TrueType font rendering using CLX and XRender extension.")
       (synopsis "Common Lisp IDE for Emacs")
       (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
 It also features a completely redesigned REPL based on Emacs's own
-full-featured comint.el, live code annotations, and a consistent interactive
+full-featured @code{comint-mode}, live code annotations, and a consistent interactive
 button interface.  Everything can be copied to the REPL.  One can create
 multiple inspectors with independent history.")
       (home-page "https://github.com/joaotavora/sly")
@@ -1045,7 +1045,7 @@ It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mishoo/cl-uglify-js.git")
+               (url "https://github.com/mishoo/cl-uglify-js")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1166,7 +1166,7 @@ utilities that make it even easier to manipulate text in Common Lisp.  It has
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/trivial-features/trivial-features.git")
+               (url "https://github.com/trivial-features/trivial-features")
                (commit commit)))
          (file-name (git-file-name "trivial-features" version))
          (sha256
@@ -1252,7 +1252,7 @@ with a focus on interactive development.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cl-babel/babel.git")
+               (url "https://github.com/cl-babel/babel")
                (commit commit)))
          (file-name (git-file-name "babel" version))
          (sha256
@@ -1714,7 +1714,7 @@ also be supported.")
 (define-public sbcl-ironclad
   (package
     (name "sbcl-ironclad")
-    (version "0.49")
+    (version "0.50")
     (source
      (origin
        (method git-fetch)
@@ -1722,7 +1722,7 @@ also be supported.")
              (url "https://github.com/sharplispers/ironclad/")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "0kbzqg2aasrhjwy3nrzy2ddy809n1j045w4qkyc3r2syqd203d4q"))
+        (base32 "0k4bib9mbrzalbl9ivkw4a7g4c7bbad1l5jw4pzkifqszy2swkr5"))
        (file-name (git-file-name name version))))
     (build-system asdf-build-system/sbcl)
     (native-inputs
@@ -1730,8 +1730,7 @@ also be supported.")
      `(("rt" ,sbcl-rt)))
     (inputs
      `(("bordeaux-threads" ,sbcl-bordeaux-threads)
-       ("flexi-streams" ,sbcl-flexi-streams)
-       ("trivial-garbage" ,sbcl-trivial-garbage)))
+       ("flexi-streams" ,sbcl-flexi-streams)))
     (synopsis "Cryptographic toolkit written in Common Lisp")
     (description
      "Ironclad is a cryptography library written entirely in Common Lisp.
@@ -1757,7 +1756,7 @@ streams, support is included for convenient stream wrappers.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/melisgl/named-readtables.git")
+               (url "https://github.com/melisgl/named-readtables")
                (commit commit)))
          (sha256
           (base32 "01l4831m7k84qvhzyx0qgdl50isr4zmp40qf6dfq2iqcaj8y4h3n"))
@@ -2523,7 +2522,7 @@ non-consing thread safe queues and fibonacci priority queues.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cffi/cffi.git")
+             (url "https://github.com/cffi/cffi")
              (commit (string-append "v" version))))
        (file-name (git-file-name "cffi-bootstrap" version))
        (sha256
@@ -2808,7 +2807,7 @@ precisely controls the behavior of the parser via Common Lisp restarts.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/trivial-garbage/trivial-garbage.git")
+             (url "https://github.com/trivial-garbage/trivial-garbage")
              (commit (string-append "v" version))))
        (file-name (git-file-name "trivial-garbage" version))
        (sha256
@@ -3136,10 +3135,10 @@ is a library for creating graphical user interfaces.")
   (sbcl-package->cl-source-package sbcl-cl-cffi-gtk))
 
 (define-public sbcl-cl-webkit
-  (let ((commit "f93cb9697e8813068795fe4dc39ac950d814102d"))
+  (let ((commit "6c905a5550b58a5b7602da5a087d7dafc5337122"))
     (package
       (name "sbcl-cl-webkit")
-      (version (git-version "2.4" "3" commit))
+      (version (git-version "2.4" "4" commit))
       (source
        (origin
          (method git-fetch)
@@ -3149,7 +3148,7 @@ is a library for creating graphical user interfaces.")
          (file-name (git-file-name "cl-webkit" version))
          (sha256
           (base32
-           "1sjcw08kjpd5h83sms7zcq2nymddjygk9hm2rpgzrl524an9ziwc"))))
+           "0017ijjflqqbgbj5bf7ffkyw5idhxc0ggly2qh5igf3kz886p9rh"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("cffi" ,sbcl-cffi)
@@ -3524,7 +3523,7 @@ client and server.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gwkkwg/trivial-backtrace.git")
+             (url "https://github.com/gwkkwg/trivial-backtrace")
              (commit commit)))
        (file-name (git-file-name "trivial-backtrace" version))
        (sha256
@@ -3569,7 +3568,7 @@ backtrace portably.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jdz/rfc2388.git")
+             (url "https://github.com/jdz/rfc2388")
              (commit commit)))
        (file-name (git-file-name "rfc2388" version))
        (sha256
@@ -3592,11 +3591,13 @@ process form data posted with HTTP POST method using enctype
     (version "2.0.4")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "https://github.com/pmai/md5/archive/release-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/pmai/md5")
+              (commit (string-append "release-" version))))
+       (file-name (git-file-name "md5" version))
        (sha256
-        (base32 "19yl9n0pjdz5gw4qi711lka97xcd9f81ylg434hk7jwn9f2s6w11"))))
+        (base32 "1waqxzm7vlc22n92hv8r27anlvvjkkh9slhrky1ww7mdx4mmxwb8"))))
     (build-system asdf-build-system/sbcl)
     (home-page "https://github.com/pmai/md5")
     (synopsis
@@ -3619,7 +3620,7 @@ RFC 1321 by R. Rivest, published April 1992.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cl-plus-ssl/cl-plus-ssl.git")
+               (url "https://github.com/cl-plus-ssl/cl-plus-ssl")
                (commit commit)))
          (file-name (git-file-name "cl+ssl" version))
          (sha256
@@ -3728,7 +3729,7 @@ encoding table that uses only URI-compatible characters.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/edicl/chunga.git")
+              (url "https://github.com/edicl/chunga")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3757,7 +3758,7 @@ defined in RFC 2616.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/edicl/cl-who.git")
+               (url "https://github.com/edicl/cl-who")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3789,7 +3790,7 @@ as good or bad as the next one.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/froydnj/chipz.git")
+               (url "https://github.com/froydnj/chipz")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3821,7 +3822,7 @@ the format used by the popular compression tool bzip2.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/edicl/drakma.git")
+             (url "https://github.com/edicl/drakma")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3861,7 +3862,7 @@ sockets, SSL, continuable uploads, file uploads, cookies, and more.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/edicl/hunchentoot.git")
+             (url "https://github.com/edicl/hunchentoot")
              (commit (string-append "v" version))))
        (file-name (git-file-name "hunchentoot" version))
        (sha256
@@ -3901,7 +3902,7 @@ connections (keep-alive), and SSL.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/m2ym/trivial-types.git")
+             (url "https://github.com/m2ym/trivial-types")
              (commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88")))
        (file-name (git-file-name name version))
        (sha256
@@ -3925,7 +3926,7 @@ PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/m2ym/cl-syntax.git")
+             (url "https://github.com/m2ym/cl-syntax")
              (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
        (file-name (git-file-name "cl-syntax" version))
        (sha256
@@ -3955,7 +3956,7 @@ PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/m2ym/cl-annot.git")
+               (url "https://github.com/m2ym/cl-annot")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4088,7 +4089,7 @@ addition, removal, and random selection.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/fukamachi/quri.git")
+               (url "https://github.com/fukamachi/quri")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4124,7 +4125,7 @@ Lisp. It is intended to be a replacement of PURI.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/myway.git")
+             (url "https://github.com/fukamachi/myway")
              (commit commit)))
        (file-name (git-file-name "myway" version))
        (sha256
@@ -4267,7 +4268,7 @@ Lisp.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sionescu/static-vectors.git")
+             (url "https://github.com/sionescu/static-vectors")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4301,7 +4302,7 @@ memory.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wlbr/cl-marshal.git")
+             (url "https://github.com/wlbr/cl-marshal")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -4328,7 +4329,7 @@ Only minimal changes required to make your CLOS objects serializable.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/rpav/CheckL.git")
+               (url "https://github.com/rpav/CheckL")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4366,7 +4367,7 @@ against the last run.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rpav/fast-io.git")
+             (url "https://github.com/rpav/fast-io")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -4405,7 +4406,7 @@ streams (though primarily the former, while wrapping the latter).")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Rudolph-Miller/jonathan.git")
+             (url "https://github.com/Rudolph-Miller/jonathan")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -4517,7 +4518,7 @@ reset to 0 and you're able to read it again.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack-request" version))
        (sha256
@@ -4558,7 +4559,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dlowe-net/local-time.git")
+             (url "https://github.com/dlowe-net/local-time")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -4593,7 +4594,7 @@ Long Painful History of Time\".")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -4634,7 +4635,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack-component" version))
        (sha256
@@ -4670,7 +4671,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack-util" version))
        (sha256
@@ -4708,7 +4709,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack-middleware-backtrace" version))
        (sha256
@@ -4744,7 +4745,7 @@ performance and simplicity in mind.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Shinmera/trivial-mimes.git")
+               (url "https://github.com/Shinmera/trivial-mimes")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4791,7 +4792,7 @@ mime-type of a file.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack-middleware-static" version))
        (sha256
@@ -4831,7 +4832,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/lack.git")
+             (url "https://github.com/fukamachi/lack")
              (commit commit)))
        (file-name (git-file-name "lack" version))
        (sha256
@@ -4868,7 +4869,7 @@ performance and simplicity in mind.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/fukamachi/ningle.git")
+               (url "https://github.com/fukamachi/ningle")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -4931,7 +4932,7 @@ performance and simplicity in mind.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/clack.git")
+             (url "https://github.com/fukamachi/clack")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -5027,7 +5028,7 @@ port within a range.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/tgutu/clunit.git")
+               (url "https://github.com/tgutu/clunit")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5060,7 +5061,7 @@ experience.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/bendudson/py4cl.git")
+               (url "https://github.com/bendudson/py4cl")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5159,7 +5160,7 @@ high-level way.  This library provides such operators.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/mcandre/cl-quickcheck.git")
+               (url "https://github.com/mcandre/cl-quickcheck")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5190,7 +5191,7 @@ high-level way.  This library provides such operators.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/snmsts/burgled-batteries3.git")
+               (url "https://github.com/snmsts/burgled-batteries3")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -5255,7 +5256,7 @@ CPython implementation of Python) and Common Lisp.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gwkkwg/metabang-bind.git")
+               (url "https://github.com/gwkkwg/metabang-bind")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6551,8 +6552,8 @@ number of other open source projects.
   (sbcl-package->ecl-package sbcl-s-sysdeps))
 
 (define-public sbcl-cl-prevalence
-  (let ((commit "da3ed6c4594b1c2fca90c178c1993973c4bf16c9")
-        (revision "2"))
+  (let ((commit "1e5f030d94237b33d20947a2f6c194abedb10727")
+        (revision "3"))
     (package
       (name "sbcl-cl-prevalence")
       (build-system asdf-build-system/sbcl)
@@ -6567,10 +6568,12 @@ number of other open source projects.
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0bq905hv1626dl6b7s0zn4lbdh608g1pxaljl1fda6pwp9hmj95a"))))
+           "13yb8lv2aap5wvqa6hw7ms31xnax58f4m2nxifkssrzkb2w2qf29"))))
       (inputs
        `(("s-sysdeps" ,sbcl-s-sysdeps)
          ("s-xml" ,sbcl-s-xml)))
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
       (synopsis "Implementation of object prevalence for Common Lisp")
       (description "This Common Lisp library implements object prevalence (see
 @url{https://en.wikipedia.org/wiki/System_prevalence}).  It allows
@@ -6632,7 +6635,7 @@ programming style and the efficiency of an iterative programming style.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jwiegley/periods.git")
+               (url "https://github.com/jwiegley/periods")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6685,7 +6688,7 @@ providing functions compatible with the series Common Lisp library.")))
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gwkkwg/metatilities-base.git")
+               (url "https://github.com/gwkkwg/metatilities-base")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6717,7 +6720,7 @@ which implements a set of utilities.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/gwkkwg/cl-containers.git")
+               (url "https://github.com/gwkkwg/cl-containers")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6806,7 +6809,7 @@ on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/jwiegley/cambl.git")
+               (url "https://github.com/jwiegley/cambl")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6864,7 +6867,7 @@ purpose of financial calculations."))))
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/ledger/cl-ledger.git")
+               (url "https://github.com/ledger/cl-ledger")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6909,7 +6912,7 @@ system.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/glv2/bst.git")
+               (url "https://github.com/glv2/bst")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -6940,7 +6943,7 @@ can contain any kind of values.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/glv2/cl-octet-streams.git")
+             (url "https://github.com/glv2/cl-octet-streams")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -6975,7 +6978,7 @@ cl-plumbing libraries.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/glv2/cl-lzlib.git")
+               (url "https://github.com/glv2/cl-lzlib")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7020,7 +7023,7 @@ compression/decompression using bindings to the lzlib C library.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/zkat/chanl.git")
+               (url "https://github.com/zkat/chanl")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7055,7 +7058,7 @@ threads.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/skypher/cl-store.git")
+               (url "https://github.com/skypher/cl-store")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7269,8 +7272,8 @@ implementation specific equivalent.")
   (sbcl-package->ecl-package sbcl-trivial-macroexpand-all))
 
 (define-public sbcl-serapeum
-  (let ((commit "64f0c4a161bbbda7c275012ca1415b4293b9e169")
-        (revision "1"))
+  (let ((commit "a2ca90cbdcb9f76c2822286110c7abe9ba5b76c2")
+        (revision "2"))
     (package
       (name "sbcl-serapeum")
       (version (git-version "0.0.0" revision commit))
@@ -7284,7 +7287,7 @@ implementation specific equivalent.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0djnj0py8hdjnk5j6shjq2kbmyxqd5sw79cilcfmpfz4dzjdgkx9"))))
+           "1lrk2kf7qh5g6f8xvyg8wf89frzb5mw6m1jzgy46jy744f459i8q"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("alexandria" ,sbcl-alexandria)
@@ -7364,7 +7367,7 @@ Clojure, as well as several expansions on the idea.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/glv2/simple-parallel-tasks.git")
+               (url "https://github.com/glv2/simple-parallel-tasks")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7428,7 +7431,7 @@ binary heap and a Fibonacci heap) as well as an efficient priority queue.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/eschulte/curry-compose-reader-macros.git")
+           (url "https://github.com/eschulte/curry-compose-reader-macros")
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7459,7 +7462,7 @@ of function partial application and composition.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/phmarek/yason.git")
+             (url "https://github.com/phmarek/yason")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -7536,7 +7539,7 @@ interactive development.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/eschulte/graph.git")
+           (url "https://github.com/eschulte/graph")
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7639,7 +7642,7 @@ results.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/Shinmera/documentation-utils.git")
+           (url "https://github.com/Shinmera/documentation-utils")
            (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -7977,7 +7980,7 @@ intending to program in Lisp.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/edicl/cl-interpol.git")
+               (url "https://github.com/edicl/cl-interpol")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8017,7 +8020,7 @@ doesn't support them.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/AccelerationNet/symbol-munger.git")
+               (url "https://github.com/AccelerationNet/symbol-munger")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8056,7 +8059,7 @@ and camel-case rules.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/AccelerationNet/lisp-unit2.git")
+               (url "https://github.com/AccelerationNet/lisp-unit2")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8089,7 +8092,7 @@ by Chris Riesbeck.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/AccelerationNet/symbol-munger.git")
+               (url "https://github.com/AccelerationNet/symbol-munger")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8145,7 +8148,7 @@ and camel-case rules.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/AccelerationNet/cl-csv.git")
+               (url "https://github.com/AccelerationNet/cl-csv")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8184,7 +8187,7 @@ from/to strings, streams and files.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/sellout/external-program.git")
+               (url "https://github.com/sellout/external-program")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -8220,7 +8223,7 @@ sacrificing much in the way of power.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ghollisjr/cl-ana.git")
+             (url "https://github.com/ghollisjr/cl-ana")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -9301,7 +9304,7 @@ visualization.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/sharplispers/archive.git")
+                      (url "https://github.com/sharplispers/archive")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -9469,7 +9472,7 @@ transforming Common Lisp code to continuation passing style.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/takagi/cl-coroutine.git")
+               (url "https://github.com/takagi/cl-coroutine")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9516,7 +9519,7 @@ continuations of the @code{cl-cont} library.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orthecreedence/vom.git")
+               (url "https://github.com/orthecreedence/vom")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9547,7 +9550,7 @@ has a small codebase that's easy to understand and use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orthecreedence/cl-libuv.git")
+               (url "https://github.com/orthecreedence/cl-libuv")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9597,7 +9600,7 @@ has a small codebase that's easy to understand and use.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orthecreedence/cl-async.git")
+               (url "https://github.com/orthecreedence/cl-async")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9725,7 +9728,7 @@ Common Lisp.  It uses the libuv library as backend.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orthecreedence/blackbird.git")
+               (url "https://github.com/orthecreedence/blackbird")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9760,7 +9763,7 @@ the successor to the now-deprecated cl-async-future project.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orthecreedence/cl-async-future.git")
+               (url "https://github.com/orthecreedence/cl-async-future")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9795,7 +9798,7 @@ to cl-async.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/thezerobit/green-threads.git")
+               (url "https://github.com/thezerobit/green-threads")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9843,7 +9846,7 @@ possible.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/hargettp/cl-base32.git")
+               (url "https://github.com/hargettp/cl-base32")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9874,7 +9877,7 @@ defined in RFC4648.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/glv2/cl-z85.git")
+               (url "https://github.com/glv2/cl-z85")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -9905,7 +9908,7 @@ ZeroMQ.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/herth/ltk.git")
+             (url "https://github.com/herth/ltk")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9991,7 +9994,7 @@ from the one running the Lisp program by using a TCP connection.")))
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/djr7C4/cl-lex.git")
+               (url "https://github.com/djr7C4/cl-lex")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10093,7 +10096,7 @@ the library does not depend on X11).
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/sharplispers/cl-jpeg.git")
+               (url "https://github.com/sharplispers/cl-jpeg")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10173,7 +10176,7 @@ ones.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/xach/salza2.git")
+             (url "https://github.com/xach/salza2")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10203,7 +10206,7 @@ respectively.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Ramarren/png-read.git")
+               (url "https://github.com/Ramarren/png-read")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10232,7 +10235,7 @@ respectively.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/xach/zpng.git")
+             (url "https://github.com/xach/zpng")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10259,7 +10262,7 @@ respectively.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jnjcc/cl-qrencode.git")
+             (url "https://github.com/jnjcc/cl-qrencode")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -10292,7 +10295,7 @@ them as PNG files.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/hdfgroup/hdf5-cffi.git")
+               (url "https://github.com/hdfgroup/hdf5-cffi")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10353,7 +10356,7 @@ them as PNG files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lvaruzza/cl-randist.git")
+             (url "https://github.com/lvaruzza/cl-randist")
              (commit "f088a54b540a7adefab7c04094a6103f9edda3d0")))
        (file-name (git-file-name name version))
        (sha256
@@ -10385,7 +10388,7 @@ generation functions from the GSL library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Shinmera/float-features.git")
+             (url "https://github.com/Shinmera/float-features")
              (commit "d3ef60181635b0849aa28cfc238053b7ca4644b0")))
        (file-name (git-file-name name version))
        (sha256
@@ -10419,7 +10422,7 @@ covered by the Common Lisp standard.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/AccelerationNet/function-cache.git")
+             (url "https://github.com/AccelerationNet/function-cache")
              (commit "6a5ada401e57da2c8abf046f582029926e61fce8")))
        (file-name (git-file-name name version))
        (sha256
@@ -10461,7 +10464,7 @@ caching based on arguments (an expanded form of memoization).")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/guicho271828/type-r.git")
+               (url "https://github.com/guicho271828/type-r")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10498,7 +10501,7 @@ the elements in compound type specifier, e.g. @code{dimensions} in
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/guicho271828/trivialib.type-unify.git")
+               (url "https://github.com/guicho271828/trivialib.type-unify")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10537,7 +10540,7 @@ correctly.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/numcl/specialized-function.git")
+               (url "https://github.com/numcl/specialized-function")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10579,7 +10582,7 @@ code.  The main target of this macro is speed.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/numcl/constantfold.git")
+               (url "https://github.com/numcl/constantfold")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10617,7 +10620,7 @@ additional form that is considered as a candidate for a constant.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/numcl/gtype.git")
+               (url "https://github.com/numcl/gtype")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10657,7 +10660,7 @@ type correctness in Common Lisp.  It is based on CLtL2 extensions.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/numcl/numcl.git")
+               (url "https://github.com/numcl/numcl")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10704,7 +10707,7 @@ and usefulness, not speed.  Track the progress at
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/orivej/pzmq.git")
+               (url "https://github.com/orivej/pzmq")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10751,7 +10754,7 @@ lightweight messaging kernel.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/Shinmera/clss.git")
+           (url "https://github.com/Shinmera/clss")
            (commit commit)))
          (sha256
           (base32 "0la4dbcda78x29szanylccrsljqrn9d1mhh569sqkyp44ni5fv91"))
@@ -10783,7 +10786,7 @@ selectors.  It makes use of the Plump-DOM and is used by lQuery.")
          (method git-fetch)
          (uri
           (git-reference
-           (url "https://github.com/Shinmera/lquery.git")
+           (url "https://github.com/Shinmera/lquery")
            (commit commit)))
          (sha256
           (base32 "0520mcpxc2d6fdm8z61arpgd2z38kan7cf06qs373n5r64rakz6w"))
@@ -10822,7 +10825,7 @@ approach to templating.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/hackinghat/cl-mysql.git")
+               (url "https://github.com/hackinghat/cl-mysql")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10864,7 +10867,7 @@ approach to templating.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/marijnh/Postmodern.git")
+               (url "https://github.com/marijnh/Postmodern")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -10983,7 +10986,7 @@ foreign libraries.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/cl-dbi.git")
+             (url "https://github.com/fukamachi/cl-dbi")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -11504,7 +11507,7 @@ accompaniment to the standard ANSI facilities.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/laynor/clx-xembed.git")
+               (url "https://github.com/laynor/clx-xembed")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11567,7 +11570,7 @@ Streams in ICDE’05.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/deadtrickster/prometheus.cl.git")
+             (url "https://github.com/deadtrickster/prometheus.cl")
              (commit "7352b92296996ff383503e19bdd3bcea30409a15")))
        (file-name (git-file-name name version))
        (sha256
@@ -11679,7 +11682,7 @@ Streams in ICDE’05.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/dardoria/uuid.git")
+               (url "https://github.com/dardoria/uuid")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11711,7 +11714,7 @@ Streams in ICDE’05.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/Shinmera/dissect.git")
+               (url "https://github.com/Shinmera/dissect")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11745,7 +11748,7 @@ and active restarts.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fukamachi/rove.git")
+             (url "https://github.com/fukamachi/rove")
              (commit "f3695db08203bf26f3b861dc22ac0f4257d3ec21")))
        (file-name (git-file-name name version))
        (sha256
@@ -11779,7 +11782,7 @@ This is intended to be a successor of Prove.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/death/exponential-backoff.git")
+               (url "https://github.com/death/exponential-backoff")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11809,7 +11812,7 @@ learn about each of the parameters.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/fukamachi/sxql.git")
+               (url "https://github.com/fukamachi/sxql")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11848,7 +11851,7 @@ learn about each of the parameters.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/lmj/1am.git")
+               (url "https://github.com/lmj/1am")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11878,7 +11881,7 @@ learn about each of the parameters.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/telephil/cl-ascii-table.git")
+               (url "https://github.com/telephil/cl-ascii-table")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11905,7 +11908,7 @@ tables.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/SahilKang/cl-rdkafka.git")
+             (url "https://github.com/SahilKang/cl-rdkafka")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12121,3 +12124,1207 @@ implementations of those protocols for different purposes.")
 
 (define-public cl-cluffer
   (sbcl-package->cl-source-package sbcl-cluffer))
+
+(define-public sbcl-cl-libsvm-format
+  (let ((commit "3300f84fd8d9f5beafc114f543f9d83417c742fb")
+        (revision "0"))
+    (package
+      (name "sbcl-cl-libsvm-format")
+      (version (git-version "0.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/masatoi/cl-libsvm-format")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0284aj84xszhkhlivaigf9qj855fxad3mzmv3zfr0qzb5k0nzwrg"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("prove" ,sbcl-prove)
+         ("prove-asdf" ,sbcl-prove-asdf)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)))
+      (synopsis "LibSVM data format reader for Common Lisp")
+      (description
+       "This Common Lisp library provides a fast reader for data in LibSVM
+format.")
+      (home-page "https://github.com/masatoi/cl-libsvm-format")
+      (license license:expat))))
+
+(define-public cl-libsvm-format
+  (sbcl-package->cl-source-package sbcl-cl-libsvm-format))
+
+(define-public ecl-cl-libsvm-format
+  (sbcl-package->ecl-package sbcl-cl-libsvm-format))
+
+(define-public sbcl-cl-online-learning
+  (let ((commit "fc7a34f4f161cd1c7dd747d2ed8f698947781423")
+        (revision "0"))
+    (package
+      (name "sbcl-cl-online-learning")
+      (version (git-version "0.5" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/masatoi/cl-online-learning")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "14x95rlg80ay5hv645ki57pqvy12v28hz4k1w0f6bsfi2rmpxchq"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("prove" ,sbcl-prove)
+         ("prove-asdf" ,sbcl-prove-asdf)))
+      (inputs
+       `(("cl-libsvm-format" ,sbcl-cl-libsvm-format)
+         ("cl-store" ,sbcl-cl-store)))
+      (arguments
+       `(;; FIXME: Tests pass but then the check phase crashes
+         #:tests? #f))
+      (synopsis "Online Machine Learning for Common Lisp")
+      (description
+       "This library contains a collection of machine learning algorithms for
+online linear classification written in Common Lisp.")
+      (home-page "https://github.com/masatoi/cl-online-learning")
+      (license license:expat))))
+
+(define-public cl-online-learning
+  (sbcl-package->cl-source-package sbcl-cl-online-learning))
+
+(define-public ecl-cl-online-learning
+  (sbcl-package->ecl-package sbcl-cl-online-learning))
+
+(define-public sbcl-cl-random-forest
+  (let ((commit "fedb36ce99bb6f4d7e3a7dd6d8b058f331308f91")
+        (revision "1"))
+    (package
+      (name "sbcl-cl-random-forest")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/masatoi/cl-random-forest")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0wqh4dxy5hrvm14jgyfypwhdw35f24rsksid4blz5a6l2z16rlmq"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("prove" ,sbcl-prove)
+         ("prove-asdf" ,sbcl-prove-asdf)
+         ("trivial-garbage" ,sbcl-trivial-garbage)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cl-libsvm-format" ,sbcl-cl-libsvm-format)
+         ("cl-online-learning" ,sbcl-cl-online-learning)
+         ("lparallel" ,sbcl-lparallel)))
+      (arguments
+       `(#:tests? #f)) ; The tests download data from the Internet
+      (synopsis "Random Forest and Global Refinement for Common Lisp")
+      (description
+       "CL-random-forest is an implementation of Random Forest for multiclass
+classification and univariate regression written in Common Lisp.  It also
+includes an implementation of Global Refinement of Random Forest.")
+      (home-page "https://github.com/masatoi/cl-random-forest")
+      (license license:expat))))
+
+(define-public cl-random-forest
+  (sbcl-package->cl-source-package sbcl-cl-random-forest))
+
+(define-public ecl-cl-random-forest
+  (sbcl-package->ecl-package sbcl-cl-random-forest))
+
+(define-public sbcl-bordeaux-fft
+  (let ((commit "4a1f5600cae59bdabcb32de4ee2d7d73a9450d6e")
+        (revision "0"))
+    (package
+      (name "sbcl-bordeaux-fft")
+      (version (git-version "1.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ahefner/bordeaux-fft")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0j584w6kq2k6r8lp2i14f9605rxhp3r15s33xs08iz1pndn6iwqf"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "http://vintage-digital.com/hefner/software/bordeaux-fft/")
+      (synopsis "Fast Fourier Transform for Common Lisp")
+      (description
+       "The Bordeaux-FFT library provides a reasonably efficient implementation
+of the Fast Fourier Transform and its inverse for complex-valued inputs, in
+portable Common Lisp.")
+      (license license:gpl2+))))
+
+(define-public cl-bordeaux-fft
+  (sbcl-package->cl-source-package sbcl-bordeaux-fft))
+
+(define-public ecl-bordeaux-fft
+  (sbcl-package->ecl-package sbcl-bordeaux-fft))
+
+(define-public sbcl-napa-fft3
+  (let ((commit "f2d9614c7167da327c9ceebefb04ff6eae2d2236")
+        (revision "0"))
+    (package
+      (name "sbcl-napa-fft3")
+      (version (git-version "0.0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/pkhuong/Napa-FFT3")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1hxjf599xgwm28gbryy7q96j9ys6hfszmv0qxpr5698hxnhknscp"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://github.com/pkhuong/Napa-FFT3")
+      (synopsis "Fast Fourier Transform routines in Common Lisp")
+      (description
+       "Napa-FFT3 provides Discrete Fourier Transform (DFT) routines, but also
+buildings blocks to express common operations that involve DFTs: filtering,
+convolutions, etc.")
+      (license license:bsd-3))))
+
+(define-public cl-napa-fft3
+  (sbcl-package->cl-source-package sbcl-napa-fft3))
+
+(define-public sbcl-cl-tga
+  (let ((commit "4dc2f7b8a259b9360862306640a07a23d4afaacc")
+        (revision "0"))
+    (package
+      (name "sbcl-cl-tga")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/fisxoj/cl-tga")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "03k3npmn0xd3fd2m7vwxph82av2xrfb150imqrinlzqmzvz1v1br"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://github.com/fisxoj/cl-tga")
+      (synopsis "TGA file loader for Common Lisp")
+      (description
+       "Cl-tga was written to facilitate loading @emph{.tga} files into OpenGL
+programs.  It's a very simple library, and, at the moment, only supports
+non-RLE encoded forms of the files.")
+      (license license:expat))))
+
+(define-public cl-tga
+  (sbcl-package->cl-source-package sbcl-cl-tga))
+
+(define-public ecl-cl-tga
+  (sbcl-package->ecl-package sbcl-cl-tga))
+
+(define-public sbcl-com.gigamonkeys.binary-data
+  (let ((commit "22e908976d7f3e2318b7168909f911b4a00963ee")
+        (revision "0"))
+    (package
+      (name "sbcl-com.gigamonkeys.binary-data")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/gigamonkey/monkeylib-binary-data")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "072v417vmcnvmyh8ddq9vmwwrizm7zwz9dpzi14qy9nsw8q649zw"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)))
+      (home-page "https://github.com/gigamonkey/monkeylib-binary-data")
+      (synopsis "Common Lisp library for reading and writing binary data")
+      (description
+       "This a Common Lisp library for reading and writing binary data.  It is
+based on code from chapter 24 of the book @emph{Practical Common Lisp}.")
+      (license license:bsd-3))))
+
+(define-public cl-com.gigamonkeys.binary-data
+  (sbcl-package->cl-source-package sbcl-com.gigamonkeys.binary-data))
+
+(define-public ecl-com.gigamonkeys.binary-data
+  (sbcl-package->ecl-package sbcl-com.gigamonkeys.binary-data))
+
+(define-public sbcl-deflate
+  (package
+    (name "sbcl-deflate")
+    (version "1.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pmai/Deflate")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jpdjnxh6cw2d8hk70r2sxn92is52s9b855irvwkdd777fdciids"))))
+    (build-system asdf-build-system/sbcl)
+    (home-page "https://github.com/pmai/Deflate")
+    (synopsis "Native deflate decompression for Common Lisp")
+    (description
+     "This library is an implementation of Deflate (RFC 1951) decompression,
+with optional support for ZLIB-style (RFC 1950) and gzip-style (RFC 1952)
+wrappers of deflate streams.  It currently does not handle compression.")
+    (license license:expat)))
+
+(define-public cl-deflate
+  (sbcl-package->cl-source-package sbcl-deflate))
+
+(define-public ecl-deflate
+  (sbcl-package->ecl-package sbcl-deflate))
+
+(define-public sbcl-skippy
+  (let ((commit "e456210202ca702c792292c5060a264d45e47090")
+        (revision "0"))
+    (package
+      (name "sbcl-skippy")
+      (version (git-version "1.3.12" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/xach/skippy")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1sxbn5nh24qpx9w64x8mhp259cxcl1x8p126wk3b91ijjsj7l5vj"))))
+      (build-system asdf-build-system/sbcl)
+      (home-page "https://xach.com/lisp/skippy/")
+      (synopsis "Common Lisp library for GIF images")
+      (description
+       "Skippy is a Common Lisp library to read and write GIF image files.")
+      (license license:bsd-2))))
+
+(define-public cl-skippy
+  (sbcl-package->cl-source-package sbcl-skippy))
+
+(define-public ecl-skippy
+  (sbcl-package->ecl-package sbcl-skippy))
+
+(define-public sbcl-cl-freetype2
+  (let ((commit "96058da730b4812df916c1f4ee18c99b3b15a3de")
+        (revision "0"))
+    (package
+      (name "sbcl-cl-freetype2")
+      (version (git-version "1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rpav/cl-freetype2")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0f8darhairgxnb5bzqcny7nh7ss3471bdzix5rzcyiwdbr5kymjl"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cffi" ,sbcl-cffi)
+         ("cffi-grovel" ,sbcl-cffi-grovel)
+         ("freetype" ,freetype)
+         ("trivial-garbage" ,sbcl-trivial-garbage)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (substitute* "src/ffi/ft2-lib.lisp"
+                 (("\"libfreetype\"")
+                  (string-append "\"" (assoc-ref inputs "freetype")
+                                 "/lib/libfreetype\"")))
+               (substitute* "src/ffi/grovel/grovel-freetype2.lisp"
+                 (("-I/usr/include/freetype")
+                  (string-append "-I" (assoc-ref inputs "freetype")
+                                 "/include/freetype")))
+               #t)))))
+      (home-page "https://github.com/rpav/cl-freetype2")
+      (synopsis "Common Lisp bindings for Freetype 2")
+      (description
+       "This is a general Freetype 2 wrapper for Common Lisp using CFFI.  It's
+geared toward both using Freetype directly by providing a simplified API, as
+well as providing access to the underlying C structures and functions for use
+with other libraries which may also use Freetype.")
+      (license license:bsd-3))))
+
+(define-public cl-freetype2
+  (sbcl-package->cl-source-package sbcl-cl-freetype2))
+
+(define-public ecl-cl-freetype2
+  (sbcl-package->ecl-package sbcl-cl-freetype2))
+
+(define-public sbcl-opticl-core
+  (let ((commit "b7cd13d26df6b824b216fbc360dc27bfadf04999")
+        (revision "0"))
+    (package
+      (name "sbcl-opticl-core")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/slyrus/opticl-core")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0458bllabcdjghfrqx6aki49c9qmvfmkk8jl75cfpi7q0i12kh95"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)))
+      (home-page "https://github.com/slyrus/opticl-core")
+      (synopsis "Core classes and pixel access macros for Opticl")
+      (description
+       "This Common Lisp library contains the core classes and pixel access
+macros for the Opticl image processing library.")
+      (license license:bsd-2))))
+
+(define-public cl-opticl-core
+  (sbcl-package->cl-source-package sbcl-opticl-core))
+
+(define-public ecl-opticl-core
+  (sbcl-package->ecl-package sbcl-opticl-core))
+
+(define-public sbcl-retrospectiff
+  (let ((commit "c2a69d77d5010f8cdd9045b3e36a08a73da5d321")
+        (revision "0"))
+    (package
+      (name "sbcl-retrospectiff")
+      (version (git-version "0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/slyrus/retrospectiff")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qsn9hpd8j2kp43dk05j8dczz9zppdff5rrclbp45n3ksk9inw8i"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("cl-jpeg" ,sbcl-cl-jpeg)
+         ("com.gigamonkeys.binary-data" ,sbcl-com.gigamonkeys.binary-data)
+         ("deflate" ,sbcl-deflate)
+         ("flexi-streams" ,sbcl-flexi-streams)
+         ("ieee-floats" ,sbcl-ieee-floats)
+         ("opticl-core" ,sbcl-opticl-core)))
+      (home-page "https://github.com/slyrus/retrospectiff")
+      (synopsis "Common Lisp library for TIFF images")
+      (description
+       "Retrospectiff is a common lisp library for reading and writing images
+in the TIFF (Tagged Image File Format) format.")
+      (license license:bsd-2))))
+
+(define-public cl-retrospectif
+  (sbcl-package->cl-source-package sbcl-retrospectiff))
+
+(define-public ecl-retrospectiff
+  (sbcl-package->ecl-package sbcl-retrospectiff))
+
+(define-public sbcl-mmap
+  (let ((commit "ba2e98c67e25f0fb8ff838238561120a23903ce7")
+        (revision "0"))
+    (package
+      (name "sbcl-mmap")
+      (version (git-version "1.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Shinmera/mmap")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0qd0xp20i1pcfn12kkapv9pirb6hd4ns7kz4zf1mmjwykpsln96q"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cffi" ,sbcl-cffi)
+         ("parachute" ,sbcl-parachute)
+         ("trivial-features" ,sbcl-trivial-features)))
+      (inputs
+       `(("cffi" ,sbcl-cffi)
+         ("documentation-utils" ,sbcl-documentation-utils)))
+      (home-page "https://shinmera.github.io/mmap/")
+      (synopsis "File memory mapping for Common Lisp")
+      (description
+       "This is a utility library providing access to the @emph{mmap} family of
+functions in a portable way.  It allows you to directly map a file into the
+address space of your process without having to manually read it into memory
+sequentially.  Typically this is much more efficient for files that are larger
+than a few Kb.")
+      (license license:zlib))))
+
+(define-public cl-mmap
+  (sbcl-package->cl-source-package sbcl-mmap))
+
+(define-public ecl-mmap
+  (sbcl-package->ecl-package sbcl-mmap))
+
+(define-public sbcl-3bz
+  (let ((commit "d6119083b5e0b0a6dd3abc2877936c51f3f3deed")
+        (revision "0"))
+    (package
+      (name "sbcl-3bz")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/3b/3bz")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0fyxzyf2b6sc0w8d9g4nlva861565z6f3xszj0lw29x526dd9rhj"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("babel" ,sbcl-babel)
+         ("cffi" ,sbcl-cffi)
+         ("mmap" ,sbcl-mmap)
+         ("nibbles" ,sbcl-nibbles)
+         ("trivial-features" ,sbcl-trivial-features)))
+      (arguments
+       ;; FIXME: Without the following line, the build fails (see issue 41437).
+       `(#:asd-system-name "3bz"))
+      (home-page "https://github.com/3b/3bz")
+      (synopsis "Deflate decompression for Common Lisp")
+      (description
+       "3bz is an implementation of Deflate decompression (RFC 1951) optionally
+with zlib (RFC 1950) or gzip (RFC 1952) wrappers, with support for reading from
+foreign pointers (for use with mmap and similar, etc), and from CL octet
+vectors and streams.")
+      (license license:expat))))
+
+(define-public cl-3bz
+  (sbcl-package->cl-source-package sbcl-3bz))
+
+(define-public ecl-3bz
+  (sbcl-package->ecl-package sbcl-3bz))
+
+(define-public sbcl-zpb-exif
+  (package
+    (name "sbcl-zpb-exif")
+    (version "1.2.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xach/zpb-exif")
+             (commit (string-append "release-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "15s227jhby55cisz14xafb0p1ws2jmrg2rrbbd00lrb97im84hy6"))))
+    (build-system asdf-build-system/sbcl)
+    (home-page "https://xach.com/lisp/zpb-exif/")
+    (synopsis "EXIF information extractor for Common Lisp")
+    (description
+     "This is a Common Lisp library to extract EXIF information from image
+files.")
+    (license license:bsd-2)))
+
+(define-public cl-zpb-exif
+  (sbcl-package->cl-source-package sbcl-zpb-exif))
+
+(define-public ecl-zpb-exif
+  (sbcl-package->ecl-package sbcl-zpb-exif))
+
+(define-public sbcl-pngload
+  (package
+    (name "sbcl-pngload")
+    (version "2.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/bufferswap/pngload")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ix8dd0fxlf8xm0bszh1s7sx83hn0vqq8b8c9gkrd5m310w8mpvh"))))
+    (build-system asdf-build-system/sbcl)
+    (inputs
+     `(("3bz" ,sbcl-3bz)
+       ("alexandria" ,sbcl-alexandria)
+       ("cffi" ,sbcl-cffi)
+       ("mmap" ,sbcl-mmap)
+       ("parse-float" ,sbcl-parse-float)
+       ("static-vectors" ,sbcl-static-vectors)
+       ("swap-bytes" ,sbcl-swap-bytes)
+       ("zpb-exif" ,sbcl-zpb-exif)))
+    (arguments
+     ;; Test suite disabled because of a dependency cycle.
+     ;; pngload tests depend on opticl which depends on pngload.
+     '(#:tests? #f))
+    (home-page "https://github.com/bufferswap/pngload")
+    (synopsis "PNG image decoder for Common Lisp")
+    (description
+     "This is a Common Lisp library to load images in the PNG image format,
+both from files on disk, or streams in memory.")
+    (license license:expat)))
+
+(define-public cl-pngload
+  (sbcl-package->cl-source-package sbcl-pngload))
+
+(define-public ecl-pngload
+  (sbcl-package->ecl-package sbcl-pngload))
+
+(define-public sbcl-opticl
+  (let ((commit "e8684416eca2e78e82a7b436d436ef2ea24c019d")
+        (revision "0"))
+    (package
+      (name "sbcl-opticl")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/slyrus/opticl")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "03rirnnhhisjbimlmpi725h1d3x0cfv00r57988am873dyzawmm1"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       `(("fiveam" ,sbcl-fiveam)))
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("cl-jpeg" ,sbcl-cl-jpeg)
+         ("cl-tga" ,sbcl-cl-tga)
+         ("png-read" ,sbcl-png-read)
+         ("pngload" ,sbcl-pngload)
+         ("retrospectiff" ,sbcl-retrospectiff)
+         ("skippy" ,sbcl-skippy)
+         ("zpng" ,sbcl-zpng)))
+      (home-page "https://github.com/slyrus/opticl")
+      (synopsis "Image processing library for Common Lisp")
+      (description
+       "Opticl is a Common Lisp library for representing, processing, loading,
+and saving 2-dimensional pixel-based images.")
+      (license license:bsd-2))))
+
+(define-public cl-opticl
+  (sbcl-package->cl-source-package sbcl-opticl))
+
+(define-public sbcl-clim-lisp
+  (let ((commit "27b4d7a667c9b3faa74cabcb57706b888314fff7")
+        (revision "0"))
+    (package
+      (name "sbcl-clim-lisp")
+      (version (git-version "0.9.7" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mcclim/mcclim")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0jijfgkwas6xnpp5wiii6slcx9pgsalngacb8zm29x6pamx2193h"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       `(("alexandria" ,sbcl-alexandria)
+         ("closer-mop" ,sbcl-closer-mop)
+         ("log4cl" ,sbcl-log4cl)
+         ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+      (home-page "https://common-lisp.net/project/mcclim/")
+      (synopsis "Common Lisp GUI toolkit")
+      (description
+       "McCLIM is an implementation of the @emph{Common Lisp Interface Manager
+specification}, a toolkit for writing GUIs in Common Lisp.")
+      (license license:lgpl2.1+))))
+
+(define-public sbcl-clim-basic
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim-basic")
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("babel" ,sbcl-babel)
+       ("bordeaux-threads" ,sbcl-bordeaux-threads)
+       ("clim-lisp" ,sbcl-clim-lisp)
+       ("flexichain" ,sbcl-flexichain)
+       ("spatial-trees" ,sbcl-spatial-trees)
+       ("trivial-features" ,sbcl-trivial-features)
+       ("trivial-garbage" ,sbcl-trivial-garbage)))
+    (arguments
+     '(#:asd-file "Core/clim-basic/clim-basic.asd"))))
+
+(define-public sbcl-clim-core
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim-core")
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)))
+    (arguments
+     '(#:asd-file "Core/clim-core/clim-core.asd"))))
+
+(define-public sbcl-esa-mcclim
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-esa-mcclim")
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("clim-core" ,sbcl-clim-core)))
+    (arguments
+     '(#:asd-file "Libraries/ESA/esa-mcclim.asd"))))
+
+(define-public sbcl-mcclim-fonts
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-fonts")
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)))
+    (arguments
+     '(#:asd-file "Extensions/fonts/mcclim-fonts.asd"))))
+
+(define-public sbcl-automaton
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-automaton")
+    (inputs
+     `())
+    (arguments
+     '(#:asd-file "Libraries/Drei/cl-automaton/automaton.asd"))))
+
+(define-public sbcl-persistent
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-persistent")
+    (inputs
+     `())
+    (arguments
+     '(#:asd-file "Libraries/Drei/Persistent/persistent.asd"))))
+
+(define-public sbcl-drei-mcclim
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-drei-mcclim")
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("automaton" ,sbcl-automaton)
+       ("clim-core" ,sbcl-clim-core)
+       ("esa-mcclim" ,sbcl-esa-mcclim)
+       ("flexichain" ,sbcl-flexichain)
+       ("mcclim-fonts" ,sbcl-mcclim-fonts)
+       ("persistent" ,sbcl-persistent)
+       ("swank" ,cl-slime-swank)))
+    (arguments
+     '(#:asd-file "Libraries/Drei/drei-mcclim.asd"))))
+
+(define-public sbcl-clim
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim")
+    (inputs
+     `(("clim-core" ,sbcl-clim-core)
+       ("drei-mcclim" ,sbcl-drei-mcclim)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Core/clim/clim.asd"))))
+
+(define-public sbcl-mcclim-backend-common
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-backend-common")
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/common/mcclim-backend-common.asd"))))
+
+(define-public sbcl-mcclim-clx
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-clx")
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("cl-unicode" ,sbcl-cl-unicode)
+       ("clx" ,sbcl-clx)
+       ("mcclim-backend-common" ,sbcl-mcclim-backend-common)
+       ("mcclim-fonts" ,sbcl-mcclim-fonts)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/CLX/mcclim-clx.asd"))))
+
+(define-public sbcl-mcclim-fonts-truetype
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-fonts-truetype")
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("cl-aa" ,sbcl-cl-aa)
+       ("cl-paths-ttf" ,sbcl-cl-paths-ttf)
+       ("cl-vectors" ,sbcl-cl-vectors)
+       ("clim-basic" ,sbcl-clim-basic)
+       ("font-dejavu" ,font-dejavu)
+       ("zpb-ttf" ,sbcl-zpb-ttf)))
+    (arguments
+     '(#:asd-file "Extensions/fonts/mcclim-fonts.asd"
+       #:asd-system-name "mcclim-fonts/truetype"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; mcclim-truetype uses DejaVu as default font and
+             ;; sets the path at build time.
+             (substitute* "Extensions/fonts/fontconfig.lisp"
+               (("/usr/share/fonts/truetype/dejavu/")
+                (string-append (assoc-ref inputs "font-dejavu")
+                               "/share/fonts/truetype/")))
+             #t)))))))
+
+(define-public sbcl-mcclim-fonts-clx-truetype
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-fonts-clx-truetype")
+    (inputs
+     `(("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-fonts-truetype" ,sbcl-mcclim-fonts-truetype)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "./Extensions/fonts/mcclim-fonts.asd"
+       #:asd-system-name "mcclim-fonts/clx-truetype"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Extensions/fonts/mcclim-fonts.asd"
+               ((":depends-on \\(#:mcclim-fonts/truetype")
+                ":depends-on (#:mcclim-fonts-truetype"))
+             #t)))))))
+
+(define-public sbcl-mcclim-clx-truetype
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-clx-truetype")
+    (inputs
+     `(("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-fonts-clx-truetype" ,sbcl-mcclim-fonts-clx-truetype)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/CLX/mcclim-clx.asd"
+       #:asd-system-name "mcclim-clx/truetype"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Backends/CLX/mcclim-clx.asd"
+               (("mcclim-fonts/clx-truetype")
+                "mcclim-fonts-clx-truetype"))
+             #t)))))))
+
+(define-public sbcl-mcclim-fontconfig
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-fontconfig")
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("cffi" ,sbcl-cffi)
+       ("cffi-grovel" ,sbcl-cffi-grovel)
+       ("fontconfig" ,fontconfig)))
+    (arguments
+     '(#:asd-file "Extensions/fontconfig/mcclim-fontconfig.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Extensions/fontconfig/src/functions.lisp"
+               (("libfontconfig\\.so")
+                (string-append (assoc-ref inputs "fontconfig")
+                               "/lib/libfontconfig.so")))
+             #t))
+         (add-after 'unpack 'fix-build
+           (lambda _
+             ;; The cffi-grovel system does not get loaded automatically,
+             ;; so we load it explicitly.
+             (substitute* "Extensions/fontconfig/mcclim-fontconfig.asd"
+               (("\\(asdf:defsystem #:mcclim-fontconfig" all)
+                (string-append "(asdf:load-system :cffi-grovel)\n" all)))
+             #t)))))))
+
+(define-public sbcl-mcclim-harfbuzz
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-harfbuzz")
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("cffi" ,sbcl-cffi)
+       ("cffi-grovel" ,sbcl-cffi-grovel)
+       ("freetype" ,freetype)
+       ("harfbuzz" ,harfbuzz)
+       ("trivial-garbage" ,sbcl-trivial-garbage)))
+    (arguments
+     '(#:asd-file "Extensions/harfbuzz/mcclim-harfbuzz.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "Extensions/harfbuzz/src/functions.lisp"
+               (("libharfbuzz\\.so")
+                (string-append (assoc-ref inputs "harfbuzz")
+                               "/lib/libharfbuzz.so")))
+             #t))
+         (add-after 'unpack 'fix-build
+           (lambda _
+             ;; The cffi-grovel system does not get loaded automatically,
+             ;; so we load it explicitly.
+             (substitute* "Extensions/harfbuzz/mcclim-harfbuzz.asd"
+               (("\\(asdf:defsystem #:mcclim-harfbuzz" all)
+                (string-append "(asdf:load-system :cffi-grovel)\n" all)))
+             #t)))))))
+
+(define-public sbcl-mcclim-fonts-clx-freetype
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-fonts-clx-freetype")
+    (inputs
+     `(("cl-freetype2" ,sbcl-cl-freetype2)
+       ("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-fontconfig" ,sbcl-mcclim-fontconfig)
+       ("mcclim-fonts" ,sbcl-mcclim-fonts)
+       ("mcclim-harfbuzz" ,sbcl-mcclim-harfbuzz)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/fonts/mcclim-fonts.asd"
+       #:asd-system-name "mcclim-fonts/clx-freetype"))))
+
+(define-public sbcl-mcclim-clx-freetype
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-clx-freetype")
+    (inputs
+     `(("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-fonts-clx-freetype" ,sbcl-mcclim-fonts-clx-freetype)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/CLX/mcclim-clx.asd"
+       #:asd-system-name "mcclim-clx/freetype"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Backends/CLX/mcclim-clx.asd"
+               (("mcclim-fonts/clx-freetype")
+                "mcclim-fonts-clx-freetype"))
+             #t)))))))
+
+(define-public sbcl-mcclim-render
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-render")
+    (inputs
+     `(("alexandria" ,sbcl-alexandria)
+       ("cl-vectors" ,sbcl-cl-vectors)
+       ("clim-basic" ,sbcl-clim-basic)
+       ("mcclim-backend-common" ,sbcl-mcclim-backend-common)
+       ("mcclim-fonts-truetype" ,sbcl-mcclim-fonts-truetype)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/render/mcclim-render.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Extensions/render/mcclim-render.asd"
+               (("mcclim-fonts/truetype")
+                "mcclim-fonts-truetype"))
+             #t)))))))
+
+(define-public sbcl-mcclim-clx-fb
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-clx-fb")
+    (inputs
+     `(("mcclim-backend-common" ,sbcl-mcclim-backend-common)
+       ("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-render" ,sbcl-mcclim-render)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/CLX-fb/mcclim-clx-fb.asd"))))
+
+(define-public sbcl-mcclim-null
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-null")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/Null/mcclim-null.asd"))))
+
+(define-public sbcl-clim-postscript-font
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim-postscript-font")
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)
+       ("mcclim-backend-common" ,sbcl-mcclim-backend-common)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/PostScript/clim-postscript-font.asd"))))
+
+(define-public sbcl-clim-postscript
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim-postscript")
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)
+       ("clim-postscript-font" ,sbcl-clim-postscript-font)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/PostScript/clim-postscript.asd"
+       ;; Test suite disabled because of a dependency cycle.
+       ;; The tests depend on mcclim/test-util, which depends on mcclim,
+       ;; wich depends on mcclim/extensions, which depends on clim-postscript.
+       #:tests? #f))))
+
+(define-public sbcl-clim-pdf
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-clim-pdf")
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("cl-pdf" ,sbcl-cl-pdf)
+       ("clim-basic" ,sbcl-clim-basic)
+       ("clim-postscript-font" ,sbcl-clim-postscript-font)
+       ("flexi-streams" ,sbcl-flexi-streams)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Backends/PDF/clim-pdf.asd"
+       ;; Test suite disabled because of a dependency cycle.
+       ;; The tests depend on mcclim/test-util, which depends on mcclim,
+       ;; wich depends on mcclim/extensions, which depends on clim-pdf.
+       #:tests? #f))))
+
+(define-public sbcl-mcclim-looks
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-looks")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("mcclim-clx" ,sbcl-mcclim-clx)
+       ("mcclim-clx-fb" ,sbcl-mcclim-clx-fb)
+       ("mcclim-clx-freetype" ,sbcl-mcclim-clx-freetype)
+       ("mcclim-clx-truetype" ,sbcl-mcclim-clx-truetype)
+       ("mcclim-null" ,sbcl-mcclim-null)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "mcclim.asd"
+       #:asd-system-name "mcclim/looks"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "mcclim.asd"
+               (("mcclim-clx/truetype")
+                "mcclim-clx-truetype")
+               (("mcclim-clx/freetype")
+                "mcclim-clx-freetype"))
+             #t)))))))
+
+(define-public sbcl-mcclim-franz
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-franz")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/Franz/mcclim-franz.asd"))))
+
+(define-public sbcl-mcclim-bezier-core
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-bezier-core")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("clim-pdf" ,sbcl-clim-pdf)
+       ("clim-postscript" ,sbcl-clim-postscript)
+       ("mcclim-null" ,sbcl-mcclim-null)
+       ("mcclim-render" ,sbcl-mcclim-render)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/bezier/mcclim-bezier.asd"
+       #:asd-system-name "mcclim-bezier/core"))))
+
+(define-public sbcl-mcclim-bezier-clx
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-bezier-clx")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("mcclim-bezier/core" ,sbcl-mcclim-bezier-core)
+       ("mcclim-clx" ,sbcl-mcclim-clx)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/bezier/mcclim-bezier.asd"
+       #:asd-system-name "mcclim-bezier/clx"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Extensions/bezier/mcclim-bezier.asd"
+               (("mcclim-bezier/core\\)")
+                "mcclim-bezier-core)"))
+             #t)))))))
+
+(define-public sbcl-mcclim-bezier
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-bezier")
+    (inputs
+     `(("mcclim-bezier/clx" ,sbcl-mcclim-bezier-clx)
+       ("mcclim-bezier/core" ,sbcl-mcclim-bezier-core)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/bezier/mcclim-bezier.asd"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "Extensions/bezier/mcclim-bezier.asd"
+               (("\\(#:mcclim-bezier/core")
+                "(#:mcclim-bezier-core")
+               (("#:mcclim-bezier/clx\\)\\)")
+                "#:mcclim-bezier-clx))"))
+             #t)))))))
+
+(define-public sbcl-mcclim-bitmaps
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-bitmaps")
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)
+       ("opticl" ,sbcl-opticl)))
+    (arguments
+     '(#:asd-file "Extensions/bitmap-formats/mcclim-bitmaps.asd"))))
+
+(define-public sbcl-conditional-commands
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-conditional-commands")
+    (inputs
+     `(("clim-basic" ,sbcl-clim-basic)))
+    (arguments
+     '(#:asd-file "Extensions/conditional-commands/conditional-commands.asd"))))
+
+(define-public sbcl-mcclim-layouts-tab
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-layouts-tab")
+    (inputs
+     `(("clim" ,sbcl-clim)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "Extensions/layouts/mcclim-layouts.asd"
+       #:asd-system-name "mcclim-layouts/tab"))))
+
+(define-public sbcl-mcclim-extensions
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim-extensions")
+    (inputs
+     `(("clim-pdf" ,sbcl-clim-pdf)
+       ("clim-postscript" ,sbcl-clim-postscript)
+       ("conditional-commands" ,sbcl-conditional-commands)
+       ("mcclim-bezier" ,sbcl-mcclim-bezier)
+       ("mcclim-bitmaps" ,sbcl-mcclim-bitmaps)
+       ("mcclim-franz" ,sbcl-mcclim-franz)
+       ("mcclim-layouts-tab" ,sbcl-mcclim-layouts-tab)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:asd-file "mcclim.asd"
+       #:asd-system-name "mcclim/extensions"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "mcclim.asd"
+               (("mcclim-layouts/tab")
+                "mcclim-layouts-tab"))
+             #t)))))))
+
+(define-public sbcl-mcclim
+  (package
+    (inherit sbcl-clim-lisp)
+    (name "sbcl-mcclim")
+    (native-inputs
+     `(("fiveam" ,sbcl-fiveam)))
+    (inputs
+     `(("mcclim-looks" ,sbcl-mcclim-looks)
+       ("mcclim-extensions" ,sbcl-mcclim-extensions)
+       ("swank" ,cl-slime-swank))) ; For drei-mcclim
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-asd-system-names
+           (lambda _
+             (substitute* "mcclim.asd"
+               ((":depends-on \\(\"mcclim/looks\" \"mcclim/extensions\"\\)")
+                ":depends-on (\"mcclim-looks\" \"mcclim-extensions\")"))
+             #t)))
+       ;; Test suite disabled because of a dependency cycle.
+       ;; The tests depend on mcclim/test-util, which depends on mcclim.
+       #:tests? #f))))
+
+(define-public cl-mcclim
+  (let ((base (sbcl-package->cl-source-package sbcl-clim-lisp)))
+    (package
+      (inherit base)
+      (name "cl-mcclim")
+      (native-inputs
+       `(("fiveam" ,cl-fiveam)
+         ("pkg-config" ,pkg-config)))
+      (inputs
+       `(("alexandria" ,cl-alexandria)
+         ("babel" ,cl-babel)
+         ("bordeaux-threads" ,cl-bordeaux-threads)
+         ("cffi" ,cl-cffi)
+         ("cl-aa" ,cl-aa)
+         ("cl-freetype2" ,cl-freetype2)
+         ("cl-paths-ttf" ,cl-paths-ttf)
+         ("cl-pdf" ,cl-pdf)
+         ("cl-unicode" ,cl-unicode)
+         ("cl-vectors" ,cl-vectors)
+         ("closer-mop" ,cl-closer-mop)
+         ("clx" ,cl-clx)
+         ("flexi-streams" ,cl-flexi-streams)
+         ("flexichain" ,cl-flexichain)
+         ("fontconfig" ,fontconfig)
+         ("freetype" ,freetype)
+         ("harfbuzz" ,harfbuzz)
+         ("log4cl" ,cl-log4cl)
+         ("opticl" ,cl-opticl)
+         ("spatial-trees" ,cl-spatial-trees)
+         ("trivial-features" ,cl-trivial-features)
+         ("trivial-garbage" ,cl-trivial-garbage)
+         ("trivial-gray-streams" ,cl-trivial-gray-streams)
+         ("swank" ,cl-slime-swank)
+         ("zpb-ttf" ,cl-zpb-ttf))))))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index a2e0f0724d..4de4e9f9d6 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -369,6 +369,8 @@ high-level, object-oriented functional programming language.  CLISP includes
 an interpreter, a compiler, a debugger, and much more.")
     (license license:gpl2+)))
 
+;; NOTE: SBCL 2.0.6 breaks named-readtables and consequently many Common Lisp packages.
+;; See https://github.com/melisgl/named-readtables/issues/19.
 (define-public sbcl
   (package
     (name "sbcl")
@@ -397,12 +399,13 @@ an interpreter, a compiler, a debugger, and much more.")
      ;;     ABCL and ECL (as well as CCL, CMUCL, CLISP and SBCL itself)
      ;;
      ;; CCL is not bootstrappable so it won't do.  CLISP 2.49 seems to work.
-     ;; ECL too.  ECL builds SBCL about 20% slower than CLISP.  As of
-     ;; 2019-09-05, ECL was last updated in 2020 while CLISP was last updated
-     ;; in 2010.
+     ;; ECL too.  As of 2020-07-01, ECL was last updated in 2020 while CLISP
+     ;; was last updated in 2010, and both take about the same time to build SBCL.
      ;;
-     ;; For now we stick to CLISP for all systems.  We keep the `match' here to
-     ;; make it easier to change the host compiler for various architectures.
+     ;; For now we stick to CLISP for all systems.  We keep the `match' here
+     ;; to make it easier to change the host compiler for various
+     ;; architectures.  Consider switching to ECL if it gets faster than CLISP
+     ;; (maybe post 2020 release).
      `(,@(match (%current-system)
            ((or "x86_64-linux" "i686-linux")
             `(("clisp" ,clisp)))
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 11e4cfbe4c..4a17ecd664 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -387,6 +388,25 @@ given PATCHES.  When TOOLS-EXTRA is given, it must point to the
                                 (("@GLIBC_LIBDIR@")
                                  (string-append libc "/lib"))))))
                         #t)))
+                  (add-after 'install 'symlink-cfi_blacklist
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (lib-share (string-append out "/lib/clang/"
+                                                       ,version "/share"))
+                             (compiler-rt (assoc-ref inputs "clang-runtime"))
+                             ;; The location varies between Clang versions.
+                             (cfi-blacklist
+                              (cond ((file-exists?
+                                      (string-append compiler-rt "/cfi_blacklist.txt"))
+                                     (string-append compiler-rt "/cfi_blacklist.txt"))
+                                    (else (string-append compiler-rt
+                                                         "/share/cfi_blacklist.txt")))))
+                        (mkdir-p lib-share)
+                        ;; Symlink cfi_blacklist.txt to where Clang expects
+                        ;; to find it.
+                        (symlink cfi-blacklist
+                                 (string-append lib-share "/cfi_blacklist.txt"))
+                        #t)))
                   (add-after 'install 'install-clean-up-/share/clang
                     (lambda* (#:key outputs #:allow-other-keys)
                       (let* ((out (assoc-ref outputs "out"))
@@ -510,7 +530,12 @@ output), and Binutils.")
        (uri (llvm-download-uri "llvm" version))
        (sha256
         (base32
-         "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))))))
+         "16hwp3qa54c3a3v7h8nlw0fh5criqh0hlr1skybyk0cz70gyx880"))
+       (patch-flags '("-p2"))
+       (patches (search-patches
+                  "llvm-9-fix-bitcast-miscompilation.patch"
+                  "llvm-9-fix-scev-miscompilation.patch"
+                  "llvm-9-fix-lpad-miscompilation.patch"))))))
 
 (define-public clang-runtime-9
   (clang-runtime-from-llvm
@@ -532,6 +557,30 @@ output), and Binutils.")
 (define-public clang clang-9)
 (define-public clang-toolchain clang-toolchain-9)
 
+(define-public lld
+  (package
+    (name "lld")
+    (version (package-version llvm-10))
+    (source (origin
+              (method url-fetch)
+              (uri (llvm-download-uri "lld" version))
+              (sha256
+               (base32
+                "026pwcbczcg0j5c9h7hxxrn3ki81ia9m9sfn0sy0bvzffv2xg85r"))))
+    (build-system cmake-build-system)
+    (inputs
+     `(("llvm" ,llvm-10)))
+    (arguments
+     `(#:build-type "Release"
+       ;; TODO: Tests require the lit tool, which isn't installed by the LLVM
+       ;; package.
+       #:tests? #f))
+    (home-page "https://lld.llvm.org/")
+    (synopsis "Linker from the LLVM project")
+    (description "LLD is a high-performance linker, built as a set of reusable
+components which highly leverage existing libraries in the larger LLVM Project.")
+    (license license:asl2.0))) ; With LLVM exception
+
 (define-public llvm-8
   (package
     (inherit llvm)
@@ -835,7 +884,7 @@ use with Clang, targeting C++11, C++14 and above.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/llvm/llvm-project.git")
+             (url "https://github.com/llvm/llvm-project")
              (commit (string-append "llvmorg-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -919,28 +968,32 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
      `(#:tests? #f))
     (inputs
      `(("llvm"
-        ,(package
-           (inherit llvm-7)
-           (source (origin
-                     (inherit (package-source llvm-7))
-                     (patches
-                      (list
-                       (origin
-                         (method url-fetch)
-                         (uri (string-append "https://raw.githubusercontent.com/numba/"
-                                             "llvmlite/v" version "/conda-recipes/"
-                                             "D47188-svml-VF.patch"))
-                         (sha256
-                          (base32
-                           "0wxhgb61k17f0zg2m0726sf3hppm41f8jar2kkg2n8sl5cnjj9mr")))
-                       (origin
-                         (method url-fetch)
-                         (uri (string-append "https://raw.githubusercontent.com/numba/"
-                                             "llvmlite/v" version "/conda-recipes/"
-                                             "twine_cfg_undefined_behavior.patch"))
-                         (sha256
-                          (base32
-                           "07h71n2m1mn9zcfgw04zglffknplb233zqbcd6pckq0wygkrxflp")))))))))))
+        ,(let ((patches-commit "486edd5fb2a6667feb5c865f300c0da73785434a"))
+           (package
+             (inherit llvm-7)
+             (source
+              (origin
+                (inherit (package-source llvm-7))
+                (patches
+                 (list
+                  (origin
+                    (method url-fetch)
+                    (uri (string-append
+                          "https://raw.githubusercontent.com/numba/"
+                          "llvmlite/" patches-commit "/conda-recipes/"
+                          "D47188-svml-VF.patch"))
+                    (sha256
+                     (base32
+                      "0wxhgb61k17f0zg2m0726sf3hppm41f8jar2kkg2n8sl5cnjj9mr")))
+                  (origin
+                    (method url-fetch)
+                    (uri (string-append
+                          "https://raw.githubusercontent.com/numba/"
+                          "llvmlite/" patches-commit "/conda-recipes/"
+                          "twine_cfg_undefined_behavior.patch"))
+                    (sha256
+                     (base32
+                      "07h71n2m1mn9zcfgw04zglffknplb233zqbcd6pckq0wygkrxflp"))))))))))))
     (home-page "http://llvmlite.pydata.org")
     (synopsis "Wrapper around basic LLVM functionality")
     (description
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 9139dc440e..789f32920d 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -191,23 +191,24 @@ windows in a terminal, colorize, filter and merge.")
 (define-public spdlog
   (package
     (name "spdlog")
-    (version "1.5.0")
+    (version "1.6.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gabime/spdlog.git")
+             (url "https://github.com/gabime/spdlog")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0dn44r3xbw1w0bk9yflnxkh3rzdq2bpxkks44skfmqig0rsj1f1x"))))
+         "1b1b3zmbyjgqz5yfdgaasi55x03d37z7l2pasvgikx3mm1gabq5a"))))
     (build-system cmake-build-system)
     ;; TODO run benchmark. Currently not possible, as adding
     ;; (gnu packages benchmark) forms a dependency cycle
     (arguments
      '(#:configure-flags
-       (list "-DSPDLOG_BUILD_BENCH=OFF")))
+       (list "-DSPDLOG_BUILD_BENCH=OFF"
+             "-DSPDLOG_BUILD_TESTS=ON")))
     (home-page "https://github.com/gabime/spdlog")
     (synopsis "Fast C++ logging library")
     (description "Spdlog is a very fast header-only/compiled C++ logging
diff --git a/gnu/packages/lolcode.scm b/gnu/packages/lolcode.scm
index 3f62c4d5a5..cdbff1f4b6 100644
--- a/gnu/packages/lolcode.scm
+++ b/gnu/packages/lolcode.scm
@@ -34,7 +34,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/justinmeza/lci.git")
+             (url "https://github.com/justinmeza/lci")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/lsof.scm b/gnu/packages/lsof.scm
index e29f3b4569..34ad0f03d5 100644
--- a/gnu/packages/lsof.scm
+++ b/gnu/packages/lsof.scm
@@ -47,7 +47,7 @@
 
                 ;; Add mirrors because the canonical FTP server at purdue.edu
                 ;; bails out when it cannot do a reverse DNS lookup, as noted
-                ;; at <http://people.freebsd.org/~abe/>.
+                ;; at <https://people.freebsd.org/~abe/>.
                 "ftp://ftp.fu-berlin.de/pub/unix/tools/lsof/"
                 (string-append "http://www.mirrorservice.org/sites/"
                                "lsof.itap.purdue.edu/pub/tools/unix/lsof")
@@ -121,4 +121,4 @@ on the system.")
    (license (license:fsf-free
              "file://00FAQ"
              "License inspired by zlib, see point 1.9 of 00FAQ in the distribution."))
-   (home-page "http://people.freebsd.org/~abe/")))
+   (home-page "https://people.freebsd.org/~abe/")))
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 181ce76559..5479b891bd 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020 Simon South <simon@simonsouth.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +39,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages glib)
@@ -292,6 +294,65 @@ directory structure and file attributes.")
 (define-public lua5.2-filesystem
   (make-lua-filesystem "lua5.2-filesystem" lua-5.2))
 
+(define (make-lua-ossl name lua)
+  (package
+    (name name)
+    (version "20170903")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://25thandclement.com/~william/"
+                                  "projects/releases/luaossl-" version ".tgz"))
+              (sha256
+               (base32
+                "10392bvd0lzyibipblgiss09zlqh3a5zgqg1b9lgbybpqb9cv2k3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (let ((out (assoc-ref %outputs "out"))
+             (lua-api-version ,(version-major+minor (package-version lua))))
+         (list "CC=gcc"
+               "CFLAGS='-D HAVE_SYS_SYSCTL_H=0'" ; sys/sysctl.h is deprecated
+               (string-append "DESTDIR=" out)
+               (string-append "LUA_APIS=" lua-api-version)
+               "prefix="))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (add-after 'install 'check
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (lua-version ,(version-major+minor (package-version lua))))
+               (setenv "LUA_CPATH"
+                       (string-append out "/lib/lua/" lua-version "/?.so;;"))
+               (setenv "LUA_PATH"
+                       (string-append out "/share/lua/" lua-version "/?.lua;;"))
+               (with-directory-excursion "regress"
+                 (for-each (lambda (f)
+                             (invoke "lua" f))
+                           (find-files "." "^[0-9].*\\.lua$"))))
+             #t)))))
+    (inputs
+     `(("lua" ,lua)
+       ("openssl" ,openssl)))
+    (home-page "https://25thandclement.com/~william/projects/luaossl.html")
+    (synopsis "OpenSSL bindings for Lua")
+    (description "The luaossl extension module for Lua provides comprehensive,
+low-level bindings to the OpenSSL library, including support for certificate and
+key management, key generation, signature verification, and deep bindings to the
+distinguished name, alternative name, and X.509v3 extension interfaces.  It also
+binds OpenSSL's bignum, message digest, HMAC, cipher, and CSPRNG interfaces.")
+    (license license:expat)))
+
+(define-public lua-ossl
+  (make-lua-ossl "lua-ossl" lua))
+
+(define-public lua5.1-ossl
+  (make-lua-ossl "lua5.1-ossl" lua-5.1))
+
+(define-public lua5.2-ossl
+  (make-lua-ossl "lua5.2-ossl" lua-5.2))
+
 (define (make-lua-sec name lua)
   (package
     (name name)
@@ -340,6 +401,112 @@ secure session between the peers.")
 (define-public lua5.2-sec
   (make-lua-sec "lua5.2-sec" lua-5.2))
 
+(define (make-lua-cqueues name lua lua-ossl)
+  (package
+    (name name)
+    (version "20171014")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://25thandclement.com/~william/"
+                                  "projects/releases/cqueues-" version ".tgz"))
+              (sha256
+               (base32
+                "1dabhpn6r0hlln8vx9hxm34pfcm46qzgpb2apmziwg5z51fi4ksb"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 string-fun))
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out"))
+             (lua-api-version ,(version-major+minor (package-version lua))))
+         (list "CC=gcc"
+               (string-append "LUA_APIS=" lua-api-version)))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key make-flags outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (apply invoke "make" "install"
+                      (append make-flags
+                              (list (string-append "DESTDIR=" out)
+                                    "prefix="))))))
+         (add-after 'install 'check
+           (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
+             (let*
+                 ((lua-version ,(version-major+minor (package-version lua)))
+                  (env-suffix (if (equal? lua-version "5.1")
+                                  ""
+                                  (string-append
+                                   "_"
+                                   (string-replace-substring lua-version "." "_"))))
+
+                  (lua-ossl (assoc-ref inputs "lua-ossl"))
+                  (out (assoc-ref outputs "out"))
+
+                  (lua-cpath (lambda (p)
+                               (string-append p "/lib/lua/" lua-version "/?.so")))
+                  (lua-path (lambda (p)
+                              (string-append p "/share/lua/" lua-version "/?.lua"))))
+               ;; The test suite sets Lua-version-specific search-path variables
+               ;; when available so we must do the same, as these take
+               ;; precedence over the generic "LUA_CPATH" and "LUA_PATH"
+               (setenv (string-append "LUA_CPATH" env-suffix)
+                       (string-append
+                        (string-join (map lua-cpath (list out lua-ossl)) ";")
+                        ";;"))
+               (setenv (string-append "LUA_PATH" env-suffix)
+                       (string-append
+                        (string-join (map lua-path (list out lua-ossl)) ";")
+                        ";;"))
+
+               ;; Skip regression tests we expect to fail
+               (with-directory-excursion "regress"
+                 (for-each (lambda (f)
+                             (rename-file f (string-append f ".skip")))
+                           (append
+                            ;; Regression tests that require network
+                            ;; connectivity
+                            '("22-client-dtls.lua"
+                              "30-starttls-completion.lua"
+                              "62-noname.lua"
+                              "153-dns-resolvers.lua")
+
+                            ;; Regression tests that require LuaJIT
+                            '("44-resolvers-gc.lua"
+                              "51-join-defunct-thread.lua")
+
+                            ;; Regression tests that require Lua 5.3
+                            (if (not (equal? lua-version "5.3"))
+                                '("152-thread-integer-passing.lua")
+                                '()))))
+
+               (apply invoke "make" "check" make-flags)))))))
+    (native-inputs
+     `(("m4" ,m4)))
+    (inputs
+     `(("lua" ,lua)
+       ("openssl" ,openssl)))
+    (propagated-inputs
+     `(("lua-ossl" ,lua-ossl)))
+    (home-page "https://25thandclement.com/~william/projects/cqueues.html")
+    (synopsis "Event loop for Lua using continuation queues")
+    (description "The cqueues extension module for Lua implements an event loop
+that operates through the yielding and resumption of coroutines.  It is designed
+to be non-intrusive, composable, and embeddable within existing applications.")
+    (license license:expat)))
+
+(define-public lua-cqueues
+  (make-lua-cqueues "lua-cqueues" lua lua-ossl))
+
+(define-public lua5.1-cqueues
+  (make-lua-cqueues "lua5.1-cqueues" lua-5.1 lua5.1-ossl))
+
+(define-public lua5.2-cqueues
+  (make-lua-cqueues "lua5.2-cqueues" lua-5.2 lua5.2-ossl))
+
 (define-public lua-penlight
   (package
     (name "lua-penlight")
@@ -348,7 +515,7 @@ secure session between the peers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Tieske/Penlight.git")
+             (url "https://github.com/Tieske/Penlight")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -388,7 +555,7 @@ standard libraries.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stevedonovan/LDoc.git")
+             (url "https://github.com/stevedonovan/LDoc")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -565,7 +732,7 @@ Grammars (PEGs).")
               ;; not include the pkg-config files.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/luvit/luv.git")
+                    (url "https://github.com/luvit/luv")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -598,7 +765,7 @@ Grammars (PEGs).")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/keplerproject/lua-compat-5.3.git")
+                 (url "https://github.com/keplerproject/lua-compat-5.3")
                  (commit "daebe77a2f498817713df37f0bb316db1d82222f")))
            (file-name "lua-compat-5.3-checkout")
            (sha256
@@ -665,7 +832,7 @@ on numbers.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/jeremyong/Selene.git")
+                    (url "https://github.com/jeremyong/Selene")
                     ;; The release is quite old.
                     (commit "ffe1ade2568d4cff5894552be8f43e63e379a4c9")))
               (file-name "Selene")
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index fbf32bf337..29f1a49317 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -137,7 +137,19 @@ able to change themes, icons, and fonts used by GTK+ applications.")
                (base32
                 "04n3vgh3ix12p8jfs4w0dyfq3anbjy33h7g53wbbqqc0f74xyplb"))))
     (build-system gnu-build-system)
-    (inputs `(("gtk+" ,gtk+-2)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'xrandr-absolutely
+           ;; lxrandr is useless without xrandr and gives an unhelpful error
+           ;; message if it's not in $PATH, so make it a hard dependency.
+           (lambda* (#:key input #:allow-other-keys)
+             (substitute* "src/lxrandr.c"
+               (("(\"|')xrandr\"" _ match)
+                (string-append match (which "xrandr") "\"")))
+             #t)))))
+    (inputs `(("gtk+" ,gtk+-2)
+              ("xrandr" ,xrandr)))
     (native-inputs `(("intltool"   ,intltool)
                      ("pkg-config" ,pkg-config)))
     (synopsis "LXDE monitor configuration tool")
@@ -258,7 +270,7 @@ with freedesktop.org standard.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/IgnorantGuru/spacefm.git")
+         (url "https://github.com/IgnorantGuru/spacefm")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index f9c757a804..f445a7eb30 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019, 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2020 Fakhri Sajadi <f.sajadi@pantherx.org>
+;;; Copyright © 2020 André Batista <nandre@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -76,7 +77,7 @@
        ;; Download from github rather than launchpad because launchpad trunk
        ;; tarball hash is not deterministic.
        (uri (git-reference
-             (url "https://github.com/unity8-team/libdbusmenu-qt.git")
+             (url "https://github.com/unity8-team/libdbusmenu-qt")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -99,14 +100,14 @@ and import their menus over DBus.")
 (define-public libstatgrab
   (package
     (name "libstatgrab")
-    (version "0.91")
+    (version "0.92")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://ftp.i-scream.org/pub/i-scream/libstatgrab/"
                            name "-" version ".tar.gz"))
        (sha256
-        (base32 "1azinx2yzs442ycwq6p15skl3mscmqj7fd5hq7fckhjp92735s83"))))
+        (base32 "15m1sl990l85ijf8pnc6hdfha6fqyiq74mijrzm3xz4zzxm91wav"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-tests")))
@@ -126,7 +127,7 @@ to statistics about the system on which it's run.")
 (define-public lxqt-build-tools
   (package
     (name "lxqt-build-tools")
-    (version "0.6.0")
+    (version "0.7.0")
     (source
      (origin
        (method url-fetch)
@@ -134,7 +135,7 @@ to statistics about the system on which it's run.")
                            "/download/" version
                            "/lxqt-build-tools-" version ".tar.xz"))
        (sha256
-        (base32 "0n0p0mf12n9f7zm2592779rpqrbcamfdz87nnjb8j058bc8g3214"))))
+        (base32 "147vdkc25mrlr0fy785yzwhm4gwjxa5xl3n3hljz4c97m531kzl5"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -153,13 +154,13 @@ to statistics about the system on which it's run.")
     (description
      "Lxqt-build-tools is providing several tools needed to build LXQt
 itself as well as other components maintained by the LXQt project.")
-    (home-page "https://lxqt.org")
+    (home-page "https://lxqt.github.io")
     (license license:lgpl2.1+)))
 
 (define-public libqtxdg
   (package
     (name "libqtxdg")
-    (version "3.4.0")
+    (version "3.5.0")
     (source
      (origin
        (method url-fetch)
@@ -167,7 +168,7 @@ itself as well as other components maintained by the LXQt project.")
              "https://github.com/lxqt/libqtxdg/releases/download/"
              version "/libqtxdg-" version ".tar.xz"))
        (sha256
-        (base32 "0vmn59653dmy79mnbnibhdq9jmh11091zkfx0y0qh58rj2xvpdbv"))))
+        (base32 "0g2mwipgl8737jhgqymjixvk745svh2rlini3qr92lrg60v9paa1"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -197,7 +198,7 @@ in Qt.")
 (define-public liblxqt
   (package
     (name "liblxqt")
-    (version "0.14.1")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
@@ -205,7 +206,7 @@ in Qt.")
              "https://github.com/lxqt/" name "/releases/download/"
              version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1gb922npf6nw4w3nkvh4czk8xmdzzqkzq3zgl1h303fjaib359qs"))))
+        (base32 "0mg62gypjpmpjd3lr7rrvzmkkhli1vf5pri47hg76byz84vng4a9"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -234,7 +235,7 @@ in Qt.")
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Core utility library for all LXQt components")
     (description "liblxqt provides the basic libraries shared by the
 components of the LXQt desktop environment.")
@@ -243,21 +244,21 @@ components of the LXQt desktop environment.")
 (define-public libsysstat
   (package
     (name "libsysstat")
-    (version "0.4.2")
+    (version "0.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0rz9w49khra9kl91kfnd3wxkldy1fqf6755mvlgbsqxb1yv8597w"))))
+        (base32 "1s5s7skzy3sh4rlnfy7r0cg3r1scvp35ldd28bhnqjya99m7ip37"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no tests
     (inputs
      `(("qtbase" ,qtbase)))
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Library used to query system info and statistics")
     (description "libsysstat is a library to query system information like CPU
 and memory usage or network traffic.")
@@ -269,14 +270,14 @@ and memory usage or network traffic.")
 (define-public lxqt-about
   (package
     (name "lxqt-about")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "01xp5ddcxc9wvl7jm4179hjrirj07mpzm9z50936d1fqx34wfbis"))))
+        (base32 "0p24z1vykyp8dkhwaxxi4hw5150yv9a2ncc55vbwx4c6bmmibmsh"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -303,7 +304,7 @@ and memory usage or network traffic.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org")
+    (home-page "https://lxqt.github.io")
     (synopsis "Provides information about LXQt and the system")
     (description "lxqt-about is a dialogue window providing information about
 LXQt and the system it's running on.")
@@ -312,14 +313,14 @@ LXQt and the system it's running on.")
 (define-public lxqt-admin
   (package
     (name "lxqt-admin")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0f0skkxqyhpidpd5phliax869v4n2whvglg8rahzia2zhw4ylzry"))))
+        (base32 "1zal37hyzqimwsymmi3w15n1iq78g53754s8abc9ylkzc236xpfc"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -349,7 +350,7 @@ LXQt and the system it's running on.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org")
+    (home-page "https://lxqt.github.io")
     (synopsis "LXQt system administration tool")
     (description "lxqt-admin is providing two GUI tools to adjust settings of
 the operating system LXQt is running on.")
@@ -358,14 +359,14 @@ the operating system LXQt is running on.")
 (define-public lxqt-config
   (package
     (name "lxqt-config")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "16k36knv6d72gg8hp7423l3ic43y3l3zbaf3spqn2a354y30myrg"))))
+        (base32 "18fagd6ynmx74qw0pjkkg2n3v6s18n6lcsbj7lvfd4lkbcfnzqpb"))))
     (build-system cmake-build-system)
     (inputs
      `(("eudev" ,eudev)
@@ -418,7 +419,7 @@ the operating system LXQt is running on.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org")
+    (home-page "https://lxqt.github.io")
     (synopsis "Tools to configure LXQt and the underlying operating system")
     (description "lxqt-config is providing several tools involved in the
 configuration of both LXQt and the underlying operating system.")
@@ -427,7 +428,7 @@ configuration of both LXQt and the underlying operating system.")
 (define-public lxqt-globalkeys
   (package
     (name "lxqt-globalkeys")
-    (version "0.14.3")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
@@ -435,7 +436,7 @@ configuration of both LXQt and the underlying operating system.")
                            "releases/download/" version "/"
                            "lxqt-globalkeys-" version ".tar.xz"))
        (sha256
-        (base32 "0mgl05qxvq4pdqvcw34i2cbyy87x605wy3np62mrbbb1kdfjrfg6"))))
+        (base32 "1wfvpvy32p60j7xibfa30skzxx2187qrsqxm1npabj1y5bva2m6f"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -466,7 +467,7 @@ configuration of both LXQt and the underlying operating system.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Daemon used to register global keyboard shortcuts")
     (description "lxqt-globalkeys is providing tools to set global keyboard
 shortcuts in LXQt sessions, that is shortcuts which apply to the LXQt session
@@ -476,14 +477,14 @@ as a whole and are not limited to distinct applications.")
 (define-public lxqt-notificationd
   (package
     (name "lxqt-notificationd")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1kiag3fcx12qmslln6x6lwvm4f1spymwf71389kdya3vwx7hkmcy"))))
+        (base32 "01fva6q2vb0aframxgm0jslvb3z0dcwmhz0yr239bskvdwpn885w"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -513,7 +514,7 @@ as a whole and are not limited to distinct applications.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "The LXQt notification daemon")
     (description "lxqt-notificationd is LXQt's implementation of a daemon
 according to the Desktop Notifications Specification.")
@@ -522,14 +523,14 @@ according to the Desktop Notifications Specification.")
 (define-public lxqt-openssh-askpass
   (package
     (name "lxqt-openssh-askpass")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1fvbgjidpifn420avh8n1gym49vcz6zgayz7xygg1x93s4awy1cs"))))
+        (base32 "1h8nhj4ig8419kfdqjsig16ayf2byrzgrk698aiym544n5ayjwak"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -552,7 +553,7 @@ according to the Desktop Notifications Specification.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "GUI to query passwords on behalf of SSH agents")
     (description "lxqt-openssh-askpass is a GUI to query credentials on behalf
 of other programs.")
@@ -561,14 +562,14 @@ of other programs.")
 (define-public lxqt-panel
   (package
     (name "lxqt-panel")
-    (version "0.14.1")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1r3wx0v3jm7j41h7gxr49izc9xa1afvrzq4wcdm0qbj98qa1rgpq"))))
+        (base32 "1b40l9p31nz96q38vwgd1zj142xcwqnjwljsird4nnzs2smjn1c6"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -618,7 +619,7 @@ of other programs.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "The LXQt desktop panel")
     (description "lxqt-panel represents the taskbar of LXQt.")
     (license license:lgpl2.1+)))
@@ -626,14 +627,14 @@ of other programs.")
 (define-public lxqt-policykit
   (package
     (name "lxqt-policykit")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "127rqb0nprybkc41lk0yq0r0dk5pbbw22gvrm4pwag71qh8wpk5i"))))
+        (base32 "0kzc9mxl47bz6mifmk4xi9sxh7jl31d55j7cq8vijqg3w1yb5rp2"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -666,7 +667,7 @@ of other programs.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "The LXQt PolicyKit agent")
     (description "lxqt-policykit is the polkit authentication agent of
 LXQt.")
@@ -675,14 +676,14 @@ LXQt.")
 (define-public lxqt-powermanagement
   (package
     (name "lxqt-powermanagement")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "06bvgbkbl9p9n8ba5cfsynqgmpb5c8yfnsvp7zqhflj8k9p9msip"))))
+        (base32 "1kal7w6ngs9yrg309p4wacmabpynsrysmbpfkpphg158z548wwl0"))))
     (build-system cmake-build-system)
     (inputs
      `(("kidletime" ,kidletime)
@@ -714,7 +715,7 @@ LXQt.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Power management module for LXQt")
     (description "lxqt-powermanagement is providing tools to monitor power
 management events and optionally trigger actions like e. g. shut down a system
@@ -724,14 +725,14 @@ when laptop batteries are low on power.")
 (define-public lxqt-qtplugin
   (package
     (name "lxqt-qtplugin")
-    (version "0.14.0")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "18y7xfxwyismcycg70q6r8zrcygz1pdcvg6lqc6ba7azqb9806ds"))))
+        (base32 "17kmpm3nn07xyxz21f86y3hqi6s0jvqyhsc703zy0463sc58vvys"))))
     (build-system cmake-build-system)
     (inputs
      `(("libdbusmenu-qt" ,libdbusmenu-qt)
@@ -753,7 +754,7 @@ when laptop batteries are low on power.")
                (("DESTINATION \"\\$\\{QT_PLUGINS_DIR\\}")
                 "DESTINATION \"lib/qt5/plugins"))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "LXQt Qt platform integration plugin")
     (description "lxqt-qtplugin is providing a library libqtlxqt to integrate
 Qt with LXQt.")
@@ -762,14 +763,14 @@ Qt with LXQt.")
 (define-public lxqt-runner
   (package
     (name "lxqt-runner")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1c687shypivkhjrpzs1jcy5l2i8d7xzm31c4is1xx6x9nbkgm4bm"))))
+        (base32 "02xxpflhh6a8qpnjhl5mrl07ikzl5x21mf0rj8nmm0v28rpkqjk1"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -802,7 +803,7 @@ Qt with LXQt.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Tool used to launch programs quickly by typing their names")
     (description "lxqt-runner provides a GUI that comes up on the desktop and
 allows for launching applications or shutting down the system.")
@@ -811,14 +812,14 @@ allows for launching applications or shutting down the system.")
 (define-public lxqt-session
   (package
     (name "lxqt-session")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "11i2vimv3336dvvxb6y5csdybwjncr7cq3kwlj52vkpisnxslvgy"))))
+        (base32 "17y6l1l2m2hzxlzvr7wbixnldbr7waky97vj6lx72r81l45wqkz4"))))
     (build-system cmake-build-system)
     (inputs
      `(("eudev" ,eudev)
@@ -862,7 +863,7 @@ allows for launching applications or shutting down the system.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Session manager for LXQt")
     (description "lxqt-session provides the standard session manager
 for the LXQt desktop environment.")
@@ -871,14 +872,14 @@ for the LXQt desktop environment.")
 (define-public lxqt-sudo
   (package
     (name "lxqt-sudo")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0mbygp2kkppwk7sxvpnwavdwrx88mh7ldcg6xm3zw1ndp29danay"))))
+        (base32 "1v4gzmld3zqi3y9pdy3hb8lq81jwbgi4ia00lbzccg8cm0m8n55w"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -903,7 +904,7 @@ for the LXQt desktop environment.")
                 (string-append (assoc-ref outputs "out")
                                "/share/lxqt/translations")))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "GUI frontend for sudo/su")
     (description "lxqt-sudo is a graphical front-end of commands sudo and su
 respectively.  As such it enables regular users to launch applications with
@@ -913,14 +914,14 @@ permissions of other users including root.")
 (define-public lxqt-themes
   (package
     (name "lxqt-themes")
-    (version "0.14.0")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0p7svdpp0z44hvgrp2aip6hym0gdhbanyxsz6iz8sjnn28c995ia"))))
+        (base32 "1dzv60q1dhi666ajh218smkp3ybh5vl2mxyvlbyc9zwvhgx3f0d1"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)))
@@ -937,7 +938,7 @@ permissions of other users including root.")
                (("DESTINATION \"\\$\\{LXQT_SHARE_DIR\\}")
                 "DESTINATION \"share/lxqt"))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Themes, graphics and icons for LXQt")
     (description "This package comprises a number of graphic files and themes
 for LXQt.")
@@ -951,14 +952,14 @@ for LXQt.")
 (define-public libfm-qt
   (package
     (name "libfm-qt")
-    (version "0.14.1")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "06p3wqpc574v9f94wkq9hqmbbvb9q8phfpq301z55c5r939f4hrp"))))
+        (base32 "034kc8i571m31fksprih6iiykxj85j98fmm6nrkmlwql45kr6rvs"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f))                    ; no tests
@@ -975,7 +976,7 @@ for LXQt.")
      `(("pkg-config" ,pkg-config)
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Qt binding for libfm")
     (description "libfm-qt is the Qt port of libfm, a library providing
 components to build desktop file managers which belongs to LXDE.")
@@ -984,14 +985,14 @@ components to build desktop file managers which belongs to LXDE.")
 (define-public pcmanfm-qt
   (package
     (name "pcmanfm-qt")
-    (version "0.14.1")
+    (version "0.15.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0x3c25inlxll965xszx37mnl5gp3smm2h7x04f67z0qlh3vsbrjq"))))
+        (base32 "1izc60hrc16sv2ig9psr3br9iq8nln6a2ycfspzycgpk8rh0f6jd"))))
     (build-system cmake-build-system)
     (inputs
      `(("libfm-qt" ,libfm-qt)
@@ -1011,7 +1012,7 @@ components to build desktop file managers which belongs to LXDE.")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "File manager and desktop icon manager")
     (description "PCManFM-Qt is the Qt port of PCManFM, the file manager of
 LXDE.")
@@ -1023,14 +1024,14 @@ LXDE.")
 (define-public compton-conf
   (package
     (name "compton-conf")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "11n8k59jd0q2x66cispc9dpk139mp6j99hq1yjccxvh21vhc7mbc"))))
+        (base32 "1ii1bans7wdafm9rmxvsdqp3ad4cj0pa8kf92plbmbm3nycpf1q9"))))
     (build-system cmake-build-system)
     (inputs
      `(("libconfig" ,libconfig)
@@ -1049,7 +1050,7 @@ LXDE.")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
              #t)))))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "GUI configuration tool for compton X composite manager")
     (description "@code{compton-conf} is a configuration tool for X composite
 manager Compton.")
@@ -1058,14 +1059,14 @@ manager Compton.")
 (define-public lximage-qt
   (package
     (name "lximage-qt")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0iiq55rm4z2jp19q1pbd2whifwvxg052q324vrwp4p7nz0wh04za"))))
+        (base32 "02iyymb8ywlzvv69lga5a86b7kh4v78zw6qzq5kcnjp1rpj2rjrk"))))
     (build-system cmake-build-system)
     (inputs
      `(("libexif" ,libexif)
@@ -1079,7 +1080,7 @@ manager Compton.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "The image viewer and screenshot tool for lxqt")
     (description "LXImage-Qt is the Qt port of LXImage, a simple and fast
 image viewer.")
@@ -1088,14 +1089,14 @@ image viewer.")
 (define-public obconf-qt
   (package
     (name "obconf-qt")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1kzb7364150b60qd3wcgnw78b9ia5k3b16kq8w3p1y7pg6pddy8m"))))
+        (base32 "1vcv2y54hgxcf76cr775632kajmvz3v4x1q3r6p1lzs9s7lmrh6q"))))
     (build-system cmake-build-system)
     (inputs
      `(("imlib2" ,imlib2)
@@ -1114,7 +1115,7 @@ image viewer.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Openbox configuration tool")
     (description "ObConf-Qt is a Qt port of ObConf, a configuration editor for
 window manager OpenBox.")
@@ -1123,14 +1124,14 @@ window manager OpenBox.")
 (define-public pavucontrol-qt
   (package
     (name "pavucontrol-qt")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "18mw5r8grfrf95vxjbqrr790kl5l59qdqcmlxmwa6rwbfgywj1fq"))))
+        (base32 "15wknwmb4640r5fm4wiq6xa70qa2djay2806wyvajh11xjmqy566"))))
     (build-system cmake-build-system)
     (inputs
      `(("glib" ,glib)
@@ -1144,7 +1145,7 @@ window manager OpenBox.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Pulseaudio mixer in Qt")
     (description "@code{pavucontrol-qt} is the Qt port of volume control
 @code{pavucontrol} of sound server @code{PulseAudio}.")
@@ -1153,17 +1154,20 @@ window manager OpenBox.")
 (define-public qps
   (package
     (name "qps")
-    (version "2.0.0")
+    (version "2.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0ysnh918n9wz2vgjvyix32kx2j0v4lskjacgcychrpb8sch2dbsi"))))
+        (base32 "0yym1bpglz8vha28x7k21fxx1vlsq19m3fyhk2cq3pwq3nqijwp7"))))
     (build-system cmake-build-system)
     (inputs
-     `(("libxrender" ,libxrender)
+     `(("kwindowsystem" ,kwindowsystem)
+       ("libxrender" ,libxrender)
+       ("liblxqt" ,liblxqt)
+       ("libqtxdg" ,libqtxdg)
        ("qtbase" ,qtbase)
        ("qtx11extras" ,qtx11extras)))
     (native-inputs
@@ -1171,7 +1175,7 @@ window manager OpenBox.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Qt-based visual process status monitor")
     (description "@code{qps} is a monitor that displays the status of the
 processes currently in existence, much like code{top} or code{ps}.")
@@ -1180,14 +1184,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qtermwidget
   (package
     (name "qtermwidget")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0v1vvi8vf9y8nv8y0gzffaqji53s75ab5jypksih0ndcws8ryww4"))))
+        (base32 "1vn3bbc99py0ak7z9s6p71n9cacpckz57a1p97iwb0p23g4zgjkf"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1197,7 +1201,7 @@ processes currently in existence, much like code{top} or code{ps}.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "The terminal widget for QTerminal")
     (description "QTermWidget is a terminal emulator widget for Qt 5.")
     (license license:gpl2+)))
@@ -1205,14 +1209,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qterminal
   (package
     (name "qterminal")
-    (version "0.14.1")
+    (version "0.15.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0cgyaskyqginmm85d11inbi0mmxrsrnvgyx6g4l4l4iqpphfq670"))))
+        (base32 "0r7xmwjpak47ayj7cj37bwrdlv1mx5nhqpccb5pbn2fh8slp8zsm"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1223,7 +1227,7 @@ processes currently in existence, much like code{top} or code{ps}.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                      ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Lightweight Qt-based terminal emulator")
     (description "QTerminal is a lightweight Qt terminal emulator based on
 QTermWidget.")
@@ -1232,14 +1236,14 @@ QTermWidget.")
 (define-public screengrab
   (package
     (name "screengrab")
-    (version "1.101")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/screengrab/releases/download/"
                            version "/screengrab-" version ".tar.xz"))
        (sha256
-        (base32 "05f81xjlmiykd7iwx5xns5vnynjq4js4x1bk8wd648frrksp44fa"))))
+        (base32 "14znjw3d3gw02fsmhrjcj86l173m2ypl1x8hhba9ld23icr1gqwf"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -1252,7 +1256,7 @@ QTermWidget.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Crossplatform tool for fast making screenshots")
     (description "ScreenGrab is a program for fast creating screenshots, and
 easily publishing them on internet image hosting services.")
@@ -1262,16 +1266,14 @@ easily publishing them on internet image hosting services.")
 (define-public lxqt-archiver
   (package
     (name "lxqt-archiver")
-    (version "0.0.96")
+    (version "0.2.0")
     (source
       (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url (string-append "https://github.com/lxqt/" name ".git"))
-               (commit version)))
-        (file-name (git-file-name name version))
+        (method url-fetch)
+        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
+                           version "/" name "-" version ".tar.xz"))
         (sha256
-          (base32 "09rw774vxj96wcpxxncz6nr9bmw7l4l0kwylmz1saq6rpa2yvn2i"))))
+          (base32 "1i725zaah0wv18j5fchg6isbh4b601filx549cq2hkzf2sylh9ff"))))
     (build-system cmake-build-system)
     (inputs
       `(("glib" ,glib)
@@ -1285,7 +1287,7 @@ easily publishing them on internet image hosting services.")
         ("qttools" ,qttools)))
     (arguments
       '(#:tests? #f))
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (synopsis "Simple & lightweight desktop-agnostic Qt file archiver")
     (description
      "This package provides a Qt graphical interface to archiving programs
@@ -1295,11 +1297,11 @@ like @command{tar} and @command{zip}.")
 (define-public lxqt-connman-applet
   ;; since the main developers didn't release any version yet,  their 
   ;; latest commit on `master` branch at the moment used for this version.
-  (let ((commit "3db374eebd8d851f68a50fc5d1ef5fa9478c275e")
+  (let ((commit "8a6cc14371a2f18f963e6a2996446082bb60f17d")
         (revision "0"))
     (package
       (name "lxqt-connman-applet")
-      (version (git-version "0.14.1" revision commit))
+      (version (git-version "0.15.0" revision commit))
       (source
         (origin
           (method git-fetch)
@@ -1307,7 +1309,7 @@ like @command{tar} and @command{zip}.")
             (url (string-append "https://github.com/lxqt/" name ".git"))
             (commit commit)))
           (file-name (git-file-name name version))
-          (sha256 (base32 "1brkyzjmpa7hiv8p8rvmkcgagchh2zn71ry4pjiplga05as3jc11"))))
+          (sha256 (base32 "0br4bxfrl8k7lq84aq4grznlk8xzzjgkmd19bf9mwjr0a87gg72v"))))
       (build-system cmake-build-system)
       (inputs
         `(("kwindowsystem" ,kwindowsystem)
@@ -1330,7 +1332,14 @@ like @command{tar} and @command{zip}.")
                      (string-append (assoc-ref outputs "out")
                                     "/share/lxqt/translations"))
                     (("\\$\\{LXQT_ETC_XDG_DIR\\}") "etc/xdg"))
-                  #t)))))
+                  #t))
+	      (add-after 'unpack 'remove-definitions
+		(lambda _
+		  (substitute* "CMakeLists.txt"
+		    (("include\\(LXQtCompilerSettings NO_POLICY_SCOPE\\)")
+		     "include(LXQtCompilerSettings NO_POLICY_SCOPE)
+remove_definitions(-DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII)"))
+		  #t)))))
       (home-page "https://github.com/lxqt/lxqt-connman-applet")
       (synopsis "System-tray applet for connman")
       (description "This package provides a Qt-based system-tray applet for
@@ -1385,5 +1394,5 @@ desktop.")
        ("qterminal" ,qterminal)))
     (synopsis "The Lightweight Qt Desktop Environment")
     (description "LXQt is a lightweight Qt desktop environment.")
-    (home-page "https://lxqt.org/")
+    (home-page "https://lxqt.github.io")
     (license license:gpl2+)))
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index cc69aa3ec1..18a4ac9ef2 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -37,7 +37,6 @@
   #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix svn-download)
-  #:use-module (guix build-system asdf)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system ocaml)
@@ -63,7 +62,6 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ocaml)
@@ -95,7 +93,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/libfann/fann.git")
+                      (url "https://github.com/libfann/fann")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -317,7 +315,7 @@ networks) based on simulation of (stochastic) flow in graphs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/fhcrc/mcl.git")
+             (url "https://github.com/fhcrc/mcl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -586,7 +584,7 @@ in terms of new algorithms.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ReactiveX/RxCpp.git")
+             (url "https://github.com/ReactiveX/RxCpp")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1rdpa3jlc181jd08nk437aar085h28i45s6nzrv65apb3xyyz0ij"))
@@ -805,7 +803,7 @@ computing environments.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/scikit-learn/scikit-learn.git")
+             (url "https://github.com/scikit-learn/scikit-learn")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -862,7 +860,7 @@ data analysis.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/scikit-learn/scikit-learn.git")
+                      (url "https://github.com/scikit-learn/scikit-learn")
                       (commit version)))
                 (file-name (git-file-name "python-scikit-learn" version))
                 (sha256
@@ -946,14 +944,14 @@ main intended application of Autograd is gradient-based optimization.")
     (name "lightgbm")
     (version "2.0.12")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Microsoft/LightGBM/archive/v"
-                    version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/Microsoft/LightGBM")
+                     (commit (string-append "v" version))))
               (sha256
                (base32
-                "132zf0yk0545mg72hyzxm102g3hpb6ixx9hnf8zd2k55gas6cjj1"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "0jlvyn7k81dzrh9ij3zw576wbgiwmmr26rzpdxjn1dbpc3njpvzi"))
+              (file-name (git-file-name name version))))
     (native-inputs
      `(("python-pytest" ,python-pytest)
        ("python-nose" ,python-nose)))
@@ -968,8 +966,8 @@ main intended application of Autograd is gradient-based optimization.")
        #:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda* (#:key outputs #:allow-other-keys)
-             (with-directory-excursion ,(string-append "../LightGBM-" version)
+           (lambda _
+             (with-directory-excursion "../source"
                (invoke "pytest" "tests/c_api_test/test_.py")))))))
     (build-system cmake-build-system)
     (home-page "https://github.com/Microsoft/LightGBM")
@@ -1066,7 +1064,7 @@ association studies (GWAS) on extremely large data sets.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/kaldi-asr/kaldi.git")
+                      (url "https://github.com/kaldi-asr/kaldi")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1177,7 +1175,7 @@ written in C++.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/alumae/gst-kaldi-nnet2-online.git")
+                      (url "https://github.com/alumae/gst-kaldi-nnet2-online")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1249,7 +1247,7 @@ automatically.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/alumae/kaldi-gstreamer-server.git")
+                      (url "https://github.com/alumae/kaldi-gstreamer-server")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1353,7 +1351,7 @@ Python.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tensorflow/tensorflow.git")
+             (url "https://github.com/tensorflow/tensorflow")
              (commit (string-append "v" version))))
        (file-name (string-append "tensorflow-" version "-checkout"))
        (sha256
@@ -1683,7 +1681,7 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/google/double-conversion.git")
+                   (url "https://github.com/google/double-conversion")
                    (commit commit)))
              (file-name
               (git-file-name "double-conversion"
@@ -1728,7 +1726,7 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n")))
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/google/highwayhash.git")
+                   (url "https://github.com/google/highwayhash")
                    (commit commit)))
              (file-name (string-append "highwayhash-0-" revision
                                        (string-take commit 7)
@@ -1965,122 +1963,6 @@ that:
 @end itemize\n")
     (license license:expat)))
 
-(define-public sbcl-cl-libsvm-format
-  (let ((commit "3300f84fd8d9f5beafc114f543f9d83417c742fb")
-        (revision "0"))
-    (package
-      (name "sbcl-cl-libsvm-format")
-      (version (git-version "0.1.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/masatoi/cl-libsvm-format.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0284aj84xszhkhlivaigf9qj855fxad3mzmv3zfr0qzb5k0nzwrg"))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-       `(("prove" ,sbcl-prove)
-         ("prove-asdf" ,sbcl-prove-asdf)))
-      (inputs
-       `(("alexandria" ,sbcl-alexandria)))
-      (synopsis "LibSVM data format reader for Common Lisp")
-      (description
-       "This Common Lisp library provides a fast reader for data in LibSVM
-format.")
-      (home-page "https://github.com/masatoi/cl-libsvm-format")
-      (license license:expat))))
-
-(define-public cl-libsvm-format
-  (sbcl-package->cl-source-package sbcl-cl-libsvm-format))
-
-(define-public ecl-cl-libsvm-format
-  (sbcl-package->ecl-package sbcl-cl-libsvm-format))
-
-(define-public sbcl-cl-online-learning
-  (let ((commit "fc7a34f4f161cd1c7dd747d2ed8f698947781423")
-        (revision "0"))
-    (package
-      (name "sbcl-cl-online-learning")
-      (version (git-version "0.5" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/masatoi/cl-online-learning.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "14x95rlg80ay5hv645ki57pqvy12v28hz4k1w0f6bsfi2rmpxchq"))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-       `(("prove" ,sbcl-prove)
-         ("prove-asdf" ,sbcl-prove-asdf)))
-      (inputs
-       `(("cl-libsvm-format" ,sbcl-cl-libsvm-format)
-         ("cl-store" ,sbcl-cl-store)))
-      (arguments
-       `(;; FIXME: Tests pass but then the check phase crashes
-         #:tests? #f))
-      (synopsis "Online Machine Learning for Common Lisp")
-      (description
-       "This library contains a collection of machine learning algorithms for
-online linear classification written in Common Lisp.")
-      (home-page "https://github.com/masatoi/cl-online-learning")
-      (license license:expat))))
-
-(define-public cl-online-learning
-  (sbcl-package->cl-source-package sbcl-cl-online-learning))
-
-(define-public ecl-cl-online-learning
-  (sbcl-package->ecl-package sbcl-cl-online-learning))
-
-(define-public sbcl-cl-random-forest
-  (let ((commit "85fbdd4596d40e824f70f1b7cf239cf544e49d51")
-        (revision "0"))
-    (package
-      (name "sbcl-cl-random-forest")
-      (version (git-version "0.1" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/masatoi/cl-random-forest.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "097xv60i1ndz68sg9p4pc7c5gvyp9i1xgw966b4wwfq3x6hbz421"))))
-      (build-system asdf-build-system/sbcl)
-      (native-inputs
-       `(("prove" ,sbcl-prove)
-         ("prove-asdf" ,sbcl-prove-asdf)
-         ("trivial-garbage" ,sbcl-trivial-garbage)))
-      (inputs
-       `(("alexandria" ,sbcl-alexandria)
-         ("cl-libsvm-format" ,sbcl-cl-libsvm-format)
-         ("cl-online-learning" ,sbcl-cl-online-learning)
-         ("lparallel" ,sbcl-lparallel)))
-      (arguments
-       `(#:tests? #f)) ; The tests download data from the Internet
-      (synopsis "Random Forest and Global Refinement for Common Lisp")
-      (description
-       "CL-random-forest is an implementation of Random Forest for multiclass
-classification and univariate regression written in Common Lisp.  It also
-includes an implementation of Global Refinement of Random Forest.")
-      (home-page "https://github.com/masatoi/cl-random-forest")
-      (license license:expat))))
-
-(define-public cl-random-forest
-  (sbcl-package->cl-source-package sbcl-cl-random-forest))
-
-(define-public ecl-cl-random-forest
-  (sbcl-package->ecl-package sbcl-cl-random-forest))
-
 (define-public gloo
   (let ((version "0.0.0") ; no proper version tag
         (commit "ca528e32fea9ca8f2b16053cff17160290fc84ce")
@@ -2092,7 +1974,7 @@ includes an implementation of Global Refinement of Random Forest.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/facebookincubator/gloo.git")
+               (url "https://github.com/facebookincubator/gloo")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 87388747e4..d4ef3a1f3e 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -107,6 +107,8 @@
   #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
@@ -128,13 +130,7 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xml)
-  #:use-module ((guix licenses)
-                #:select (fdl1.1+
-                           agpl3+
-                           gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
-                           non-copyleft (expat . license:expat) bsd-3
-                           public-domain bsd-4 isc (openssl . license:openssl)
-                           bsd-2 x11-style agpl3 asl2.0 perl-license))
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -183,7 +179,7 @@ in the MUA, it is first passed to Anubis, which performs additional processing
 to the message before passing it on for delivery by the MTA.  Anubis may, for
 example, modify the message headers or body, or encrypt or sign the message.")
     (home-page "https://www.gnu.org/software/anubis/manual/")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public mailutils
   (package
@@ -289,7 +285,7 @@ also available, simplifying the addition of mail capabilities to new
 software.")
     (license
      ;; Libraries are under LGPLv3+, and programs under GPLv3+.
-     (list gpl3+ lgpl3+))))
+     (list license:gpl3+ license:lgpl3+))))
 
 (define-public guile2.2-mailutils
   (package
@@ -380,13 +376,13 @@ Nullmailer is designed to be simple to configure, easy to extend, and secure.
 It requires little ongoing administration.  The included @command{sendmail}
 emulator front-end should allow most (if not all) sendmail-compatible programs
 to run without any changes.")
-    (license (list lgpl2.1+         ; lib/cli++/ (but some files lack headers)
-                   gpl2+))))        ; everything else
+    (license (list license:lgpl2.1+ ; lib/cli++/ (but some files lack headers)
+                   license:gpl2+)))) ; everything else
 
 (define-public fetchmail
   (package
     (name "fetchmail")
-    (version "6.4.6")
+    (version "6.4.8")
     (source
      (origin
        (method url-fetch)
@@ -394,7 +390,7 @@ to run without any changes.")
                            (version-major+minor version) "/"
                            "fetchmail-" version ".tar.xz"))
        (sha256
-        (base32 "04b0sq1xad6gs1bfhkbmhsn1kq6y4gsx9l9ywjvd5d0rc15yrvqn"))))
+        (base32 "1g893dr3982vrqzxybmflnqfmd1q6yipd9krvxn0avhlrrp97k96"))))
     (build-system gnu-build-system)
     (inputs
      `(("openssl" ,openssl)))
@@ -416,12 +412,12 @@ Fetchmail retrieves mail from remote mail servers and forwards it via SMTP,
 so it can then be read by normal mail user agents such as mutt, elm
 or BSD Mail.  It allows all your system MTA's filtering, forwarding, and
 aliasing facilities to work just as they would on normal mail.")
-    (license gpl2+))) ; most files are actually public domain or x11
+    (license license:gpl2+))) ; most files are actually public domain or x11
 
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.14.4")
+    (version "1.14.6")
     (source (origin
              (method url-fetch)
              (uri (list
@@ -431,7 +427,7 @@ aliasing facilities to work just as they would on normal mail.")
                                    version ".tar.gz")))
              (sha256
               (base32
-               "1hykkq3m7kqic5r7vzg45xaww7415fv5i2d03slzykqb47w5d3na"))
+               "0i0q6vwhnb1grimsrpmz8maw255rh9k0laijzxkry6xqa80jm5s7"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -463,7 +459,7 @@ aliasing facilities to work just as they would on normal mail.")
     (description
      "Mutt is a small but very powerful text-based mail client for Unix
 operating systems.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public neomutt
   (package
@@ -473,7 +469,7 @@ operating systems.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/neomutt/neomutt.git")
+             (url "https://github.com/neomutt/neomutt")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -557,7 +553,7 @@ operating systems.")
     (description
      "NeoMutt is a command-line mail reader which is based on mutt.
 It adds a large amount of new and improved features to mutt.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public gmime
   (package
@@ -602,7 +598,7 @@ It adds a large amount of new and improved features to mutt.")
      "GMime provides a core library and set of utilities which may be used for
 the creation and parsing of messages using the Multipurpose Internet Mail
 Extension (MIME).")
-    (license (list lgpl2.1+ gpl2+ gpl3+))))
+    (license (list license:lgpl2.1+ license:gpl2+ license:gpl3+))))
 
 ;; Some packages are not ready for GMime 3 yet.
 (define-public gmime-2.6
@@ -648,7 +644,7 @@ Extension (MIME).")
  (non-spam) by a statistical analysis of the message's header and
 content (body).  The program is able to learn from the user's classifications
 and corrections.  It is based on a Bayesian filter.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public offlineimap
   (package
@@ -694,7 +690,7 @@ and corrections.  It is based on a Bayesian filter.")
      "OfflineImap synchronizes emails between two repositories, so that you
 can read the same mailbox from multiple computers.  It supports IMAP as REMOTE
 repository and Maildir/IMAP as LOCAL repository.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public emacs-mew
   (package
@@ -745,7 +741,7 @@ repository and Maildir/IMAP as LOCAL repository.")
     (description "Mew (Messaging in the Emacs World) is a user interface
 for text messages, multimedia messages (MIME), news articles and
 security functionality including PGP, S/MIME, SSH, and SSL.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public mu
   (package
@@ -829,7 +825,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
 Maildir-format.  Mu's purpose in life is to help you to quickly find the
 messages you need; in addition, it allows you to view messages, extract
 attachments, create new maildirs, and so on.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public alot
   (package
@@ -866,7 +862,7 @@ attachments, create new maildirs, and so on.")
     (description
      "Alot is an experimental terminal mail user agent (@dfn{MUA}) based on
 @code{notmuch} mail.  It is written in Python using the @code{urwid} toolkit.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public notifymuch
   (let
@@ -879,7 +875,7 @@ attachments, create new maildirs, and so on.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/kspi/notifymuch.git")
+               (url "https://github.com/kspi/notifymuch")
                (commit commit)))
          (sha256
           (base32
@@ -914,7 +910,7 @@ is configurable, and a notification for the same message will not be send
 within a configurable period (defaults to 48 hours).  To use notifymuch, run
 @command{notifymuch} after new mail is indexed, this can be automated by
 invoking @command{notifymuch} from the post-new hook.")
-      (license gpl3))))
+      (license license:gpl3))))
 
 (define-public notmuch
   (package
@@ -990,7 +986,7 @@ invoking @command{notifymuch} from the post-new hook.")
     (description
      "Notmuch is a command-line based program for indexing, searching, read-
 ing, and tagging large collections of email messages.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public notmuch-addrlookup-c
   (package
@@ -999,7 +995,7 @@ ing, and tagging large collections of email messages.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/aperezdc/notmuch-addrlookup-c.git")
+                    (url "https://github.com/aperezdc/notmuch-addrlookup-c")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -1061,7 +1057,7 @@ useful for email address completion.")
     (description
      "This package provides Python bindings to use the Notmuch mail indexing
 and search library.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public python2-notmuch
   (package-with-python2 python-notmuch))
@@ -1096,7 +1092,7 @@ broadband.  Muchsync supports arbitrary pairwise synchronization among
 replicas.  A version-vector-based algorithm allows it to exchange only the
 minimum information necessary to bring replicas up to date regardless of which
 pairs have previously synchronized.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public getmail
   (package
@@ -1122,7 +1118,7 @@ arbitrary message filtering, single-user and domain-mailboxes, and many other
 useful features.")
 
     ;; License is specified in file '__init__.py'.
-    (license gpl2)))
+    (license license:gpl2)))
 
 (define-public libetpan
   (package
@@ -1160,7 +1156,7 @@ useful features.")
 framework for different kinds of mail access: IMAP, SMTP, POP and NNTP.  It
 provides an API for C language.  It's the low-level API used by MailCore and
 MailCore 2.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public compface
   (package
@@ -1181,12 +1177,12 @@ MailCore 2.")
     (description "This package takes your 48x48x1 portrait image and
 compresses it.")
     (home-page "https://legacy.cs.indiana.edu/ftp/faces/")
-    (license (x11-style "file://README"))))
+    (license (license:x11-style "file://README"))))
 
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.17.5")
+    (version "3.17.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1194,7 +1190,7 @@ compresses it.")
                     ".tar.xz"))
               (sha256
                (base32
-                "1gjrmdmhc7zzilrlss9yl86ybv9sra8v0qi7mkwv7d9azidx5kns"))))
+                "1s05qw0r0gqwvvkxvrrwbjkbi61dvilixiwrpgcq21qc9csc9r0m"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("bogofilter" ,bogofilter)
@@ -1243,7 +1239,7 @@ other popular email clients, as well as experienced users.  Almost all commands
 are accessible with the keyboard.  Plus, Claws-Mail is extensible via addons
 which can add many functionalities to the base client.")
     (home-page "https://www.claws-mail.org/")
-    (license gpl3+))) ; most files are actually public domain or x11
+    (license license:gpl3+))) ; most files are actually public domain or x11
 
 (define-public msmtp
   (package
@@ -1293,7 +1289,7 @@ which can add many functionalities to the base client.")
      "msmtp is an SMTP client.  In the default mode, it transmits a mail to
 an SMTP server (for example at a free mail provider) which takes care of further
 delivery.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public exim
   (package
@@ -1399,7 +1395,7 @@ Cambridge for use on Unix systems connected to the Internet.  In style it is
 similar to Smail 3, but its facilities are more general.  There is a great
 deal of flexibility in the way mail can be routed, and there are extensive
 facilities for checking incoming mail.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public dovecot
   (package
@@ -1461,7 +1457,8 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
     ;; Most source files are covered by either lgpl2.1 or expat.  The SHA code
     ;; is covered by a variant of BSD-3, and UnicodeData.txt is covered by the
     ;; Unicode, Inc. License Agreement for Data Files and Software.
-    (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING")))))
+    (license (list license:lgpl2.1 license:expat
+                   (license:non-copyleft "file://COPYING")))))
 
 (define-public dovecot-trees
   (package
@@ -1511,7 +1508,7 @@ How it works:
 using libsodium sealed boxes.
 @item New mail is encrypted as it arrives using the Curve25519 public key.
 @end enumerate\n")
-    (license agpl3)))
+    (license license:agpl3)))
 
 (define-public dovecot-libsodium-plugin
   (let ((commit "044de73c01c35385df0105f6b387bec5d5317ce7")
@@ -1548,7 +1545,7 @@ using libsodium sealed boxes.
       (description
        "@code{dovecot-libsodium-plugin} provides a libsodium password
 hashing scheme (such as scrypt) plug-in for @code{Dovecot}.")
-      (license gpl3+))))
+      (license license:gpl3+))))
 
 (define-public isync
   (package
@@ -1574,7 +1571,7 @@ hashing scheme (such as scrypt) plug-in for @code{Dovecot}.")
     (description
      "isync/mbsync is a command-line tool for two-way synchronization of
 mailboxes.  Currently Maildir and IMAP are supported types.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public perl-email-abstract
   (package
@@ -1597,7 +1594,7 @@ mailboxes.  Currently Maildir and IMAP are supported types.")
     (synopsis "Interface to mail representations")
     (description "Email::Abstract provides module writers with the ability to
 write simple, representation-independent mail handling code.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-address
   (package
@@ -1616,7 +1613,7 @@ write simple, representation-independent mail handling code.")
     (description "Email::Address implements a regex-based RFC 2822 parser that
 locates email addresses in strings and returns a list of Email::Address
 objects found.  Alternatively you may construct objects manually.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-address-xs
   (package
@@ -1638,7 +1635,7 @@ objects found.  Alternatively you may construct objects manually.")
 addresses and groups.  Unlike Email::Address, this module does not use regular
 expressions for parsing but instead is implemented in XS and uses shared code
 from Dovecot IMAP server.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-date-format
   (package
@@ -1657,7 +1654,7 @@ from Dovecot IMAP server.")
     (synopsis "Produce RFC 2822 date strings")
     (description "Email::Date::Format provides a means for generating an RFC
 2822 compliant datetime string.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-messageid
   (package
@@ -1676,7 +1673,7 @@ from Dovecot IMAP server.")
     (synopsis "Generate world unique message-ids")
     (description "Email::MessageID generates recommended message-ids to
 identify a message uniquely.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-mime
   (package
@@ -1705,7 +1702,7 @@ identify a message uniquely.")
 handle MIME encoded messages.  It takes a message as a string, splits it up
 into its constituent parts, and allows you access to various parts of the
 message.  Headers are decoded from MIME encoding.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-mime-contenttype
   (package
@@ -1726,7 +1723,7 @@ message.  Headers are decoded from MIME encoding.")
     (synopsis "Parse MIME Content-Type headers")
     (description "Email::MIME::ContentType parses a MIME Content-Type
 header.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-mime-encodings
   (package
@@ -1746,7 +1743,7 @@ header.")
     (home-page "https://metacpan.org/release/Email-MIME-Encodings")
     (synopsis "Unified interface to MIME encoding and decoding")
     (description "This module wraps MIME::Base64 and MIME::QuotedPrint.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-sender
   (package
@@ -1777,7 +1774,7 @@ header.")
     (synopsis "Perl library for sending email")
     (description "Email::Sender replaces the old and sometimes problematic
 Email::Send library.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-email-simple
   (package
@@ -1798,7 +1795,7 @@ Email::Send library.")
     (synopsis "Parsing of RFC 2822 messages")
     (description "Email::Simple provides simple parsing of RFC 2822 message
 format and headers.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public libesmtp
   (package
@@ -1828,7 +1825,7 @@ submission of) electronic mail via a preconfigured Mail Transport Agent (MTA).
 It may be used as part of a Mail User Agent (MUA) or other program that must
 be able to post electronic mail where mail functionality may not be that
 program's primary purpose.")
-    (license (list lgpl2.1+ gpl2+))))
+    (license (list license:lgpl2.1+ license:gpl2+))))
 
 (define-public esmtp
   (package
@@ -1838,7 +1835,7 @@ program's primary purpose.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/andywingo/esmtp.git")
+             (url "https://github.com/andywingo/esmtp")
              (commit "01bf9fc")))
        (sha256
         (base32
@@ -1865,7 +1862,7 @@ user's @file{$HOME/.esmtprc} configuration file; see the @command{esmtprc} man
 page for more on configuration.  This package also provides minimal
 compatibility shims for the @command{sendmail}, @command{mailq}, and
 @command{newaliases} commands.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public fdm
   (package
@@ -1891,7 +1888,8 @@ deliver it in various ways.")
      ;; Why point to a source file?  Well, all the individual files have a
      ;; copy of this license in their headers, but there's no seprate file
      ;; with that information.
-     (non-copyleft "https://github.com/nicm/fdm/blob/master/command.c"))))
+     (license:non-copyleft
+      "https://github.com/nicm/fdm/blob/master/command.c"))))
 
 
 (define-public procmail
@@ -1939,10 +1937,10 @@ for a variety of mailbox formats such as mbox, mh and maildir.  Incoming mail
 can be sorted into separate files/directories and arbitrary commands can be
 executed on mail arrival.  Procmail is considered stable, but is no longer
 maintained.")
-    (license gpl2+))) ;; procmail allows to choose the
-                      ;; nonfree Artistic License 1.0
-                      ;; as alternative to the GPL2+.
-                      ;; This option is not listed here.
+    (license license:gpl2+))) ;; procmail allows to choose the
+                              ;; nonfree Artistic License 1.0
+                              ;; as alternative to the GPL2+.
+                              ;; This option is not listed here.
 
 (define-public khard
   (package
@@ -1979,7 +1977,7 @@ modifies and removes CardDAV address book entries at your local machine.  For
 synchronizing with a remote address book, @command{vdirsyncer} is recommended.
 Khard can also be used from within the email client @command{mutt}.")
     (home-page "https://github.com/scheibler/khard")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public perl-mail-spf
   (package
@@ -2018,7 +2016,7 @@ Khard can also be used from within the email client @command{mutt}.")
     (synopsis "Perl implementation of Sender Policy Framework")
     (description "Mail::SPF is the Sender Policy Framework implemented
 in Perl.")
-    (license bsd-3)))
+    (license license:bsd-3)))
 
 (define-public perl-mail-authenticationresults
   (package
@@ -2041,7 +2039,7 @@ in Perl.")
 that indicates the message authentication status as per RFC7601.  This module
 is not fully compliant with the RFC but it tries to implement most styles of
 Authentication-Results header seen in the wild.")
-    (license perl-license)))
+    (license license:perl-license)))
 
 (define-public perl-mail-dkim
   (package
@@ -2073,7 +2071,7 @@ Keys Identified Mail (DKIM) standard, and the older Yahoo! DomainKeys standard,
 both of which sign and verify emails using digital signatures and DNS records.
 Mail-DKIM can be used by any Perl program that wants to provide support for
 DKIM and/or DomainKeys.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public dkimproxy
   (package
@@ -2148,7 +2146,7 @@ of incoming messages.
 It was designed for Postfix, but can be used to add DKIM support to nearly any
 existing mail server.  With Postfix, the proxies can operate as either
 @code{Before-Queue} or @code{After-Queue} content filters.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public mb2md
   (package
@@ -2193,7 +2191,7 @@ existing mail server.  With Postfix, the proxies can operate as either
     (description
      "Mb2md is a Perl script that takes one or more mbox format files and
 converts them to maildir format directories.")
-    (license public-domain)))
+    (license license:public-domain)))
 
 (define-public mpop
   (package
@@ -2220,7 +2218,7 @@ mpop supports multiple accounts, header based mail filtering, delivery
 to mbox files, maildir folders or an @acronym{MDA, Mail Delivery Agent},
 TLS/SSL, several authentication methods, @acronym{IDN, Internationalized Domain
 Names} and SOCKS proxies.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public mhonarc
   (package
@@ -2242,7 +2240,7 @@ Names} and SOCKS proxies.")
 provides HTML mail archiving with index, mail thread linking,
 etc; plus other capabilities including support for MIME and
 powerful user customization features.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 
 (define-public sendmail
@@ -2324,8 +2322,8 @@ define(`confINST_DEP', `')
      "Sendmail is a mail transfer agent (MTA) originally developed by Eric
 Allman.  It is highly configurable and supports many delivery methods and many
 transfer protocols.")
-    (license (non-copyleft "file://LICENSE"
-                           "See LICENSE in the distribution."))))
+    (license (license:non-copyleft "file://LICENSE"
+                                   "See LICENSE in the distribution."))))
 
 (define-public opensmtpd
   (package
@@ -2403,104 +2401,163 @@ functionality than those available in other SMTP daemons.  The objective is to
 provide enough features to satisfy typical usage at the risk of unsuitability
 to esoteric or niche requirements.")
     (home-page "https://www.opensmtpd.org")
-    (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING")
-                   public-domain isc license:openssl))))
+    (license (list license:bsd-2 license:bsd-3 license:bsd-4
+                   (license:non-copyleft "file://COPYING")
+                   license:public-domain license:isc license:openssl))))
 
 (define-public opensmtpd-extras
   (package
     (name "opensmtpd-extras")
-    (version "5.7.1")
+    (version "6.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.opensmtpd.org/archives/"
-                                  name "-" version ".tar.gz"))
+                                  "opensmtpd-extras-" version ".tar.gz"))
               (sha256
                (base32
-                "1kld4hxgz792s0cb2gl7m2n618ikzqkj88w5dhaxdrxg4x2c4vdm"))))
+                "1b1mx71bvmv92lbm08wr2p60g3qhikvv3n15zsr6dcwbk9aqahzq"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libressl" ,libressl)
        ("libevent" ,libevent)
-       ("libasr" ,libasr)
-       ("python-2" ,python-2)
+       ("mysql" ,mysql)
        ("opensmtpd" ,opensmtpd)
-       ("perl" ,perl)
-       ("lua" ,lua)
        ("postgresql" ,postgresql)
-       ("sqlite" ,sqlite)
-       ("linux-pam" ,linux-pam)))
-    (native-inputs
-     `(("bison" ,bison)
-       ("pkg-config" ,pkg-config)
-       ("groff" ,groff)
-       ("automake" ,automake)
-       ("autoconf" ,autoconf)))
+       ("python" ,python-2)
+       ("sqlite" ,sqlite)))
     (arguments
-     `(;; We have to configure it like this because the default checks for for example
-       ;; python in /usr/local/bin, /usr/bin and fails otherwise.
-       #:configure-flags (list
-                          "--with-filter-clamav"    "--with-filter-dkim-signer"
-                          "--with-filter-dnsbl"     "--with-filter-lua"
-                          "--with-filter-monkey"    "--with-filter-pause"
-                          "--with-filter-perl"      "--with-filter-python"
-                          "--with-filter-regex"     "--with-filter-spamassassin"
-                          "--with-filter-stub"      "--with-filter-trace"
-                          "--with-filter-void"
-
-                          "--with-queue-null"       "--with-queue-python"
-                          "--with-queue-ram"        "--with-queue-stub"
-
-                          "--with-scheduler-python" "--with-scheduler-ram"
-                          "--with-scheduler-stub"
-
-                          "--with-table-ldap"       ; "--with-table-mysql"
-                          "--with-table-passwd"     "--with-table-postgres"
-                          "--with-table-python"     "--with-table-socketmap"
-                          "--with-table-sqlite"     "--with-table-stub"
-                          ;;"--with-table-redis"    ; TODO: package hiredis
-
-                          "--with-user=smtpd"       "--with-privsep-user=smtpd"
-                          "--localstatedir=/var"    "--sysconfdir=/etc"
-                          "--with-lua-type=lua"     ; can use lua or luajit
-
-                          (string-append "--with-python="
-                                         (assoc-ref %build-inputs "python-2"))
-                          (string-append "--with-lua="
-                                         (assoc-ref %build-inputs "lua")))))
-    (license (list bsd-2 bsd-3 bsd-4
-                   public-domain isc license:openssl))
+     `(#:configure-flags
+       (list "--sysconfdir=/etc"
+             "--localstatedir=/var"
+
+             "--with-queue-null"
+             "--with-queue-python"
+             "--with-queue-ram"
+             "--with-queue-stub"
+
+             "--with-table-ldap"
+             "--with-table-mysql"
+             "--with-table-postgres"
+             ;; "--with-table-redis"    ; TODO: package hiredis
+             "--with-table-socketmap"
+             "--with-table-passwd"
+             "--with-table-python"
+             "--with-table-sqlite"
+             "--with-table-stub"
+
+             "--with-scheduler-ram"
+             "--with-scheduler-stub"
+             "--with-scheduler-python"
+
+             "--with-user-smtpd=smtpd"
+
+             ;; We have to configure it like this because the default checks for
+             ;; for example Python in /usr/{,local/}bin and fails otherwise.
+             (string-append "--with-python="
+                            (assoc-ref %build-inputs "python")))))
+    (home-page "https://www.opensmtpd.org")
     (synopsis "Extra tables, filters, and various other addons for OpenSMTPD")
     (description
      "This package provides extra tables, filters, and various other addons
 for OpenSMTPD to extend its functionality.")
-    (home-page "https://www.opensmtpd.org")))
+    (license (list license:bsd-2 license:bsd-3 ; openbsd-compat
+                   license:isc))))             ; everything else
+
+(define-public mailman
+  (package
+    (name "mailman")
+    (version "3.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "mailman" version))
+        (sha256
+         (base32
+          "0idfiv48jjgc0jq4731094ddhraqq8bxnwmjk6sg5ask0jss9kxq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("gunicorn" ,gunicorn)
+       ("python-aiosmtpd" ,python-aiosmtpd)
+       ("python-alembic" ,python-alembic)
+       ("python-atpublic" ,python-atpublic)
+       ("python-authheaders" ,python-authheaders)
+       ("python-authres" ,python-authres)
+       ("python-click" ,python-click)
+       ("python-dateutil" ,python-dateutil)
+       ("python-dnspython" ,python-dnspython)
+       ("python-falcon" ,python-falcon)
+       ("python-flufl-bounce" ,python-flufl-bounce)
+       ("python-flufl-i18n" ,python-flufl-i18n)
+       ("python-flufl-lock" ,python-flufl-lock)
+       ("python-importlib-resources" ,python-importlib-resources)
+       ("python-lazr-config" ,python-lazr-config)
+       ("python-passlib" ,python-passlib)
+       ("python-requests" ,python-requests)
+       ("python-sqlalchemy" ,python-sqlalchemy)
+       ("python-zope-component" ,python-zope-component)
+       ("python-zope-configuration" ,python-zope-configuration)
+       ("python-zope-event" ,python-zope-event)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://www.list.org")
+    (synopsis "Mailing list manager")
+    (description
+     "GNU Mailman is software for managing email discussion and mailing
+lists.  Both users and administrators generally perform their actions in a
+web interface, although email and command-line interfaces are also provided.
+The system features built-in archiving, automatic bounce processing, content
+filtering, digest delivery, and more.")
+    (license license:gpl3+)))
 
 (define-public python-mailmanclient
   (package
     (name "python-mailmanclient")
-    (version "3.1.1")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "mailmanclient" version))
        (sha256
         (base32
-         "0fdfs5g3pf30v2i7w18pdkv9xnfxmfcv66mzv56dck0a1igq07m3"))))
+         "0pjgzpvhdb6ql8asb20xr8d01m646zpghmcp9fmscks0n1k4di4g"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f)) ; Requires mailman running
     (propagated-inputs
-     `(("python-six" ,python-six)
-       ("python-httplib2" ,python-httplib2)))
-    (home-page "https://launchpad.net/mailman.client")
+     `(("python-requests" ,python-requests)))
+    ;(native-inputs
+    ; `(("mailman" ,mailman)
+    ;   ("python-falcon" ,python-falcon)
+    ;   ("python-pytest" ,python-pytest)
+    ;   ("python-pytest-services" ,python-pytest-services)))
+    (home-page "https://www.list.org/")
     (synopsis "Python bindings for the Mailman 3 REST API")
     (description
      "The mailmanclient library provides official Python bindings for
 the GNU Mailman 3 REST API.")
-    (license lgpl3+)))
+    (properties `((python2-variant . ,(delay python2-mailmanclient))))
+    (license license:lgpl3+)))
 
+;; This is the last version which supports Python-2.
 (define-public python2-mailmanclient
-  (package-with-python2 python-mailmanclient))
+  (let ((base (package-with-python2
+                (strip-python2-variant python-mailmanclient))))
+    (package
+      (inherit base)
+      (version "3.1.1")
+      (source
+        (origin
+          (method url-fetch)
+          (uri (pypi-uri "mailmanclient" version))
+          (sha256
+           (base32
+            "0fdfs5g3pf30v2i7w18pdkv9xnfxmfcv66mzv56dck0a1igq07m3"))))
+      (propagated-inputs
+       `(("python2-six" ,python2-six)
+         ("python2-httplib2" ,python2-httplib2))))))
 
 (define-public mlmmj
   (package
@@ -2561,6 +2618,44 @@ installation on systems where resources are limited.  Its features include:
 @end enumerate\n")
     (license license:expat)))
 
+(define-public python-django-mailman3
+  (package
+    (name "python-django-mailman3")
+    (version "1.3.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "django-mailman3" version))
+        (sha256
+         (base32
+          "1yrm7wpjy34xai72vn2vkhc9131cdrbqy08rrabf36kynj5vcdvy"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (setenv "DJANGO_SETTINGS_MODULE"
+                     "django_mailman3.tests.settings_test")
+             (invoke "django-admin" "test"
+                     "--pythonpath=."))))))
+    (propagated-inputs
+     `(("python-django" ,python-django)
+       ("python-django-allauth" ,python-django-allauth)
+       ("python-django-gravatar2" ,python-django-gravatar2)
+       ("python-mailmanclient" ,python-mailmanclient)
+       ("python-pytz" ,python-pytz)))
+    (native-inputs
+     `(("python-mock" ,python-mock)))
+    (home-page "https://gitlab.com/mailman/django-mailman3")
+    (synopsis "Django library to help interaction with Mailman")
+    (description
+     "This package contains libraries and templates for Django-based interfaces
+interacting with Mailman.")
+    (properties `((python2-variant . ,(delay python2-django-mailman3))))
+    (license license:gpl3+)))
+
+;; This is the last version to support Python-2.
 (define-public python2-django-mailman3
   (package
     (name "python2-django-mailman3")
@@ -2598,37 +2693,140 @@ installation on systems where resources are limited.  Its features include:
     (description
      "Libraries and templates for Django-based interfaces
 interacting with Mailman.")
-    (license gpl3+)))
+    (license license:gpl3+)))
+
+(define-public python-mailman-hyperkitty
+  (package
+    (name "python-mailman-hyperkitty")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "mailman-hyperkitty" version))
+        (sha256
+         (base32
+          "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx"))
+        (patches
+          (list
+            (origin
+              ;; see: https://gitlab.com/mailman/mailman-hyperkitty/issues/17
+              ;; fixes test_archive_message_unserializable
+              (method url-fetch)
+              (uri "https://salsa.debian.org/mailman-team/mailman-hyperkitty/raw/debian/1.1.0-9/debian/patches/0002-Skip-the-test_archive_message_unserializable.patch")
+              (sha256
+               (base32
+                "0p1fwm46c4bl81lvsg3kjhn2r1lwgkpgxamb3xyqn7h9qdrw10hw")))))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-requests" ,python-requests)
+       ("python-zope-interface" ,python-zope-interface)))
+    (inputs
+     `(("mailman" ,mailman)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)
+       ("python-nose2" ,python-nose2)))
+    (home-page "https://gitlab.com/mailman/mailman-hyperkitty/")
+    (synopsis "Mailman archiver plugin for HyperKitty")
+    (description
+     "Mailman3 allows emails sent to its mailing lists to be archived by any
+software provided that there is a plugin (loadable by Mailman3) designed to
+communicate with it properly.  This module contains a Mailman3 archiver plugin
+which sends emails to HyperKitty, the official Mailman3 web archiver.")
+    (license license:gpl3+)))
+
+(define-public python-hyperkitty
+  (package
+    (name "python-hyperkitty")
+    (version "1.3.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "HyperKitty" version))
+        (sha256
+         (base32
+          "0p85r9q6mn5as5b39xp9hkkipnk0156acx540n2ygk3qb3jd4a5n"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; It is unclear why this test fails.
+             (substitute* "hyperkitty/tests/commands/test_import.py"
+               (("def test_bad_content_type_part_two")
+                "@SkipTest\n    def test_bad_content_type_part_two"))
+             (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
+             (invoke "example_project/manage.py" "test"
+                     "--settings=hyperkitty.tests.settings_test"))))))
+    (propagated-inputs
+     `(("python-dateutil" ,python-dateutil)
+       ("python-django" ,python-django)
+       ("python-django-compressor" ,python-django-compressor)
+       ("python-django-extensions" ,python-django-extensions)
+       ("python-django-gravatar2" ,python-django-gravatar2)
+       ("python-django-haystack" ,python-django-haystack)
+       ("python-django-mailman3" ,python-django-mailman3)
+       ("python-django-q" ,python-django-q)
+       ("python-djangorestframework" ,python-djangorestframework)
+       ("python-flufl-lock" ,python-flufl-lock)
+       ("python-mailmanclient" ,python-mailmanclient)
+       ("python-networkx" ,python-networkx)
+       ("python-pytz" ,python-pytz)
+       ("python-robot-detection" ,python-robot-detection)))
+    (native-inputs
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-elasticsearch" ,python-elasticsearch)
+       ("python-isort" ,python-isort)
+       ("python-mock" ,python-mock)
+       ("python-whoosh" ,python-whoosh)))
+    (home-page "https://gitlab.com/mailman/hyperkitty")
+    (synopsis "Web interface to access GNU Mailman v3 archives")
+    (description
+     "The hyperkitty Django app provides a web user interface to access GNU
+Mailman3 archives, and manage it.  This interface uses django, and requires
+some configuration.")
+    (license license:gpl3)))    ; Some files are gpl2+
 
 (define-public postorius
   (package
     (name "postorius")
-    (version "1.0.3")
+    (version "1.3.3")
     (source
      (origin
        (method url-fetch)
-       (uri (pypi-uri "postorius" version "+post2.tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (pypi-uri "postorius" version))
        (sha256
         (base32
-         "1wymcpv2icjjy8h1ni52p6dr7wwxf71ivqgbqhzx4i82yqphcaq5"))))
+         "08jn23gblbkfl09qlykbpsmp39mmach3sl69h1j5cd5kkx839rwa"))))
     (build-system python-build-system)
     (arguments
-     `(; One test dependency relies on Persona, which was shut down in
-       ;; November 2016.
-       #:tests? #f
-       ;; The part of the frontend of Mailman is still python 2.7.
-       #:python ,python-2))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (if tests?
+                 (invoke "python" "example_project/manage.py" "test"
+                         "--settings=test_settings" "postorius")
+                 #t))))
+       #:tests? #f)) ; Tests try to run a mailman instance to test against.
     (inputs
-     `(("python2-django" ,python2-django)
-       ("python2-django-mailman3" ,python2-django-mailman3)
-       ("python2-mailmanclient" ,python2-mailmanclient)))
+     `(("python-django" ,python-django)
+       ("python-django-mailman3" ,python-django-mailman3)
+       ("python-mailmanclient" ,python-mailmanclient)
+       ("python-readme-renderer" ,python-readme-renderer)))
+    (native-inputs
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-isort" ,python-isort)
+       ("python-mock" ,python-mock)
+       ("python-vcrpy" ,python-vcrpy)))
     (home-page "https://gitlab.com/mailman/postorius")
     (synopsis "Web user interface for GNU Mailman")
     (description
      "Postorius is a Django app which provides a web user interface
 to access GNU Mailman.")
-    (license (list gpl3+ lgpl3+))))
+    (license (list license:gpl3+ license:lgpl3+))))
 
 (define-public blists
   (package
@@ -2712,7 +2910,7 @@ unix-domain sockets, internet-domain sockets, and pipes to spawned processes.
 Options can be specified in environment variables, configuration files, and
 the command line allowing maximum configurability and ease of use for
 operators and scripters.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public alpine
   (package
@@ -2793,7 +2991,7 @@ tools and applications:
 @item pico, the standalone text editor, GNU nano's predecessor
 @item pilot, the standalone file system navigator
 @end enumerate\n")
-    (license asl2.0)))
+    (license license:asl2.0)))
 
 (define-public balsa
   (package
@@ -2849,7 +3047,7 @@ tools and applications:
 the GNOME desktop.  It supports both POP3 and IMAP servers as well as the
 mbox, maildir and mh local mailbox formats.  Balsa also supports SMTP and/or
 the use of a local MTA such as Sendmail.")
-    (license gpl3+)))
+    (license license:gpl3+)))
 
 (define-public afew
   (package
@@ -2874,7 +3072,7 @@ the use of a local MTA such as Sendmail.")
 provides automatic tagging each time new mail is registered with notmuch.  It
 can add tags based on email headers or Maildir folders and can handle spam and
 killed threads.")
-    (license isc)))
+    (license license:isc)))
 
 (define-public pan
   (package
@@ -2921,7 +3119,7 @@ killed threads.")
 and binaries. It supports offline reading, scoring and killfiles, yEnc, NZB,
 PGP handling, multiple servers, and secure connections.")
     ;; License of the docs: fdl-1.1; Others: gpl2.
-    (license (list fdl1.1+ gpl2))))
+    (license (list license:fdl1.1+ license:gpl2))))
 
 (define-public imapfilter
   (package
@@ -2931,7 +3129,7 @@ PGP handling, multiple servers, and secure connections.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/lefcha/imapfilter.git")
+             (url "https://github.com/lefcha/imapfilter")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2961,13 +3159,13 @@ servers.  The 4rev1 and 4 versions of IMAP are supported.")
 (define-public urlscan
   (package
     (name "urlscan")
-    (version "0.9.4")
+    (version "0.9.5")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "urlscan" version))
         (sha256
-         (base32 "1q0vxv9haap01vz1cbkzss62cgwb9365lv5vnkg2gbpx4g5y7a9l"))))
+         (base32 "07vcwirap0p4dkqrqblfn1q017slgd8m6qyijvbi3gxnr09pbyx2"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-urwid" ,python-urwid)))
@@ -2975,13 +3173,13 @@ servers.  The 4rev1 and 4 versions of IMAP are supported.")
     (synopsis "View/select the URLs in an email message or file")
     (description
      "Urlscan is a small program that is designed to integrate with the
-@code{mutt} mailreader to allow you to easily launch a Web browser for URLs
+Mutt mail reader to allow you to easily launch a Web browser for URLs
 contained in email messages.  It parses an email message or file and scans it
 for URLs and email addresses.  It then displays the URLs and their context
 within the message, and allows you to choose one or more URLs to send to your
-Web browser.  Alternatively, it send a list of all URLs to stdout.  It is a
-replacement for the @code{urlview} program.")
-    (license gpl2)))
+Web browser.  Alternatively, it send a list of all URLs to standard output.
+It is a replacement for the @command{urlview} program.")
+    (license license:gpl2)))
 
 (define-public tnef
   (package
@@ -2991,7 +3189,7 @@ replacement for the @code{urlview} program.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/verdammelt/tnef.git")
+             (url "https://github.com/verdammelt/tnef")
              (commit version)))
        (sha256
         (base32 "104g48mcm00bgiyzas2vf86331w7bnw7h3bc11ib4lp7rz6zqfck"))
@@ -3006,7 +3204,7 @@ replacement for the @code{urlview} program.")
     (description
      "TNEF is a tar-like program that unpacks MIME attachments of type
 @code{application/ms-tnef}.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public mumi
   (let ((commit "5a578328199bab51a147fbadbce12c8d06959ed6")
@@ -3068,7 +3266,7 @@ replacement for the @code{urlview} program.")
       (home-page "https://git.elephly.net/software/mumi.git")
       (synopsis "Debbugs web interface")
       (description "Mumi is a Debbugs web interface.")
-      (license agpl3+))))
+      (license license:agpl3+))))
 
 (define-public ytnef
   (package
@@ -3077,7 +3275,7 @@ replacement for the @code{urlview} program.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Yeraze/ytnef.git")
+                    (url "https://github.com/Yeraze/ytnef")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3092,7 +3290,7 @@ replacement for the @code{urlview} program.")
     (synopsis "TNEF stream reader for winmail.dat files")
     (description "This package provides a TNEF stream reader library and
 related tools to process winmail.dat files.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public public-inbox
   (let ((commit "05a06f3262a2ddbf46adb85169e13ce9127e4524")
@@ -3178,7 +3376,7 @@ related tools to process winmail.dat files.")
       "public-inbox implements the sharing of an email inbox via git to
 complement or replace traditional mailing lists.  Readers may read via NNTP,
 Atom feeds or HTML archives.")
-     (license agpl3+))))
+     (license license:agpl3+))))
 
 (define-public sylpheed
   (package
@@ -3210,4 +3408,146 @@ Atom feeds or HTML archives.")
      "Sylpheed is a simple, lightweight but featureful, and easy-to-use e-mail
 client.  Sylpheed provides intuitive user-interface.  Sylpheed is also
 designed for keyboard-oriented operation.")
-    (license gpl2+)))
+    (license license:gpl2+)))
+
+(define-public python-authres
+  (package
+    (name "python-authres")
+    (version "1.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "authres" version))
+        (sha256
+         (base32
+          "1dr5zpqnb54h4f5ax8334l1dcp8j9083d7v4vdi1xqkwmnavklck"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           ;; Run doctests as described in the README.
+           (lambda _
+             (invoke "python" "-m" "authres" "-v"))))))
+    (home-page "https://launchpad.net/authentication-results-python")
+    (synopsis "Email Authentication Results Header Module")
+    (description
+     "This module can be used to generate and parse RFC 5451/7001/7601
+Authentication-Results headers.  It also supports Authentication Results
+extensions:
+@itemize
+@item RFC 5617 DKIM/ADSP
+@item RFC 6008 DKIM signature identification (header.b)
+@item RFC 6212 Vouch By Reference (VBR)
+@item RFC 6577 Sender Policy Framework (SPF)
+@item RFC 7281 Authentication-Results Registration for S/MIME
+@item RFC 7293 The Require-Recipient-Valid-Since Header Field
+@item RFC 7489 Domain-based Message Authentication, Reporting, and Conformance (DMARC)
+@item Authenticated Recieved Chain (ARC) (draft-ietf-dmarc-arc-protocol-08)
+@end itemize
+Note: RFC 7601 obsoletes RFC 5451, 6577, 7001, and 7410.  Authres supports the
+current standard.  No backward compatibility issues have been noted.")
+    (license license:asl2.0)))
+
+(define-public python-dkimpy
+  (package
+    (name "python-dkimpy")
+    (version "1.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "dkimpy" version))
+        (sha256
+         (base32
+          "14idcs0wiyc0iyi5bz3xqimxf3x6dizcjfn92s2ka5zxp95xdyvd"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-more-source
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((openssl (assoc-ref inputs "openssl")))
+               (substitute* "dkim/dknewkey.py"
+                 (("/usr/bin/openssl") (string-append openssl "/bin/openssl"))))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python" "test.py"))))))
+    (propagated-inputs
+     `(("python-dnspython" ,python-dnspython)))
+    (native-inputs
+     `(("python-authres" ,python-authres)
+       ("python-pynacl" ,python-pynacl)))
+    (inputs
+     `(("openssl" ,openssl)))
+    (home-page "https://launchpad.net/dkimpy")
+    (synopsis "DKIM (DomainKeys Identified Mail)")
+    (description "Python module that implements @dfn{DKIM} (DomainKeys
+Identified Mail) email signing and verification (RFC6376).  It also provides
+helper scripts for command line signing and verification.  It supports DKIM
+signing/verifying of ed25519-sha256 signatures (RFC 8463).  It also supports
+the RFC 8617 Authenticated Received Chain (ARC) protocol.")
+    (license license:bsd-3)))
+
+(define-public python-authheaders
+  (package
+    (name "python-authheaders")
+    (version "0.13.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "authheaders" version))
+        (sha256
+         (base32
+          "14k6i72k5f8dyvps8vc0aq0cczc8lvqpgjfjzsy6qqychjvjcmwk"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-authres" ,python-authres)
+       ("python-dkimpy" ,python-dkimpy)
+       ("python-dnspython" ,python-dnspython)
+       ("python-publicsuffix2" ,python-publicsuffix2)))
+    (home-page "https://github.com/ValiMail/authentication-headers")
+    (synopsis "Library wrapping email authentication header verification and generation")
+    (description
+     "This is a Python library for the generation of email authentication
+headers.  The library can perform DKIM, SPF, and DMARC validation, and the
+results are packaged into the Authentication-Results header.  The library can
+DKIM and ARC sign messages and output the corresponding signature headers.")
+    ;; The package's metadata claims it were MIT licensed, but the source file
+    ;; headers disagree. MPL-2 for the public suffix list.
+    (license (list license:zpl2.1 license:zlib license:mpl2.0))))
+
+(define-public python-aiosmtpd
+  (package
+    (name "python-aiosmtpd")
+    (version "1.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "aiosmtpd" version))
+        (sha256
+         (base32
+          "1xdfk741pjmz1cm8dsi4n5vq4517i175rm94696m3f7kcgk7xsmp"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'delete-failing-test
+           (lambda _
+             (delete-file "aiosmtpd/tests/test_smtps.py")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python" "-m" "nose2" "-v"))))))
+    (native-inputs
+     `(("python-flufl-testing" ,python-flufl-testing)
+       ("python-nose2" ,python-nose2)))
+    (propagated-inputs
+     `(("python-atpublic" ,python-atpublic)))
+    (home-page "https://aiosmtpd.readthedocs.io/")
+    (synopsis "Asyncio based SMTP server")
+    (description
+     "This project is a reimplementation of the Python stdlib @code{smtpd.py}
+based on asyncio.")
+    (license (list license:asl2.0
+                   license:lgpl3))))    ; only for setup_helpers.py
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 2d059baddc..21d7ba63f6 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -62,14 +62,14 @@ a flexible and convenient way.")
 (define-public man-db
   (package
     (name "man-db")
-    (version "2.9.2")
+    (version "2.9.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/man-db/man-db-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0z04kwv5ymmd0pzadpaag696jfckg6rbz8x4jrgj09bmqqk3yf3v"))))
+                "1f4palf5bdyf3f8sa0981cqxn9cjcr2pz53ngrrsybb9n0da2nps"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index 7ae73da8a5..56a920d873 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -43,7 +43,7 @@
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                    (url "https://github.com/hoedown/hoedown.git")
+                    (url "https://github.com/hoedown/hoedown")
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -201,7 +201,7 @@ implementation.
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                    (url "https://github.com/jgm/cmark.git")
+                    (url "https://github.com/jgm/cmark")
                     (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -242,7 +242,7 @@ for parsing and rendering CommonMark.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Gottox/smu.git")
+             (url "https://github.com/Gottox/smu")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index d6b0e25e6b..f7055f796e 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -29,13 +29,13 @@
 (define-public toot
   (package
     (name "toot")
-    (version "0.26.0")
+    (version "0.27.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "toot" version))
         (sha256
-         (base32 "0h0lqm1q7i32i9n6yx5q2j563vc92h2sjh1ih4n2rxf98p6c5d1b"))))
+         (base32 "1mfbqmgna7046d134pc5qx1vyfd60vwcn0xr9lxzlmc5rjdbmz8x"))))
     (build-system python-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 864fa8dc18..8afd3be152 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -76,7 +76,7 @@
 (define-public mate-common
   (package
     (name "mate-common")
-    (version "1.22.0")
+    (version "1.24.1")
     (source
      (origin
        (method url-fetch)
@@ -84,7 +84,7 @@
                            name "-" version ".tar.xz"))
        (sha256
         (base32
-         "11lwckndizawbq993ws8lqp59vsc873zri0m8s1i5zyc4qx9f69z"))))
+         "1dgp6k2l6dz7x2lnqk4y5xfkld376726hda3mrc777f821kk99nr"))))
     (build-system gnu-build-system)
     (home-page "https://mate-desktop.org/")
     (synopsis "Common files for development of MATE packages")
@@ -1606,10 +1606,6 @@ used to bring up authentication dialogs.")
        ("shared-mime-info"          ,shared-mime-info)
        ("yelp"                      ,yelp)
        ("zenity"                    ,zenity)))
-    ;; FIXME: Propagating glib:bin fixes http://issues.guix.gnu.org/issue/38135
-    ;; The proper fix is in core-updates. So we can remove this after next merge.
-    (propagated-inputs
-     `(("glib:bin" ,glib "bin")))
     (synopsis "The MATE desktop environment")
     (home-page "https://mate-desktop.org/")
     (description
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 45d699e39c..ee4d30cfbe 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -38,6 +38,7 @@
 ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -262,7 +263,7 @@ triangulations.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/cvxopt/cvxopt.git")
+                    (url "https://github.com/cvxopt/cvxopt")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -839,7 +840,7 @@ plotting engine by third-party applications like Octave.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/OkoSanto/GCTP.git")
+             (url "https://github.com/OkoSanto/GCTP")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1186,10 +1187,15 @@ extremely large and complex data collections.")
                     (jhdf (string-append lib "/jhdf.jar"))
                     (jhdf5 (string-append lib "/jhdf5.jar"))
                     (testjars
-                     (map (lambda (i)
-                            (string-append (assoc-ref inputs i)
-                                           "/share/java/" i ".jar"))
-                          '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple")))
+                     (append
+                       (map (lambda (i)
+                              (string-append (assoc-ref inputs i)
+                                             "/share/java/" i ".jar"))
+                            '("slf4j-api" "slf4j-simple"))
+                       (list
+                         (car (find-files (assoc-ref inputs "junit") "jar$"))
+                         (car (find-files (assoc-ref inputs "hamcrest-core")
+                                          "jar$")))))
                     (class-path
                      (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":")))
 
@@ -1339,7 +1345,7 @@ Swath).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Blosc/hdf5-blosc.git")
+             (url "https://github.com/Blosc/hdf5-blosc")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1822,7 +1828,7 @@ script files.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/tpaviot/oce.git")
+              (url "https://github.com/tpaviot/oce")
               (commit (string-append "OCE-" version))))
         (file-name (git-file-name name version))
         (patches (search-patches "opencascade-oce-glibc-2.26.patch"))
@@ -2022,7 +2028,7 @@ ASCII text files using Gmsh's own scripting language.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/gerddie/maxflow.git")
+                    (url "https://github.com/gerddie/maxflow")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2409,6 +2415,36 @@ message-passing communication.  @code{slepc4py} provides Python
 bindings to almost all functions of SLEPc.")
     (license license:bsd-3)))
 
+(define-public metamath
+  (package
+    (name "metamath")
+    (version "0.183")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/metamath/metamath-exe")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jjf4fy6j53i40dh0yv0f9sngnw4gs24cig99vsg3q0303pwrhg7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (home-page "http://us.metamath.org/")
+    (synopsis "Proof verifier based on a minimalistic formalism")
+    (description
+     "Metamath is a tiny formal language and that can express theorems in
+abstract mathematics, with an accompyaning @command{metamath} executable that
+verifies databases of these proofs.  There is a public database,
+@url{https://github.com/metamath/set.mm, set.mm}, implementing first-order
+logic and Zermelo-Frenkel set theory with Choice, along with a large swath of
+associated, high-level theorems, e.g.@: the fundamental theorem of arithmetic,
+the Cauchy-Schwarz inequality, Stirling's formula, etc.  See the Metamath
+book.")
+    (license license:gpl2+)))
+
 (define-public mumps
   (package
     (name "mumps")
@@ -2585,28 +2621,17 @@ sparse system of linear equations A x = b using Gaussian elimination.")
 (define-public ruby-asciimath
   (package
     (name "ruby-asciimath")
-    (version "1.0.4")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "asciimath" version))
        (sha256
         (base32
-         "1d80kiph5mc78zps7si1hv48kv4k12mzaq8jk5kb3pqpjdr72qmc"))))
+         "1aapydwwkydbwgz07n7ma3a5jy9n3v0shy6q6j8mi4wr3crhx45a"))))
     (build-system ruby-build-system)
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         ;; Apply this patch
-         ;; https://github.com/asciidoctor/asciimath/commit/1c06fdc8086077f4785479f78b0823a4a72d7948
-         (add-after 'unpack 'patch-remove-spurious-backslashes
-           (lambda _
-             (substitute* "spec/parser_spec.rb"
-               (("\\\\\"")
-                "\""))
-             #t)))))
     (native-inputs
-     `(("bundler" ,bundler)
+     `(("ruby-nokogiri" ,ruby-nokogiri)
        ("ruby-rspec" ,ruby-rspec)))
     (synopsis "AsciiMath parsing and conversion library")
     (description
@@ -3078,7 +3103,7 @@ to BMP, JPEG or PNG image formats.")
 (define-public maxima
   (package
     (name "maxima")
-    (version "5.43.0")
+    (version "5.44.0")
     (source
      (origin
        (method url-fetch)
@@ -3086,7 +3111,7 @@ to BMP, JPEG or PNG image formats.")
                            version "-source/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0xyahp4c6509haxh4n1swiqm3421gplkdisa0zypclh3252sbzfw"))
+         "1v6jr5s6hhj6r18gfk6hgxk2qd6z1dxkrjq9ss2z1y6sqi45wgyr"))
        (patches (search-patches "maxima-defsystem-mkdir.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -3198,7 +3223,7 @@ point numbers.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/wxMaxima-developers/wxmaxima.git")
+             (url "https://github.com/wxMaxima-developers/wxmaxima")
              (commit (string-append "Version-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3306,7 +3331,7 @@ associated functions (e.g., contiguous and non-contiguous submatrix views).")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/beltoforion/muparser.git")
+               (url "https://github.com/beltoforion/muparser")
                (commit (string-append "v" upstream-version))))
          (file-name (git-file-name name version))
          (sha256
@@ -3507,7 +3532,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/JuliaLang/openlibm.git")
+             (url "https://github.com/JuliaLang/openlibm")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3546,7 +3571,7 @@ environments.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/JuliaLang/openspecfun.git")
+             (url "https://github.com/JuliaLang/openspecfun")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3584,7 +3609,7 @@ Fresnel integrals, and similar related functions as well.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DrTimothyAldenDavis/SuiteSparse.git")
+             (url "https://github.com/DrTimothyAldenDavis/SuiteSparse")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4052,6 +4077,7 @@ evaluates expressions using the standard order of operations.")
               (uri (git-reference
                     (url "https://github.com/xaos-project/XaoS")
                     (commit (string-append "release-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
                 "00110p5xscjsmn7avfqgydn656zbmdj3l3y2fpv9b4ihzpid8n7a"))))
@@ -4119,7 +4145,7 @@ set.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/LLNL/hypre.git")
+             (url "https://github.com/LLNL/hypre")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4575,7 +4601,7 @@ symmetric matrices.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/elemental/Elemental.git")
+                     (url "https://github.com/elemental/Elemental")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5548,7 +5574,7 @@ fields of knowledge.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/niklasso/minisat.git")
+               (url "https://github.com/niklasso/minisat")
                (commit commit)))
          (file-name (string-append name "-" version "-checkout"))
          (sha256
@@ -5683,6 +5709,6 @@ cli.")
 multi-purpose GUI desktop calculator.  It provides basic and advanced
 functionality.  Features include customizable functions, unit calculations,
 and conversions, physical constants, symbolic calculations (including
-integrals and equations), arbitrary precision, uncertainity propagation,
+integrals and equations), arbitrary precision, uncertainty propagation,
 interval arithmetic, plotting.")
     (license license:gpl2+)))
diff --git a/gnu/packages/maven-parent-pom.scm b/gnu/packages/maven-parent-pom.scm
new file mode 100644
index 0000000000..84af3a1c53
--- /dev/null
+++ b/gnu/packages/maven-parent-pom.scm
@@ -0,0 +1,545 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages maven-parent-pom)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system ant)
+  #:use-module (gnu packages java))
+
+(define (make-apache-parent-pom version hash)
+  (hidden-package
+    (package
+      (name "apache-parent-pom")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/apache/maven-apache-parent")
+                       (commit (string-append "apache-" version))))
+                (file-name (git-file-name name version))
+                (sha256 (base32 hash))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (home-page "https://apache.org/")
+      (synopsis "Apache parent pom")
+      (description "This package contains the Apache parent POM.")
+      (license license:asl2.0))))
+
+(define-public apache-parent-pom-6
+  (make-apache-parent-pom
+    "6" "1bq0ma2ya2cnp2icd4l20sv6y7zxqr9sa35wzv1s49nqsrm38kw3"))
+
+(define-public apache-parent-pom-11
+  (make-apache-parent-pom
+    "11" "0m1a4db8s6y8f4vvm9bx7zx7lixcvaah064560nbja7na3xz6lls"))
+
+(define-public apache-parent-pom-13
+  (make-apache-parent-pom
+    "13" "1cfxaz1jy8fbn06sb648qpiq23swpbj3kb5ya7f9g9jmya5fy09z"))
+
+(define-public apache-parent-pom-16
+  (make-apache-parent-pom
+    "16" "1y5b0dlc72ijcqfffdbh0k75qwaddy5qw725v9pzhrzqkpaa51xb"))
+
+(define-public apache-parent-pom-17
+  (make-apache-parent-pom
+    "17" "06hj5d6rdkmwl24k2rvzj8plq8x1ncsbjck4w3awz1hp9gngg4y5"))
+
+(define-public apache-parent-pom-18
+  (make-apache-parent-pom
+    "18" "1il97vpdmv5k2gnyinj45q00f7f4w9hcb588digwfid5bskddnyy"))
+
+(define-public apache-parent-pom-19
+  (make-apache-parent-pom
+    "19" "02drnwv2qqk1dmxbmmrk0bi1iil5cal9l47w53ascpbjg6242mp1"))
+
+(define-public apache-parent-pom-21
+  (make-apache-parent-pom
+    "21" "0clcbrq1b2b8sbvlqddyw2dg5niq25dhdma9sk4b0i30hqaipx96"))
+
+(define (make-apache-commons-parent-pom version hash parent)
+  (hidden-package
+    (package
+      (name "apache-commons-parent-pom")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/apache/commons-parent")
+                       (commit (string-append "commons-parent-" version))))
+                (file-name (git-file-name name version))
+                (sha256 (base32 hash))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (propagated-inputs
+        (if parent
+            `(("parent" ,parent))
+            '()))
+      (home-page "https://maven.apache.org/")
+      (synopsis "Apache Commons parent pom")
+      (description "This package contains the Apache Commons parent POM.")
+      (license license:asl2.0))))
+
+(define-public apache-commons-parent-pom-39
+  (make-apache-commons-parent-pom
+    "39" "0mjx48a55ik1h4hsxhifkli1flvkp6d05ab14p4al0fc6rhdxi46"
+    apache-parent-pom-16))
+
+(define-public apache-commons-parent-pom-41
+  (make-apache-commons-parent-pom
+    "41" "1k184amdqdx62bb2k0m9v93zzx768qcyam5dvdgksqc1aaqhadlb"
+    apache-parent-pom-18))
+
+(define-public apache-commons-parent-pom-48
+  (make-apache-commons-parent-pom
+    "48" "0dk8qp7swbh4y1q7q34y14yhigzl5yz0ixa8jhhhq91yc2q570iq"
+    apache-parent-pom-21))
+
+(define-public apache-commons-parent-pom-50
+  (make-apache-commons-parent-pom
+    "50" "0ki8px35dan51ashblpw6rdl27c2fq62slazhslhq3lr4fwlpvxs"
+    apache-parent-pom-21))
+
+(define-public java-weld-parent-pom
+  (hidden-package
+    (package
+      (name "java-weld-parent-pom")
+      (version "36")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/weld/parent")
+                       (commit version)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0rbvizcsma456mw9fvp4dj9cljh97nswvhi04xhczi38j5bgal0m"))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (home-page "https://github.com/weld/parent")
+      (synopsis "Pom parent file for weld projects")
+      (description "This package contains the parent Maven Pom for weld projects.")
+      (license license:asl2.0))))
+
+(define (make-java-sonatype-forge-parent-pom version hash)
+  (hidden-package
+    (package
+      (name "java-sonatype-forge-parent-pom")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/sonatype/oss-parents")
+                       (commit (string-append "forge-parent-" version))))
+                (file-name (git-file-name name version))
+                (sha256 (base32 hash))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build)
+           (delete 'configure)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (home-page "https://github.com/sonatype/oss-parents")
+      (synopsis "Sonatype forge parent pom")
+      (description "This package contains a single pom.xml file that is used by
+other projects as their parent pom.")
+      (license license:asl2.0))))
+
+(define-public java-sonatype-forge-parent-pom-4
+  (make-java-sonatype-forge-parent-pom
+    "4" "1gip239ar20qzy6yf37r6ks54bl7gqi1v49p65manrz84cmad0dh"))
+
+(define-public java-sonatype-forge-parent-pom-5
+  (make-java-sonatype-forge-parent-pom
+    "5" "0pr60wyjmaml4flmcij6l94b72ryx5gsiiasiwvcvrz9b2fkb3cd"))
+
+(define-public java-sonatype-forge-parent-pom-6
+  (make-java-sonatype-forge-parent-pom
+    "6" "0sa5wn5kc6y74m9g3azkm5i9d7kvyvgdw7wjlp7bjgy9s5qkbhgz"))
+
+(define-public java-sonatype-forge-parent-pom-10
+  (make-java-sonatype-forge-parent-pom
+    "10" "1n89wb00q4s9nwpqq6q1h4nzakw1l1rppjygxkl3iid7m5fnj60n"))
+
+(define-public java-sonatype-spice-parent-pom-15
+  (hidden-package
+    (package
+      (name "java-sonatype-spice-parent-pom")
+      (version "15")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/sonatype/oss-parents")
+                       ;; The only commit where spice-parent is version 15
+                       (commit "a4d1169c66fb21b214cb3eff2f056ec3e3695ca7")))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0h62h6m31srmqnd1bhyspz6hdhkkv48knkj0ximq3pzdixgzyxgy"))))
+      (build-system ant-build-system)
+      (propagated-inputs
+       `(("java-sonatype-forge-parent-pom-5" ,java-sonatype-forge-parent-pom-5)))
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build)
+           (delete 'configure)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (home-page "https://github.com/sonatype/oss-parents")
+      (synopsis "Sonatype spice parent pom")
+      (description "This package contains a single pom.xml file that is used by
+other projects as their parent pom.")
+      (license license:asl2.0))))
+
+(define-public java-sonatype-spice-parent-pom-17
+  (hidden-package
+    (package
+      (inherit java-sonatype-spice-parent-pom-15)
+      (version "17")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/sonatype/oss-parents")
+                       (commit "spice-parent-17")))
+                (file-name (git-file-name "java-sonatype-spice-parent-pom" version))
+                (sha256
+                 (base32
+                  "1d4jh1scgnjwhv8f0r052vrksg0kman09hslfvfvpfidl8rwiigq"))))
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build)
+           (delete 'configure)
+           (replace 'install
+             (install-pom-file "spice-parent/pom.xml")))))
+      (propagated-inputs
+       `(("java-sonatype-forge-parent-pom-10" ,java-sonatype-forge-parent-pom-10))))))
+
+(define-public java-sonatype-spice-parent-pom-12
+  (hidden-package
+    (package
+      (inherit java-sonatype-spice-parent-pom-15)
+      (version "12")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/sonatype/oss-parents")
+                       ;; The only commit where spice-parent is version 12
+                       (commit "95088ae2891f673828351d7d9150240859b4a29a")))
+                (file-name (git-file-name "java-sonatype-spice-parent-pom" version))
+                (sha256
+                 (base32
+                  "0pq5yf6swn43rxdfksnqsky1402zza2xq1aypwma9jkck2yl0vma"))))
+      (propagated-inputs
+       `(("java-sonatype-forge-parent-pom-4" ,java-sonatype-forge-parent-pom-4))))))
+
+(define-public java-sonatype-oss-parent-pom-7
+  (hidden-package
+    (package
+      (name "java-sonatype-oss-parent-pom")
+      (version "7")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/sonatype/oss-parents")
+                       (commit (string-append "oss-parent-" version))))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0lkvkmm51vrrrp79ksq3i2v693279rbn06yxck70ivhjrbq77927"))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'build)
+           (delete 'configure)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (home-page "https://github.com/sonatype/oss-parents")
+      (synopsis "Sonatype oss parent pom")
+      (description "This package contains a single pom.xml file that is used by
+other projects as their parent pom.")
+      (license license:asl2.0))))
+
+(define-public java-sonatype-oss-parent-pom-9
+  (hidden-package
+    (package
+      (inherit java-sonatype-oss-parent-pom-7)
+      (version "9")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "https://repo1.maven.org/maven2/org/sonatype/"
+                                    "oss/oss-parent/" version "/oss-parent-"
+                                    version ".pom"))
+                (sha256
+                 (base32
+                  "0yl2hbwz2kn1hll1i00ddzn8f89bfdcjwdifz0pj2j15k1gjch7v"))))
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'unpack)
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (install-pom-file (assoc-ref %build-inputs "source")))))))))
+
+(define* (make-plexus-parent-pom version hash #:optional parent)
+  (hidden-package
+    (package
+      (name "plexus-parent-pom")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/codehaus-plexus/plexus-pom")
+                       (commit (string-append "plexus-" version))))
+                (file-name (git-file-name name version))
+                (sha256 (base32 hash))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (propagated-inputs
+        (if parent
+            `(("parent" ,parent))
+            '()))
+      (home-page "https://codehaus-plexus.github.io/plexus-pom")
+      (synopsis "Plexus parent pom")
+      (description "This package contains the Plexus parent POM.")
+      (license license:asl2.0))))
+
+(define-public plexus-parent-pom-3.1
+  (make-plexus-parent-pom
+    "3.1" "0r1wa6zrpzynn4028w7880abkk2xk25mipav5f0a4d1abqzy5m53"
+    java-sonatype-spice-parent-pom-17))
+
+(define-public plexus-parent-pom-4.0
+  (make-plexus-parent-pom
+    "4.0" "15xbvc3cqhdkli8sj2l4hqkvk6icikbj182fbm86ixkamjh5lyfk"
+    java-sonatype-forge-parent-pom-10))
+
+(define-public plexus-parent-pom-5.1
+  (make-plexus-parent-pom
+    "5.1" "1mb87adzyv8lilzd6sw40j5000vhib2p0lgf9zzgggpkh79ddm8v"))
+
+(define-public plexus-parent-pom-6.1
+  (make-plexus-parent-pom
+    "6.1" "1pisca0fxpgbhf4xdgw5mn86622pg3mc5b8760kf9mk2awazshlj"))
+
+(define (make-maven-parent-pom version hash parent)
+  (hidden-package
+    (package
+      (name "maven-parent-pom")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/apache/maven-parent")
+                       (commit (string-append "maven-parent-" version))))
+                (file-name (git-file-name name version))
+                (sha256 (base32 hash))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (add-after 'install 'install-plugins
+             (install-pom-file "maven-plugins/pom.xml"))
+           (add-after 'install 'install-shared
+             (install-pom-file "maven-shared-components/pom.xml"))
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (propagated-inputs
+       `(("parent" ,parent)))
+      (home-page "https://maven.apache.org/")
+      (synopsis "Maven parent pom")
+      (description "Apache Maven is a software project management and comprehension
+tool.  This package contains the Maven parent POM.")
+      (license license:asl2.0))))
+
+(define-public maven-parent-pom-33
+  (make-maven-parent-pom
+    "33" "1b0z2gsvpccgcssys9jbdfwlwq8b5imdwr508f87ssdbfs29lh65"
+    apache-parent-pom-21))
+
+(define-public maven-parent-pom-31
+  (make-maven-parent-pom
+    "31" "0skxv669v9ffwbmrmybnn9awkf1g3ylk88bz0hv6g11zpj1a8454"
+    apache-parent-pom-19))
+
+(define-public maven-parent-pom-30
+  (make-maven-parent-pom
+    "30" "1w463na38v2054wn1cwbfqy095z13fhil4jmn08dsa4drdvdsjdw"
+    apache-parent-pom-18))
+
+(define-public maven-parent-pom-27
+  (let ((base (make-maven-parent-pom
+                "27" "1s31hi4n99kj7x1cy5dvzwldbjqzk6c3dn20hk61hwhgmkcbf14x"
+                apache-parent-pom-17)))
+    (package
+      (inherit base)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'install-plugins)
+             (delete 'install-shared))))))))
+
+(define-public maven-parent-pom-15
+  (let ((base (make-maven-parent-pom
+                "15" "154nbc3w9is1dpzlfi1xk03mfksxndnniyzq8mcw2wdbargb5504"
+                apache-parent-pom-6)))
+    (package
+      (inherit base)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'install-plugins)
+             (delete 'install-shared))))))))
+
+(define-public maven-parent-pom-22
+  (let ((base (make-maven-parent-pom
+                "22" "1kgqbyx7ckashy47n9rgyg4asyrvp933hdiknvnad7msq5d4c2jg"
+                apache-parent-pom-11)))
+    (package
+      (inherit base)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'install-plugins)
+             (delete 'install-shared)
+             (add-before 'install 'fix-versions
+               (lambda _
+                 (substitute* "pom.xml"
+                   (("1.5.5")
+                    ,(package-version java-plexus-component-annotations)))
+                 #t)))))))))
+
+(define-public maven-plugins-pom-23
+  (hidden-package
+    (package
+      (name "maven-plugins-pom")
+      (version "23")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/apache/maven-plugins")
+                       (commit (string-append "maven-plugins-" version))))
+                (file-name (git-file-name "maven-plugins-pom" version))
+                (sha256
+                 (base32
+                  "1j50il0c9kirr1cvf6vfr86wxp65lwqm9i4bz304ix12vv6ncxjq"))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           (replace 'install
+             (install-pom-file "pom.xml")))))
+      (propagated-inputs
+       `(("maven-parent-pom" ,maven-parent-pom-22)))
+      (home-page "https://github.com/apache/maven-plugins")
+      (synopsis "Maven parent pom for maven plugins projects")
+      (description "This package contains the parent pom for maven plugins.")
+      (license license:asl2.0))))
+
+(define-public maven-components-parent-pom-22
+  (hidden-package
+    (package
+      (name "maven-components-parent-pom")
+      (version "22")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "https://repo1.maven.org/maven2/org/apache/"
+                                    "maven/shared/maven-shared-components/22/"
+                                    "maven-shared-components-22.pom"))
+                (sha256
+                 (base32
+                  "11skhrjgrrs6z5rw1w39ap1pzhrc99g0czip10kz7wsavg746ibm"))))
+      (build-system ant-build-system)
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'unpack)
+           (delete 'build)
+           (delete 'configure)
+           (replace 'install
+             (install-pom-file (assoc-ref %build-inputs "source"))))))
+      (propagated-inputs
+       `(("maven-parent-pom-27" ,maven-parent-pom-27)))
+      (home-page "https://apache.org/maven")
+      (synopsis "Parent pom file for the maven components")
+      (description "This package contains the parent pom files for maven shared
+components.")
+      (license license:lgpl2.1+))))
+
+(define-public maven-components-parent-pom-21
+  (package
+    (inherit maven-components-parent-pom-22)
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://repo1.maven.org/maven2/org/apache/"
+                                  "maven/shared/maven-shared-components/21/"
+                                  "maven-shared-components-21.pom"))
+              (sha256
+               (base32
+                "0cqa072fz55j5xyvixqv8vbd7jsbhb1cd14bzjvm0hbv2wpd9npf"))))))
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 66c6e3adfa..e0cc98d408 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -30,53 +30,10 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages java)
+  #:use-module (gnu packages maven-parent-pom)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages xml))
-
-(define-public java-plexus-component-metadata
-  (package
-    (inherit java-plexus-container-default)
-    (name "java-plexus-component-metadata")
-    (arguments
-     `(#:jar-name "plexus-component-metadata.jar"
-       #:source-dir "src/main/java"
-       #:test-dir "src/test"
-       #:jdk ,icedtea-8
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'chdir
-           (lambda _
-             (chdir "plexus-component-metadata")
-             #t))
-         (add-before 'build 'copy-resources
-           (lambda _
-             (copy-recursively "src/main/resources"
-                               "build/classes/")
-             #t)))))
-    (inputs
-     `(("java-plexus-container-default" ,java-plexus-container-default)
-       ("java-plexu-component-annotations" ,java-plexus-component-annotations)
-       ("java-plexus-utils" ,java-plexus-utils)
-       ("java-plexus-cli" ,java-plexus-cli)
-       ("java-plexus-classworlds" ,java-plexus-classworlds)
-       ("maven-plugin-api" ,maven-plugin-api)
-       ("maven-plugin-annotations" ,maven-plugin-annotations)
-       ("maven-core-bootstrap" ,maven-core-bootstrap)
-       ("maven-model" ,maven-model)
-       ("java-commons-cli" ,java-commons-cli)
-       ("java-qdox" ,java-qdox)
-       ("java-jdom2" ,java-jdom2)
-       ("java-asm" ,java-asm)))
-    (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-guava" ,java-guava)
-       ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
-    (synopsis "Inversion-of-control container for Maven")
-    (description "The Plexus project provides a full software stack for creating
-and executing software projects.  Based on the Plexus container, the
-applications can utilise component-oriented programming to build modular,
-reusable components that can easily be assembled and reused.  This package
-provides the Maven plugin generating the component metadata.")))
+  #:use-module (gnu packages xml)
+  #:use-module (ice-9 match))
 
 (define-public maven-resolver-api
   (package
@@ -85,7 +42,7 @@ provides the Maven plugin generating the component metadata.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/apache/maven-resolver.git")
+                    (url "https://github.com/apache/maven-resolver")
                     (commit (string-append "maven-resolver-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -95,7 +52,11 @@ provides the Maven plugin generating the component metadata.")))
     (arguments
      `(#:jar-name "maven-resolver-api.jar"
        #:source-dir "maven-resolver-api/src/main/java"
-       #:test-dir "maven-resolver-api/src/test"))
+       #:test-dir "maven-resolver-api/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "maven-resolver-api/pom.xml")))))
     (native-inputs
      `(("java-asm" ,java-asm)
        ("java-cglib" ,java-cglib)
@@ -103,11 +64,32 @@ provides the Maven plugin generating the component metadata.")))
        ("java-junit" ,java-junit)
        ("java-mockito-1" ,java-mockito-1)
        ("java-objenesis" ,java-objenesis)))
+    (propagated-inputs
+     `(("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
     (home-page "https://github.com/apache/maven-resolver")
     (synopsis "Maven repository system API")
     (description "This package contains the API for the maven repository system.")
     (license license:asl2.0)))
 
+(define maven-resolver-parent-pom
+  (package
+    (inherit maven-resolver-api)
+    (name "maven-resolver-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* "pom.xml"
+               (("<classifier>no_aop</classifier>") ""))
+             #t))
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs '())))
+
 (define-public maven-resolver-spi
   (package
     (inherit maven-resolver-api)
@@ -116,8 +98,11 @@ provides the Maven plugin generating the component metadata.")))
      `(#:jar-name "maven-resolver-spi.jar"
        #:source-dir "maven-resolver-spi/src/main/java"
        #:test-dir "maven-resolver-spi/src/test"
-       #:jdk ,icedtea-8))
-    (inputs
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "maven-resolver-spi/pom.xml")))))
+    (propagated-inputs
      `(("maven-resolver-api" ,maven-resolver-api)))
     (synopsis "Maven repository system SPI")
     (description "This package contains the service provider interface (SPI)
@@ -147,8 +132,11 @@ ease testing of the repository system.")))
      `(#:jar-name "maven-resolver-util.jar"
        #:source-dir "maven-resolver-util/src/main/java"
        #:test-dir "maven-resolver-util/src/test"
-       #:jdk ,icedtea-8))
-    (inputs
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "maven-resolver-util/pom.xml")))))
+    (propagated-inputs
      `(("maven-resolver-api" ,maven-resolver-api)))
     (native-inputs
      `(("java-junit" ,java-junit)
@@ -175,16 +163,17 @@ ease usage of the repository system.")))
              (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
                (lambda _
                  (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
+    (propagated-inputs
      `(("maven-resolver-api" ,maven-resolver-api)
        ("maven-resolver-spi" ,maven-resolver-spi)
        ("maven-resolver-util" ,maven-resolver-util)
-       ("java-javax-inject" ,java-javax-inject)
        ("java-slf4j-api" ,java-slf4j-api)))
     (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)
+     `(("java-javax-inject" ,java-javax-inject)
+       ("java-junit" ,java-junit)
        ("maven-resolver-test-util" ,maven-resolver-test-util)))
     (synopsis "Maven repository connector implementation")
     (description "This package contains a repository connector implementation
@@ -198,7 +187,6 @@ for repositories using URI-based layouts.")))
      `(#:jar-name "maven-resolver-impl.jar"
        #:source-dir "maven-resolver-impl/src/main/java"
        #:test-dir "maven-resolver-impl/src/test"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'generate-sisu
@@ -232,22 +220,20 @@ for repositories using URI-based layouts.")))
                      "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
                      "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
                      "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "maven-resolver-impl/pom.xml")))))
+    (propagated-inputs
      `(("maven-resolver-api" ,maven-resolver-api)
        ("maven-resolver-spi" ,maven-resolver-spi)
        ("maven-resolver-util" ,maven-resolver-util)
        ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
        ("java-javax-inject" ,java-javax-inject)
        ("java-guice" ,java-guice)
-       ("java-guava" ,java-guava)
-       ("java-cglib" ,java-cglib)
-       ("java-asm" ,java-asm)
-       ("jajva-aopalliance" ,java-aopalliance)
-       ("java-slf4j-api" ,java-slf4j-api)))
+       ("java-slf4j-api" ,java-slf4j-api)
+       ("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
     (native-inputs
      `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)
        ("maven-resolver-test-util" ,maven-resolver-test-util)))))
 
 (define-public maven-resolver-transport-wagon
@@ -334,6 +320,241 @@ for repositories using URI-based layouts.")))
     (description "This package contains a transport implementation based on
 Maven Wagon, for use in Maven.")))
 
+;; aether is the parent project that was forked into maven-resolver.  It used
+;; to be used with older versions of Maven, and is still required for some
+;; plugins and their dependencies.  This version is required for the plugins,
+;; even though there are newer versions of this project.
+(define-public java-sonatype-aether-api
+  (package
+    (name "java-sonatype-aether-api")
+    (version "1.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/sonatype/sonatype-aether")
+                     (commit (string-append "aether-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "aether-api.jar"
+       #:source-dir "aether-api/src/main/java"
+       #:test-dir "aether-api/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'install-parent (install-pom-file "pom.xml"))
+         (replace 'install (install-from-pom "aether-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-6)))
+    (native-inputs `(("java-junit" ,java-junit)))
+    (home-page "https://github.com/sonatype/sonatype-aether")
+    (synopsis "Maven repository system API")
+    (description "This package contains the API for the maven repository system.")
+    (license license:asl2.0)))
+
+(define-public java-sonatype-aether-spi
+  (package
+    (inherit java-sonatype-aether-api)
+    (name "java-sonatype-aether-spi")
+    (arguments
+     `(#:jar-name "aether-spi.jar"
+       #:source-dir "aether-spi/src/main/java"
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-spi/pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
+    (synopsis "Maven repository system SPI")
+    (description "This package contains the service provider interface (SPI)
+for repository system implementations and repository connectors.")))
+
+(define-public java-sonatype-aether-test-util
+  (package
+    (inherit java-sonatype-aether-api)
+    (name "java-sonatype-aether-test-util")
+    (arguments
+     `(#:jar-name "java-sonatype-aether-test-util.jar"
+       #:source-dir "aether-test-util/src/main/java"
+       #:test-dir "aether-test-util/src/test"))
+    (inputs
+     `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)))
+    (synopsis "Utility classes for testing the maven repository system")
+    (description "This package contains a collection of utility classes to
+ease testing of the repository system.")))
+
+(define-public java-sonatype-aether-util
+  (package
+    (inherit java-sonatype-aether-api)
+    (name "java-sonatype-aether-util")
+    (arguments
+     `(#:jar-name "aether-util.jar"
+       #:source-dir "aether-util/src/main/java"
+       #:test-dir "aether-util/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-util/pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))
+    (synopsis "Utility classes for the maven repository system")
+    (description "This package contains a collection of utility classes to
+ease usage of the repository system.")))
+
+(define-public java-sonatype-aether-impl
+  (package
+    (inherit java-sonatype-aether-api)
+    (name "java-sonatype-aether-impl")
+    (arguments
+     `(#:jar-name "aether-impl.jar"
+       #:source-dir "aether-impl/src/main/java"
+       #:test-dir "aether-impl/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* "aether-impl/pom.xml"
+               (("org.sonatype.sisu") "org.codehaus.plexus")
+               (("sisu-inject-plexus") "plexus-container-default"))
+             #t))
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (replace 'install (install-from-pom "aether-impl/pom.xml")))))
+    (propagated-inputs
+     `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
+       ("java-sonatype-aether-util" ,java-sonatype-aether-util)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-slf4j-api" ,java-slf4j-api)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-plexus-component-metadata" ,java-plexus-component-metadata)
+       ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))))
+
+;; Again, this old version is required by some maven plugins
+(define-public java-eclipse-aether-api
+  (package
+    (name "java-eclipse-aether-api")
+    (version "1.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/eclipse/aether-core")
+                     (commit "aether-1.0.2.v20150114")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "aether-api.jar"
+       #:source-dir "aether-api/src/main/java"
+       #:test-dir "aether-api/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'install-parent (install-pom-file "pom.xml"))
+         (replace 'install (install-from-pom "aether-api/pom.xml")))))
+    (native-inputs `(("java-junit" ,java-junit)))
+    (home-page "https://github.com/sonatype/sonatype-aether")
+    (synopsis "Maven repository system API")
+    (description "This package contains the API for the maven repository system.")
+    (license license:asl2.0)))
+
+(define-public java-eclipse-aether-spi
+  (package
+    (inherit java-eclipse-aether-api)
+    (name "java-eclipse-aether-spi")
+    (arguments
+     `(#:jar-name "aether-spi.jar"
+       #:source-dir "aether-spi/src/main/java"
+       #:test-dir "aether-spi/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-spi/pom.xml")))))
+    (propagated-inputs
+     `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
+    (synopsis "Maven repository system SPI")
+    (description "This package contains the service provider interface (SPI)
+for repository system implementations and repository connectors.")))
+
+(define-public java-eclipse-aether-test-util
+  (package
+    (inherit java-eclipse-aether-api)
+    (name "java-eclipse-aether-test-util")
+    (arguments
+     `(#:jar-name "aether-test-util.jar"
+       #:source-dir "aether-test-util/src/main/java"
+       #:test-dir "aether-test-util/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-util/pom.xml")))))
+    (propagated-inputs
+     `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
+       ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)))
+    (synopsis "Utility classes for testing the maven repository system")
+    (description "This package contains a collection of utility classes to
+ease testing of the repository system.")))
+
+(define-public java-eclipse-aether-util
+  (package
+    (inherit java-eclipse-aether-api)
+    (name "java-eclipse-aether-util")
+    (arguments
+     `(#:jar-name "aether-util.jar"
+       #:source-dir "aether-util/src/main/java"
+       #:test-dir "aether-util/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-util/pom.xml")))))
+    (propagated-inputs
+     `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
+    (native-inputs
+     `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
+       ("java-junit" ,java-junit)))
+    (synopsis "Utility classes for the maven repository system")
+    (description "This package contains a collection of utility classes to
+ease usage of the repository system.")))
+
+(define-public java-eclipse-aether-impl
+  (package
+    (inherit java-eclipse-aether-api)
+    (name "java-eclipse-aether-impl")
+    (arguments
+     `(#:jar-name "aether-impl.jar"
+       #:source-dir "aether-impl/src/main/java"
+       #:test-dir "aether-impl/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install (install-from-pom "aether-impl/pom.xml")))))
+    (propagated-inputs
+     `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
+       ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)
+       ("java-eclipse-aether-util" ,java-eclipse-aether-util)
+       ("java-javax-inject" ,java-javax-inject)
+       ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
+       ("java-guice" ,java-guice)
+       ("java-slf4j-api" ,java-slf4j-api)))
+    (native-inputs
+     `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
+       ("java-junit" ,java-junit)))))
+
 (define-public maven-shared-utils
   (package
     (name "maven-shared-utils")
@@ -349,19 +570,26 @@ Maven Wagon, for use in Maven.")))
     (arguments
      `(#:jar-name "maven-shared-utils.jar"
        #:source-dir "src/main/java"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
+         (add-before 'build 'fix-/bin/sh-invocation
+           (lambda _
+             (substitute* (find-files "src" ".*.java$")
+               (("/bin/sh") (which "sh")))
+             #t))
          (add-before 'check 'remove-cyclic-dep
            (lambda _
              (delete-file
                "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
      `(("java-jansi" ,java-jansi)
        ("java-commons-io" ,java-commons-io)
        ("java-jsr305" ,java-jsr305)
-       ("java-plexus-container-default" ,java-plexus-container-default)))
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("maven-parent-pom-30" ,maven-parent-pom-30)))
     (native-inputs
      `(("unzip" ,unzip)
        ("java-junit" ,java-junit)
@@ -388,9 +616,14 @@ replacement with improvements.")
     (arguments
      `(#:jar-name "maven-plugin-annotations.jar"
        #:source-dir "maven-plugin-annotations/src/main/java"
-       #:tests? #f))
-    (inputs
-     `(("maven-artifact" ,maven-artifact)))
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "maven-plugin-annotations/pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-artifact)
+       ("maven-plugin-tools-parent-pom" ,maven-plugin-tools-parent-pom)))
     (native-inputs
      `(("unzip" ,unzip)))
     (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
@@ -398,22 +631,43 @@ replacement with improvements.")
     (description "This package contains Java 5 annotations for use in Mojos.")
     (license license:asl2.0)))
 
+(define maven-plugin-tools-parent-pom
+  (package
+    (inherit maven-plugin-annotations)
+    (name "maven-plugin-tools-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs '())))
+
 (define-public maven-wagon-provider-api
   (package
     (name "maven-wagon-provider-api")
-    (version "3.1.0")
+    (version "3.3.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://apache/maven/wagon/"
+              (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
                                   "wagon-" version "-source-release.zip"))
-              (sha256 (base32 "0r07j6xdzdnrvqnv8ida7dx1m05pznh5qgmcfcfpyvg9nxbj3l1n"))))
+              (sha256
+               (base32
+                "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "maven-wagon-provider-api.jar"
        #:source-dir "wagon-provider-api/src/main/java"
-       #:test-dir "wagon-provider-api/src/test"))
-    (inputs
-     `(("java-plexus-utils" ,java-plexus-utils)))
+       #:test-dir "wagon-provider-api/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "wagon-provider-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
     (native-inputs
      `(("unzip" ,unzip)
        ("java-junit" ,java-junit)
@@ -424,6 +678,22 @@ replacement with improvements.")
 artifact and repository handling code.")
     (license license:asl2.0)))
 
+(define maven-wagon-parent-pom
+  (package
+    (inherit maven-wagon-provider-api)
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("maven-parent-pom-33" ,maven-parent-pom-33)))
+    (native-inputs
+     `(("unzip" ,unzip)))))
+
 (define-public maven-wagon-provider-test
   (package
     (inherit maven-wagon-provider-api)
@@ -436,6 +706,7 @@ artifact and repository handling code.")
     (inputs
      `(("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
        ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
        ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
        ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
@@ -685,9 +956,9 @@ artifact and repository handling code.  It uses providers, that are tools to
 manage artifacts and deployment.  This package contains a Wagon provider that
 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
 
-(define-public maven-artifact
+(define maven-pom
   (package
-    (name "maven-artifact")
+    (name "maven-pom")
     (version "3.6.1")
     (source (origin
               (method url-fetch)
@@ -705,23 +976,100 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
                                 "maven-generate-javax-inject-named.patch"))))
     (build-system ant-build-system)
     (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-before 'install 'fix-dependencies
+           (lambda _
+             (substitute* "pom.xml"
+               (("classWorldsVersion>.*")
+                (string-append
+                  "classWorldsVersion>"
+                  ,(package-version java-plexus-classworlds)
+                  "</classWorldsVersion>\n"))
+               (("commonsCliVersion>.*")
+                (string-append
+                  "commonsCliVersion>"
+                  ,(package-version java-commons-cli)
+                  "</commonsCliVersion>\n"))
+               (("commonsLangVersion>.*")
+                (string-append
+                  "commonsLangVersion>"
+                  ,(package-version java-commons-lang3)
+                  "</commonsLangVersion>\n"))
+               (("plexusUtilsVersion>.*")
+                (string-append
+                  "plexusUtilsVersion>"
+                  ,(package-version java-plexus-utils)
+                  "</plexusUtilsVersion>\n"))
+               (("plexusInterpolationVersion>.*")
+                (string-append
+                  "plexusInterpolationVersion>"
+                  ,(package-version java-plexus-interpolation)
+                  "</plexusInterpolationVersion>\n"))
+               (("guiceVersion>.*")
+                (string-append
+                  "guiceVersion>"
+                  ,(package-version java-guice)
+                  "</guiceVersion>\n"))
+               (("sisuInjectVersion>.*")
+                (string-append
+                  "sisuInjectVersion>"
+                  ,(package-version java-eclipse-sisu-inject)
+                  "</sisuInjectVersion>\n"))
+               (("securityDispatcherVersion>.*")
+                (string-append
+                  "securityDispatcherVersion>"
+                  ,(package-version java-plexus-sec-dispatcher)
+                  "</securityDispatcherVersion>\n"))
+               (("cipherVersion>.*")
+                (string-append
+                  "cipherVersion>"
+                  ,(package-version java-plexus-cipher)
+                  "</cipherVersion>\n"))
+               (("slf4jVersion>.*")
+                (string-append
+                  "slf4jVersion>"
+                  ,(package-version java-slf4j-api)
+                  "</slf4jVersion>\n"))
+               (("<classifier>no_aop</classifier>") ""))
+             #t))
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("maven-parent-pom-33" ,maven-parent-pom-33)))
+    (home-page "https://maven.apache.org/")
+    (synopsis "Build system")
+    (description "Apache Maven is a software project management and comprehension
+tool.  This package contains the Maven pom file, used by all maven components.")
+    (license license:asl2.0)))
+
+(define-public maven-artifact
+  (package
+    (inherit maven-pom)
+    (name "maven-artifact")
+    (arguments
      `(#:jar-name "maven-artifact.jar"
        #:source-dir "maven-artifact/src/main/java"
        #:test-dir "maven-artifact/src/test"
-       #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"))
-    (inputs
+       #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "maven-artifact/pom.xml")))))
+    (propagated-inputs
      `(("java-plexus-utils" ,java-plexus-utils)
-       ("java-commons-lang3" ,java-commons-lang3)))
+       ("java-commons-lang3" ,java-commons-lang3)
+       ("maven-pom" ,maven-pom)))
     (native-inputs
      `(("java-junit" ,java-junit)))
-    (home-page "https://maven.apache.org/")
-    (synopsis "Build system")
     (description "Apache Maven is a software project management and comprehension
 tool.  This package contains the Maven Artifact classes, providing the
 @code{Artifact} interface, with its @code{DefaultArtifact} implementation.  The
 jar file is executable and provides a little tool to display how Maven parses
-and compares versions:")
-    (license license:asl2.0)))
+and compares versions:")))
 
 (define-public maven-model
   (package
@@ -731,7 +1079,6 @@ and compares versions:")
      `(#:jar-name "maven-model.jar"
        #:source-dir "maven-model/src/main/java"
        #:test-dir "maven-model/src/test"
-       #:jdk ,icedtea-8
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'generate-models
@@ -745,10 +1092,12 @@ and compares versions:")
                (modello-single-mode file "4.0.0" "xpp3-reader")
                (modello-single-mode file "4.0.0" "xpp3-writer")
                (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install (install-from-pom "maven-model/pom.xml")))))
+    (propagated-inputs
      `(("java-commons-lang3" ,java-commons-lang3)
-       ("java-plexus-utils" ,java-plexus-utils)))
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-pom" ,maven-pom)))
     (native-inputs
      `(("java-modello-core" ,java-modello-core)
        ;; for modello:
@@ -791,13 +1140,12 @@ so really just plain Java objects.")))
                  '("org/apache/maven/building/FileSourceTest.java"
                    "org/apache/maven/building/UrlSourceTest.java")
                  (("target/test-classes") "maven-builder-support/src/test/resources")))
-             #t)))))
-    (inputs
-     `(("java-plexus-utils" ,java-plexus-utils)
-       ("java-commons-lang3" ,java-commons-lang3)))
+             #t))
+         (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
+    (propagated-inputs
+     `(("maven-pom" ,maven-pom)))
     (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)))
+     `(("java-junit" ,java-junit)))
     (description "Apache Maven is a software project management and comprehension
 tool.  This package contains a support library for descriptor builders (model,
 setting, toolchains)")))
@@ -809,7 +1157,6 @@ setting, toolchains)")))
     (arguments
      `(#:jar-name "maven-settings.jar"
        #:source-dir "maven-settings/src/main/java"
-       #:jdk ,icedtea-8
        #:tests? #f; no tests
        #:phases
        (modify-phases %standard-phases
@@ -823,8 +1170,11 @@ setting, toolchains)")))
                (modello-single-mode file "1.1.0" "java")
                (modello-single-mode file "1.1.0" "xpp3-reader")
                (modello-single-mode file "1.1.0" "xpp3-writer"))
-             #t)))))
-    (inputs '())
+             #t))
+         (replace 'install (install-from-pom "maven-settings/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("maven-pom" ,maven-pom)))
     (native-inputs
      `(("java-modello-core" ,java-modello-core)
        ;; for modello:
@@ -866,17 +1216,18 @@ simply plain java objects.")))
              (chmod "components.sh" #o755)
              (invoke "./components.sh" "maven-settings-builder/src/main/java"
                      "build/classes/META-INF/plexus/components.xml")
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
+    (propagated-inputs
      `(("java-plexus-utils" ,java-plexus-utils)
-       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
        ("java-plexus-interpolation" ,java-plexus-interpolation)
        ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
        ("maven-builder-support" ,maven-builder-support)
        ("maven-settings" ,maven-settings)
-       ("java-commons-lang3" ,java-commons-lang3)))
+       ("maven-pom" ,maven-pom)))
     (native-inputs
-     `(("java-junit" ,java-junit)))
+     `(("java-junit" ,java-junit)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
     (description "Apache Maven is a software project management and comprehension
 tool.  This package contains the effective model builder, with profile activation,
 inheritance, interpolation, @dots{}")))
@@ -908,19 +1259,19 @@ inheritance, interpolation, @dots{}")))
            (lambda _
              (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
                (("src/test") "maven-model-builder/src/test"))
-             #t)))))
-    (inputs
-     `(("model" ,maven-model)
-       ("artifact" ,maven-artifact)
-       ("support" ,maven-builder-support)
-       ("annotations" ,java-plexus-component-annotations)
-       ("utils" ,java-plexus-utils)
-       ("interpolation" ,java-plexus-interpolation)
-       ("lang3" ,java-commons-lang3)
-       ("guava" ,java-guava)))
+             #t))
+         (replace 'install
+           (install-from-pom "maven-model-builder/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-artifact" ,maven-artifact)
+       ("maven-builder-support" ,maven-builder-support)
+       ("maven-model" ,maven-model)
+       ("maven-pom" ,maven-pom)))
     (native-inputs
      `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-guava" ,java-guava)
        ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
        ("java-plexus-component-annotations" ,java-plexus-component-annotations)
        ("guice" ,java-guice)
@@ -957,8 +1308,12 @@ inheritance, interpolation, @dots{}")))
                (modello-single-mode file "1.1.0" "java")
                (modello-single-mode file "1.1.0" "xpp3-reader")
                (modello-single-mode file "1.1.0" "xpp3-writer"))
-             #t)))))
-    (inputs '())
+             #t))
+         (replace 'install
+           (install-from-pom "maven-repository-metadata/pom.xml")))))
+    (propagated-inputs
+     `(("java-plexus-utils" ,java-plexus-utils)
+       ("maven-pom" ,maven-pom)))
     (native-inputs
      `(("modello" ,java-modello-core)
        ;; for modello:
@@ -1000,22 +1355,21 @@ so really just plain objects.")))
              (chmod "./sisu.sh" #o755)
              (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
                      "build/classes/META-INF/sisu/javax.inject.Named")
-             #t)))))
-    (inputs
-     `(("maven-resolver-spi" ,maven-resolver-spi)
+             #t))
+         (replace 'install
+           (install-from-pom "maven-resolver-provider/pom.xml")))))
+    (propagated-inputs
+     `(("maven-model" ,maven-model)
+       ("maven-model-builder" ,maven-model-builder)
+       ("maven-resolver-spi" ,maven-resolver-spi)
        ("maven-resolver-api" ,maven-resolver-api)
        ("maven-resolver-impl" ,maven-resolver-impl)
        ("maven-resolver-util" ,maven-resolver-util)
-       ("maven-model" ,maven-model)
-       ("maven-model-builder" ,maven-model-builder)
        ("maven-builder-support" ,maven-builder-support)
        ("maven-repository-metadata" ,maven-repository-metadata)
        ("java-plexus-utils" ,java-plexus-utils)
        ("java-plexus-component-annotations" ,java-plexus-component-annotations)
-       ("java-commons-lang3" ,java-commons-lang3)
        ("java-guice" ,java-guice)
-       ("java-guava" ,java-guava)
-       ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
        ("java-javax-inject" ,java-javax-inject)))))
 
 (define-public maven-plugin-api
@@ -1039,8 +1393,10 @@ so really just plain objects.")))
                (modello-single-mode file "1.0.0" "java")
                (modello-single-mode file "1.0.0" "xpp3-reader")
                (modello-single-mode file "1.0.0" "xpp3-writer"))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "maven-plugin-api/pom.xml")))))
+    (propagated-inputs
      `(("maven-artifact" ,maven-artifact)
        ("maven-model" ,maven-model)
        ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
@@ -1071,99 +1427,107 @@ implemented by Mojos -- development.
 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
 generally generated from plugin sources using maven-plugin-plugin.")))
 
-(define maven-core-bootstrap
-  (package
-    (inherit maven-artifact)
-    (name "maven-core")
-    (arguments
-     `(#:jar-name "maven-core.jar"
-       #:source-dir "src/main/java"
-       #:jdk ,icedtea-8
-       ;; Tests need maven-compat, which requires maven-core
-       #:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'configure 'chdir
-           (lambda _
-             ;; Required for generating components.xml in maven-core
-             (chdir "maven-core")
-             #t))
-         (add-before 'build 'copy-resources
-           (lambda _
-             (mkdir-p "build/classes/")
-             (copy-recursively "src/main/resources" "build/classes")
-             #t))
-         (add-after 'copy-resources 'fill-properties
-           (lambda _
-             ;; This file controls the output of some mvn subcommands, such as
-             ;; mvn -version.
-             (substitute* "build/classes/org/apache/maven/messages/build.properties"
-               (("\\$\\{buildNumber\\}") "guix_build")
-               (("\\$\\{timestamp\\}") "0")
-               (("\\$\\{project.version\\}") ,(package-version maven-artifact))
-               (("\\$\\{distributionId\\}") "apache-maven")
-               (("\\$\\{distributionShortName\\}") "Maven")
-               (("\\$\\{distributionName\\}") "Apache Maven"))
-             #t))
-         (add-before 'build 'generate-sisu-named
-           (lambda _
-             (mkdir-p "build/classes/META-INF/sisu")
-             (chmod "../sisu.sh" #o755)
-             (invoke "../sisu.sh" "src/main/java"
-                     "build/classes/META-INF/sisu/javax.inject.Named")
-             #t))
-         (add-before 'build 'generate-models
-           (lambda* (#:key inputs #:allow-other-keys)
-             (define (modello-single-mode file version mode)
-               (invoke "java" "org.codehaus.modello.ModelloCli"
-                       file mode "src/main/java" version
-                       "false" "true"))
-             (let ((file "src/main/mdo/toolchains.mdo"))
-               (modello-single-mode file "1.1.0" "java")
-               (modello-single-mode file "1.1.0" "xpp3-reader")
-               (modello-single-mode file "1.1.0" "xpp3-writer"))
-             #t)))))
-    (inputs
-     `(("maven-artifact" ,maven-artifact)
-       ("maven-resolver-provider" ,maven-resolver-provider)
-       ("maven-builder-support" ,maven-builder-support)
-       ("maven-model" ,maven-model)
-       ("maven-model-builder" ,maven-model-builder)
-       ("maven-settings" ,maven-settings)
-       ("maven-settings-builder" ,maven-settings-builder)
-       ("maven-plugin-api" ,maven-plugin-api)
-       ("maven-repository-metadata" ,maven-repository-metadata)
-       ("maven-shared-utils" ,maven-shared-utils)
-       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
-       ("java-plexus-utils" ,java-plexus-utils)
-       ("java-commons-lang3" ,java-commons-lang3)
-       ("java-guava" ,java-guava)
-       ("java-guice" ,java-guice)
-       ("maven-resolver-api" ,maven-resolver-api)
-       ("maven-resolver-spi" ,maven-resolver-spi)
-       ("maven-resolver-util" ,maven-resolver-util)
-       ("maven-resolver-impl" ,maven-resolver-impl)
-       ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
-       ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
-       ("java-javax-inject" ,java-javax-inject)
-       ("java-plexus-classworld" ,java-plexus-classworlds)))
-    (native-inputs
-     `(("java-modello-core" ,java-modello-core)
-       ("java-cglib" ,java-cglib)
-       ("java-asm" ,java-asm)
-       ("java-plexus-classworlds" ,java-plexus-classworlds)
-       ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
-       ("java-sisu-build-api" ,java-sisu-build-api)
-       ("java-modello-plugins-java" ,java-modello-plugins-java)
-       ("java-modello-plugins-xml" ,java-modello-plugins-xml)
-       ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
-       ;; tests
-       ("java-junit" ,java-junit)
-       ("java-mockito-1" ,java-mockito-1)
-       ("java-commons-jxpath" ,java-commons-jxpath)))
-    (description "Apache Maven is a software project management and comprehension
+(define-public maven-core-bootstrap
+  (hidden-package
+    (package
+      (inherit maven-artifact)
+      (name "maven-core")
+      (arguments
+       `(#:jar-name "maven-core.jar"
+         #:source-dir "src/main/java"
+         #:jdk ,icedtea-8
+         ;; Tests need maven-compat, which requires maven-core
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (add-before 'configure 'chdir
+             (lambda _
+               ;; Required for generating components.xml in maven-core
+               (chdir "maven-core")
+               #t))
+           (add-before 'build 'copy-resources
+             (lambda _
+               (mkdir-p "build/classes/")
+               (copy-recursively "src/main/resources" "build/classes")
+               #t))
+           (add-after 'copy-resources 'fill-properties
+             (lambda _
+               ;; This file controls the output of some mvn subcommands, such as
+               ;; mvn -version.
+               (substitute* "build/classes/org/apache/maven/messages/build.properties"
+                 (("\\$\\{buildNumber\\}") "guix_build")
+                 (("\\$\\{timestamp\\}") "0")
+                 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
+                 (("\\$\\{distributionId\\}") "apache-maven")
+                 (("\\$\\{distributionShortName\\}") "Maven")
+                 (("\\$\\{distributionName\\}") "Apache Maven"))
+               #t))
+           (add-before 'build 'generate-sisu-named
+             (lambda _
+               (mkdir-p "build/classes/META-INF/sisu")
+               (chmod "../sisu.sh" #o755)
+               (invoke "../sisu.sh" "src/main/java"
+                       "build/classes/META-INF/sisu/javax.inject.Named")
+               #t))
+           (add-before 'build 'generate-models
+             (lambda* (#:key inputs #:allow-other-keys)
+               (define (modello-single-mode file version mode)
+                 (invoke "java" "org.codehaus.modello.ModelloCli"
+                         file mode "src/main/java" version
+                         "false" "true"))
+               (let ((file "src/main/mdo/toolchains.mdo"))
+                 (modello-single-mode file "1.1.0" "java")
+                 (modello-single-mode file "1.1.0" "xpp3-reader")
+                 (modello-single-mode file "1.1.0" "xpp3-writer"))
+               #t))
+           (add-before 'install 'fix-pom
+             (lambda _
+               (substitute* "pom.xml"
+                 (("<classifier>no_aop</classifier>") ""))
+               #t))
+           (replace 'install
+             (install-from-pom "pom.xml")))))
+      (propagated-inputs
+       `(("maven-artifact" ,maven-artifact)
+         ("maven-resolver-provider" ,maven-resolver-provider)
+         ("maven-builder-support" ,maven-builder-support)
+         ("maven-model" ,maven-model)
+         ("maven-model-builder" ,maven-model-builder)
+         ("maven-settings" ,maven-settings)
+         ("maven-settings-builder" ,maven-settings-builder)
+         ("maven-plugin-api" ,maven-plugin-api)
+         ("maven-repository-metadata" ,maven-repository-metadata)
+         ("maven-shared-utils" ,maven-shared-utils)
+         ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+         ("java-plexus-utils" ,java-plexus-utils)
+         ("java-commons-lang3" ,java-commons-lang3)
+         ("java-guava" ,java-guava)
+         ("java-guice" ,java-guice)
+         ("maven-resolver-api" ,maven-resolver-api)
+         ("maven-resolver-spi" ,maven-resolver-spi)
+         ("maven-resolver-util" ,maven-resolver-util)
+         ("maven-resolver-impl" ,maven-resolver-impl)
+         ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
+         ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
+         ("java-javax-inject" ,java-javax-inject)
+         ("java-plexus-classworld" ,java-plexus-classworlds)))
+      (native-inputs
+       `(("java-modello-core" ,java-modello-core)
+         ("java-cglib" ,java-cglib)
+         ("java-asm" ,java-asm)
+         ("java-plexus-classworlds" ,java-plexus-classworlds)
+         ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
+         ("java-sisu-build-api" ,java-sisu-build-api)
+         ("java-modello-plugins-java" ,java-modello-plugins-java)
+         ("java-modello-plugins-xml" ,java-modello-plugins-xml)
+         ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
+         ;; tests
+         ("java-junit" ,java-junit)
+         ("java-mockito-1" ,java-mockito-1)
+         ("java-commons-jxpath" ,java-commons-jxpath)))
+      (description "Apache Maven is a software project management and comprehension
 tool.  This package contains the maven core classes managing the whole build
-process.")))
+process."))))
 
 (define-public maven-core
   (package
@@ -1281,8 +1645,10 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
              (substitute* "build.xml"
                (("srcdir=\"maven-embedder/src/test\"")
                 "srcdir=\"maven-embedder/src/test/java\""))
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "maven-embedder/pom.xml")))))
+    (propagated-inputs
      `(("maven-core" ,maven-core)
        ("maven-artifact" ,maven-artifact)
        ("maven-plugin-api" ,maven-plugin-api)
@@ -1309,7 +1675,8 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
        ("java-guice" ,java-guice)
        ("java-javax-inject" ,java-javax-inject)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-slf4j-simple" ,java-slf4j-simple)))
+       ("java-slf4j-simple" ,java-slf4j-simple)
+       ("java-jsr250" ,java-jsr250)))
     (native-inputs
      `(("java-modello-core" ,java-modello-core)
        ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
@@ -1478,8 +1845,10 @@ logging support.")))
          (add-after 'generate-metadata 'rebuild
            (lambda _
              (invoke "ant" "jar")
-             #t)))))
-    (inputs
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
      `(("maven-artifact" ,maven-artifact)
        ("maven-repository-metadata" ,maven-repository-metadata)
        ("maven-builder-support" ,maven-builder-support)
@@ -1559,8 +1928,10 @@ layer for plugins that need to keep Maven2 compatibility.")))
                  ;; Reference every jar so plexus-classworlds can find them.
                  (for-each
                    (lambda (dependency)
-                     (format #t "load       ~a/share/java/*.jar~%"
-                             (assoc-ref inputs dependency)))
+                     (for-each
+                       (lambda (file)
+                         (format #t "load       ~a~%" file))
+                       (find-files (assoc-ref inputs dependency) ".*.jar$")))
                    '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
                      "maven-builder-support" "maven-model" "maven-model-builder"
                      "maven-settings" "maven-settings-builder" "maven-plugin-api"
@@ -1663,3 +2034,1628 @@ management, documentation creation, site publication, and distribution
 publication are all controlled from the @file{pom.xml} declarative file.  Maven
 can be extended by plugins to utilise a number of other development tools for
 reporting or the build process.")))
+
+;; Many plugins require maven 3.0 as a dependency.
+(define maven-3.0-pom
+  (package
+    (inherit maven-pom)
+    (version "3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/apache/maven")
+                     (commit (string-append "maven-" version))))
+              (file-name (git-file-name "maven" version))
+              (sha256
+               (base32
+                "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file (find-files "." "\\.jar$"))
+                  (for-each (lambda (file) (chmod file #o644))
+                            (find-files "." "."))
+                  #t))
+              (patches
+                (search-patches "maven-generate-component-xml.patch"
+                                "maven-generate-javax-inject-named.patch"))))
+    (propagated-inputs
+     `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
+
+(define-public maven-3.0-artifact
+  (package
+    (inherit maven-artifact)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+      (map
+        (lambda (input)
+          (if (equal? (car input) "maven-pom")
+              `("maven-pom" ,maven-3.0-pom)
+              input))
+        (package-propagated-inputs maven-artifact)))))
+
+(define-public maven-3.0-model
+  (package
+    (inherit maven-model)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+      (map
+        (lambda (input)
+          (if (equal? (car input) "maven-pom")
+              `("maven-pom" ,maven-3.0-pom)
+              input))
+        (package-propagated-inputs maven-artifact)))
+    (arguments
+     `(#:jar-name "maven-model.jar"
+       #:source-dir "maven-model/src/main/java"
+       #:test-dir "maven-model/src/test"
+       #:modules
+       ((guix build ant-build-system)
+        (guix build java-utils)
+        (guix build syscalls)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'use-newer-model
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The model has almost not changed, but the newer version is
+             ;; needed to prevent an error in the newer modello we have
+             (let ((source (assoc-ref inputs "maven-source"))
+                   (dir (mkdtemp! "maven-source-XXXXXXXX")))
+               (with-directory-excursion dir
+                 (invoke "tar" "xf" source)
+                 (copy-file (car (find-files "." "maven.mdo"))
+                            "../maven-model/src/main/mdo/maven.mdo")))
+             #t))
+         (add-before 'build 'generate-models
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (modello-single-mode file version mode)
+               (invoke "java" "org.codehaus.modello.ModelloCli"
+                       file mode "maven-model/src/main/java" version
+                       "false" "true" "UTF-8"))
+             (let ((file "maven-model/src/main/mdo/maven.mdo"))
+               (modello-single-mode file "4.0.0" "java")
+               (modello-single-mode file "4.0.0" "xpp3-reader")
+               (modello-single-mode file "4.0.0" "xpp3-writer")
+               (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
+             #t))
+         (replace 'install
+           (install-from-pom "maven-model/pom.xml")))))
+    (inputs
+      `(("maven-source" ,(package-source maven-pom))
+        ,@(package-inputs maven-model)))))
+
+(define-public maven-3.0-settings
+  (package
+    (inherit maven-settings)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+      (map
+        (lambda (input)
+          (if (equal? (car input) "maven-pom")
+              `("maven-pom" ,maven-3.0-pom)
+              input))
+        (package-propagated-inputs maven-settings)))))
+
+(define-public maven-3.0-settings-builder
+  (package
+    (inherit maven-settings-builder)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+     `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ,@(filter
+           (lambda (a) a)
+           (map
+             (lambda (input)
+               (match (car input)
+                 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
+                 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
+                 ("maven-builder-support" #f)
+                 (_ input)))
+             (package-propagated-inputs maven-settings-builder)))))))
+
+(define-public maven-3.0-model-builder
+  (package
+    (inherit maven-model-builder)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+     `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ,@(filter
+           (lambda (a) a)
+           (map
+             (lambda (input)
+               (match (car input)
+                 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
+                 ("maven-model" `("maven-model" ,maven-3.0-model))
+                 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
+                 ("maven-builder-support" #f)
+                 (_ input)))
+             (package-propagated-inputs maven-model-builder)))))))
+
+(define-public maven-3.0-plugin-api
+  (package
+    (inherit maven-plugin-api)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (arguments
+      (substitute-keyword-arguments (package-arguments maven-plugin-api)
+        ((#:phases phases)
+         `(modify-phases ,phases
+            (add-before 'install 'fix-pom
+              (lambda _
+                (substitute* "maven-plugin-api/pom.xml"
+                  (("org.sonatype.sisu") "org.codehaus.plexus")
+                  (("sisu-inject-plexus") "plexus-container-default"))
+                #t))))))
+    (propagated-inputs
+      (map
+        (lambda (input)
+          (match (car input)
+            ("maven-pom" `("maven-pom" ,maven-3.0-pom))
+            ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
+            ("maven-model" `("maven-model" ,maven-3.0-model))
+            (_ input)))
+        (package-propagated-inputs maven-model-builder)))
+    (native-inputs
+     `(("java-plexus-container-default" ,java-plexus-container-default)
+       ,@(package-native-inputs maven-plugin-api)))))
+
+(define-public maven-3.0-repository-metadata
+  (package
+    (inherit maven-repository-metadata)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (propagated-inputs
+      (map
+        (lambda (input)
+          (if (equal? (car input) "maven-pom")
+              `("maven-pom" ,maven-3.0-pom)
+              input))
+        (package-propagated-inputs maven-repository-metadata)))))
+
+(define-public maven-3.0-aether-provider
+  (package
+    (inherit maven-3.0-pom)
+    (name "maven-aether-provider")
+    (arguments
+     `(#:jar-name "maven-aether-provider.jar"
+       #:source-dir "maven-aether-provider/src/main/java"
+       #:tests? #f; no tests in 3.0
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (replace 'install
+           (install-from-pom "maven-aether-provider/pom.xml")))))
+    (propagated-inputs
+     `(("maven-model" ,maven-3.0-model)
+       ("maven-model-builder" ,maven-3.0-model-builder)
+       ("maven-repository-metadata" ,maven-3.0-repository-metadata)
+       ("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
+       ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
+       ("java-plexus-component-annotation" ,java-plexus-component-annotations)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-pom" ,maven-3.0-pom)))
+    (native-inputs
+     `(("java-plexus-component-metadata" ,java-plexus-component-metadata)))))
+
+(define-public maven-3.0-core
+  (package
+    (inherit maven-core)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (arguments
+     `(#:jar-name "maven-core.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             ;; Required for generating components.xml in maven-core
+             (chdir "maven-core")
+             #t))
+         (add-before 'build 'generate-models
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (modello-single-mode file version mode)
+               (invoke "java" "org.codehaus.modello.ModelloCli"
+                       file mode "src/main/java" version
+                       "false" "true" "UTF-8"))
+             (let ((file "src/main/mdo/toolchains.mdo"))
+               (modello-single-mode file "1.0.0" "java")
+               (modello-single-mode file "1.0.0" "xpp3-reader")
+               (modello-single-mode file "1.0.0" "xpp3-writer"))
+             #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes/")
+             (copy-recursively "src/main/resources" "build/classes")
+             #t))
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (define (components file)
+               (let ((sxml (with-input-from-file file
+                             (lambda _ (xml->sxml (current-input-port)
+                                                  #:trim-whitespace? #t)))))
+                 ;; Select the list of <component>s inside the <component-set>
+                 ;; and <components>.
+                 ((@ (ice-9 match) match) sxml
+                  (('*TOP*
+                    ('*PI* foo ...)
+                    ('component-set
+                     ('components x ...))) x))))
+             (use-modules (sxml simple))
+             (delete-file "build/classes/META-INF/plexus/components.xml")
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "build/classes/META-INF/plexus"
+                     "--output" "build/classes/META-INF/plexus/components.t.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes")
+             ;; Now we merge all other components from hand-written xml
+             (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
+                   (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
+                   (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
+               (with-output-to-file "build/classes/META-INF/plexus/components.xml"
+                 (lambda _
+                   (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+                   (sxml->xml
+                     `(component-set
+                        (components
+                          ,@(append generated-xml components-xml
+                                    artifact-handlers-xml)))))))
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* "pom.xml"
+               (("org.sonatype.sisu") "org.codehaus.plexus")
+               (("sisu-inject-plexus") "plexus-container-default"))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-model" ,maven-3.0-model)
+       ("maven-settings" ,maven-3.0-settings)
+       ("maven-settings-builder" ,maven-3.0-settings-builder)
+       ("maven-repository-metadata" ,maven-3.0-repository-metadata)
+       ("maven-artifact" ,maven-3.0-artifact)
+       ("maven-model-builder" ,maven-3.0-model-builder)
+       ("maven-aether-provider" ,maven-3.0-aether-provider)
+       ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
+       ("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-util" ,java-sonatype-aether-util)
+       ("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-classworlds" ,java-plexus-classworlds)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
+       ("maven-pom" ,maven-3.0-pom)))))
+
+(define-public maven-3.0-compat
+  (package
+    (inherit maven-compat)
+    (version (package-version maven-3.0-pom))
+    (source (package-source maven-3.0-pom))
+    (arguments
+     `(#:tests? #f ;require an old version of java-easymock
+       ,@(substitute-keyword-arguments (package-arguments maven-compat)
+          ((#:phases phases)
+           `(modify-phases ,phases
+              (add-before 'install 'fix-pom
+                (lambda _
+                  (substitute* "pom.xml"
+                    (("org.sonatype.sisu") "org.codehaus.plexus")
+                    (("sisu-inject-plexus") "plexus-container-default"))
+                  #t))
+              (delete 'build-tests))))))
+    (propagated-inputs
+     `(("maven-model" ,maven-3.0-model)
+       ("maven-model-builder" ,maven-3.0-model-builder)
+       ("maven-settings" ,maven-3.0-settings)
+       ("maven-settings-builder" ,maven-3.0-settings-builder)
+       ("maven-artifact" ,maven-3.0-artifact)
+       ("maven-core" ,maven-3.0-core)
+       ("maven-aether-provider" ,maven-3.0-aether-provider)
+       ("maven-repository-metadata" ,maven-3.0-repository-metadata)
+       ("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-util" ,java-sonatype-aether-util)
+       ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("maven-wagon-provider-api" ,maven-wagon-provider-api)
+       ("maven-pom" ,maven-3.0-pom)))))
+
+(define-public maven-shared-utils-3.0
+  (package
+    (inherit maven-shared-utils)
+    (version "3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/maven/shared/"
+                                  "maven-shared-utils-" version "-source-release.zip"))
+              (sha256
+               (base32
+                "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
+    (propagated-inputs
+     `(("maven-core" ,maven-3.0-core)
+       ("maven-components-parent-pom" ,maven-components-parent-pom-21)
+       ,@(package-propagated-inputs maven-shared-utils)))))
+
+(define-public maven-shared-utils-3.1
+  (package
+    (inherit maven-shared-utils)
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/maven/shared/"
+                                  "maven-shared-utils-" version "-source-release.zip"))
+              (sha256
+               (base32
+                "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
+
+(define-public maven-shared-io
+  (package
+    (name "maven-shared-io")
+    (version "3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "maven-shared-io-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-shared-io.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources" "build/classes/")
+             (copy-recursively "src/test/resources" "build/test-classes/")
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-3.0-artifact)
+       ("maven-compat" ,maven-3.0-compat)
+       ("maven-plugin-api" ,maven-3.0-plugin-api)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("maven-wagon-provider-api" ,maven-wagon-provider-api)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-components-parent-pom" ,maven-components-parent-pom-22)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-junit" ,java-junit)
+       ("java-easymock" ,java-easymock)))
+    (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define-public maven-file-management
+  (package
+    (name "maven-file-management")
+    (version "3.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "file-management-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-file-management.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (copy-recursively "src/main/resources" "build/classes/")
+             #t))
+         (add-before 'build 'generate-models
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (modello-single-mode file version mode)
+               (invoke "java"
+                       "org.codehaus.modello.ModelloCli"
+                       file mode "src/main/java" version
+                       "false" "true"))
+             (let ((file "src/main/mdo/fileset.mdo"))
+               (modello-single-mode file "1.1.0" "java")
+               (modello-single-mode file "1.1.0" "xpp3-reader")
+               (modello-single-mode file "1.1.0" "xpp3-writer"))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-plugin-api" ,maven-3.0-plugin-api)
+       ("maven-shared-io" ,maven-shared-io)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-components-parent-pom" ,maven-components-parent-pom-22)))
+    (native-inputs
+     `(("java-modello-core" ,java-modello-core)
+       ;; modello plugins:
+       ("java-modellop-plugins-java" ,java-modello-plugins-java)
+       ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
+       ("unzip" ,unzip)))
+    (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define-public maven-archiver
+  (package
+    (name "maven-archiver")
+    (version "3.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "maven-archiver-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-archiver.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-commons-io" ,java-commons-io)
+       ("maven-artifact" ,maven-3.0-artifact)
+       ("maven-core" ,maven-3.0-core)
+       ("maven-model" ,maven-3.0-model)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("java-plexus-archiver" ,java-plexus-archiver)
+       ("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maen-parent-pom" ,maven-parent-pom-33)))
+    (native-inputs
+     `(("java-junit" ,java-junit)
+       ("java-assertj" ,java-assertj)
+       ("unzip" ,unzip)))
+    (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define-public maven-dependency-tree
+  (package
+    (name "maven-dependency-tree")
+    (version "3.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "maven-dependency-tree-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "0mxfslxvcmjs13jl30zhcg672j970dzn6ihh79w9ajh6sfqmlds2"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-dependency-tree.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-core" ,maven-3.0-core)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("maven-parent-pom" ,maven-parent-pom-30)))
+    (inputs
+     `(("java-sonatype-aether-api"  ,java-sonatype-aether-api)
+       ("java-sonatype-aether-util" ,java-sonatype-aether-util)
+       ("java-eclipse-aether-api" ,java-eclipse-aether-api)
+       ("java-eclipse-aether-util" ,java-eclipse-aether-util)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-junit" ,java-junit)))
+    (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define-public maven-common-artifact-filters
+  (package
+    (name "maven-common-artifact-filters")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "maven-common-artifact-filters-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-common-artifact-filters.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-sisu
+           (lambda _
+             ;; Replace sisu with an existing dependency, to prevent a failure
+             ;; when rewritting dependency versions
+             (substitute* "pom.xml"
+               (("sisu-inject-plexus") "maven-plugin-api")
+               (("org.sonatype.sisu") "org.apache.maven"))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-3.0-artifact)
+       ("maven-model" ,maven-3.0-model)
+       ("maven-core" ,maven-3.0-core)
+       ("maven-plugin-api" ,maven-3.0-plugin-api)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("maven-parent-pom" ,maven-parent-pom-33)
+       ("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-sonatype-aether-util" ,java-sonatype-aether-util)))
+    (inputs
+     `(("maven-resolver-api" ,maven-resolver-api)
+       ("maven-resolver-util" ,maven-resolver-util)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+   (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define-public maven-enforcer-api
+  (package
+    (name "maven-enforcer-api")
+    (version "3.0.0-M3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/enforcer/"
+                                  "enforcer-" version "-source-release.zip"))
+              (sha256
+               (base32
+                "014cwj0dqa69nnlzcin8pk9wsjmmg71vsbcpb16cibcjpm6h9wjg"))
+              (patches
+                (search-patches "maven-enforcer-api-fix-old-dependencies.patch"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-enforcer-api.jar"
+       #:source-dir "enforcer-api/src/main/java"
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "enforcer-api/pom.xml")))))
+    (propagated-inputs
+     `(("maven-plugin-api" ,maven-plugin-api)
+       ("java-plexus-container-default" ,java-plexus-container-default)
+       ("java-jsr305" ,java-jsr305)
+       ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://maven.apache.org/shared/maven-dependency-tree")
+    (synopsis "Tree-based API for resolution of Maven project dependencies")
+    (description "This package provides a tree-based API for resolution of
+Maven project dependencies.")
+    (license license:asl2.0)))
+
+(define maven-enforcer-parent-pom
+  (package
+    (inherit maven-enforcer-api)
+    (name "maven-enforcer-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("maven-parent-pom" ,maven-parent-pom-30)))))
+
+(define-public maven-enforcer-rules
+  (package
+    (inherit maven-enforcer-api)
+    (name "maven-enforcer-rules")
+    (arguments
+     `(#:tests? #f; requires maven-plugin-testing-harness
+       #:jar-name "maven-enforcer-rules.jar"
+       #:source-dir "enforcer-rules/src/main/java"
+       #:test-dir "enforcer-rules/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "enforcer-rules/pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-artifact)
+       ("maven-plugin-api" ,maven-plugin-api)
+       ("maven-core" ,maven-core)
+       ("maven-common-artifact-filters" ,maven-common-artifact-filters)
+       ("java-commons-codec" ,java-commons-codec)
+       ("java-commons-lang3" ,java-commons-lang3)
+       ("maven-enforcer-api" ,maven-enforcer-api)
+       ("maven-resolver-util" ,maven-resolver-util)
+       ("java-bsh" ,java-bsh)
+       ("maven-dependency-tree" ,maven-dependency-tree)
+       ("maven-compat" ,maven-3.0-compat)
+       ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))))
+
+(define-public maven-enforcer-plugin
+  (package
+    (inherit maven-enforcer-api)
+    (name "maven-enforcer-plugin")
+    (arguments
+     `(#:tests? #f
+       #:jar-name "maven-enforcer-plugin.jar"
+       #:source-dir "maven-enforcer-plugin/src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
+             "enforcer"
+             "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
+             (list
+               (list "DisplayInfoMojo.java")
+               (list "EnforceMojo.java"))))
+         (replace 'install
+           (install-from-pom "maven-enforcer-plugin/pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-artifact)
+       ("maven-plugin-api" ,maven-plugin-api)
+       ("maven-core" ,maven-core)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-enforcer-api" ,maven-enforcer-api)
+       ("maven-enforcer-rules" ,maven-enforcer-rules)
+       ("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))))
+
+(define-public maven-artifact-transfer
+  (package
+    (name "maven-artifact-transfer")
+    (version "0.12.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/shared/"
+                                  "maven-artifact-transfer-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "0mkdjr3wnvaxqaq68sy7h4mqlq3xgwwp5s2anj5vbxfy4bsc1ivj"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f; require mockito 2
+       #:jar-name "maven-artifact-transfer.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("java-commons-codec" ,java-commons-codec)
+       ("maven-artifact" ,maven-3.0-artifact)
+       ("maven-core" ,maven-3.0-core)
+       ("maven-common-artifact-filters" ,maven-common-artifact-filters)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-slf4j-api" ,java-slf4j-api)
+       ("java-plexus-classworlds" ,java-plexus-classworlds)
+       ("java-sonatype-aether-api" ,java-sonatype-aether-api)
+       ("java-eclipse-aether-api" ,java-eclipse-aether-api)
+       ("java-eclipse-aether-util" ,java-eclipse-aether-util)
+       ("java-eclipse-aether-impl" ,java-eclipse-aether-impl)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-plexus-component-metadata" ,java-plexus-component-metadata)))
+    (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
+    (synopsis "API to install, deploy and resolve artifacts in Maven")
+    (description "This package contains an API to install, deploy and resolve
+artifacts in Maven 3.")
+    (license license:asl2.0)))
+
+(define-public maven-install-plugin
+  (package
+    (name "maven-install-plugin")
+    (version "3.0.0-M1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/plugins/"
+                                  "maven-install-plugin-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:tests? #f; require maven-plugin-testing-harness
+       #:jar-name "maven-install-plugin.jar"
+       #:source-dir "src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-pom
+           (lambda _
+             (substitute* "pom.xml"
+               (("maven-project") "maven-core")
+               (("maven-artifact-manager") "maven-artifact")
+               (("2.0.6") "3.0"))
+             #t))
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "pom.xml"
+             "install"
+             "src/main/java/org/apache/maven/plugins/install"
+             (list
+               (list "AbstractInstallMojo.java" "InstallFileMojo.java")
+               (list "AbstractInstallMojo.java" "InstallMojo.java"))))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-artifact" ,maven-artifact)
+       ("maven-plugin-api" ,maven-plugin-api)
+       ("maven-compat" ,maven-compat)
+       ("maven-artifact-transfer" ,maven-artifact-transfer)
+       ("maven-plugins-pom-23" ,maven-plugins-pom-23)
+       ("java-plexus-digest" ,java-plexus-digest)))
+    (inputs
+     `(("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("java-slf4j-api" ,java-slf4j-api)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://maven.apache.org/plugin/maven-install-plugin")
+    (synopsis "Maven's install plugin")
+    (description "The Install Plugin is used during the install phase to add
+artifact(s) to the local repository.  The Install Plugin uses the information
+in the POM (groupId, artifactId, version) to determine the proper location for
+the artifact within the local repository.
+
+The local repository is the local cache where all artifacts needed for the
+build are stored.  By default, it is located within the user's home directory
+(@file{~/.m2/repository}) but the location can be configured in
+@file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
+    (license license:asl2.0)))
+
+(define-public maven-filtering
+  (package
+    (name "maven-filtering")
+    (version "3.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/maven/"
+                                  "shared/maven-filtering-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-filtering.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       ;; this test comes from sisu-build-api, not this package
+       #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
+                            "**/Abstract*.java")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             #t))
+         (add-after 'generate-metadata 'rebuild
+           (lambda _
+             (invoke "ant" "jar")
+             #t))
+         (add-before 'check 'decompress-tests
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((build-api-source (assoc-ref inputs "java-sisu-build-api-origin"))
+                    (classes (string-append build-api-source "/src/test/java")))
+               (copy-recursively classes "src/test/"))
+             #t))
+         (add-before 'check 'fix-directory
+           (lambda _
+             (substitute* (find-files "src/test" ".*.java$")
+               (("target/test-classes/") "build/test-classes/"))))
+         (add-before 'check 'copy-test-resources
+           (lambda _
+             (copy-recursively "src/test/resources" "build/test-classes/")
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-core" ,maven-3.0-core)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("java-sisu-build-api" ,java-sisu-build-api)
+       ("maven-parent-pom" ,maven-parent-pom-30)))
+    (inputs
+     `(("java-jsr305" ,java-jsr305)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-assertj" ,java-assertj)
+       ("java-junit" ,java-junit)
+       ("java-mockito" ,java-mockito-1)
+       ("java-objenesis" ,java-objenesis)
+       ("java-plexus-component-metadata" ,java-plexus-component-metadata)
+       ("java-sisu-build-api-origin" ,(package-source java-sisu-build-api))))
+    (home-page "https://maven.apache.org/shared/maven-filtering")
+    (synopsis "Shared component for all plugins that needs to filter resources")
+    (description "This component provides an API to filter resources in Maven
+projects.")
+    (license license:asl2.0)))
+
+(define-public maven-resources-plugin
+  (package
+    (name "maven-resources-plugin")
+    (version "3.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/apache/"
+                                  "maven-resources-plugin/archive/"
+                                  "maven-resources-plugin-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1f5gnjg2xmqfxml6k0ydyd1sxxwzgnb24qn6avcc4mijwd8a84pl"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-resources-plugin.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:tests? #f; test depends on maven-plugin-test-harness
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "pom.xml" "resources"
+             "src/main/java/org/apache/maven/plugins/resources"
+             (list
+               (list "ResourcesMojo.java" "CopyResourcesMojo.java")
+               (list "ResourcesMojo.java")
+               (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-plugin-api" ,maven-plugin-api)
+       ("maven-core" ,maven-core)
+       ("java-plexus-utils" ,java-plexus-utils)
+       ("maven-filtering" ,maven-filtering)
+       ("java-plexus-interpolation" ,java-plexus-interpolation)
+       ("maven-parent-pom" ,maven-parent-pom-31)))
+    (inputs
+     `(("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("java-commons-io" ,java-commons-io)))
+    (native-inputs
+     `(("java-plexus-component-metadata" ,java-plexus-component-metadata)))
+    (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
+    (synopsis "Maven plugin to collect and install resources")
+    (description "The Resources Plugin handles the copying of project resources
+to the output directory.  There are two different kinds of resources: main
+resources and test resources.  The difference is that the main resources are
+the resources associated to the main source code while the test resources are
+associated to the test source code.
+
+Thus, this allows the separation of resources for the main source code and its
+unit tests.")
+    (license license:asl2.0)))
+
+(define-public maven-shared-incremental
+  (package
+    (name "maven-shared-incremental")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://archive.apache.org/dist/maven/shared/"
+                                  "maven-shared-incremental-" version
+                                  "-source-release.zip"))
+              (sha256
+               (base32
+                "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "shared-incremental.java"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'change-parent
+           (lambda _
+             (substitute* "pom.xml"
+               (("19") "30"))
+             #t))
+         (add-before 'build 'fix-pom
+           (lambda _
+             (substitute* "pom.xml"
+               (("plexus-component-api") "plexus-component-annotations"))
+             #t))
+         (add-after 'build 'generate-metadata
+           (lambda _
+             (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
+                     "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
+                     "--source" "src/main/java"
+                     "--output" "build/classes/META-INF/plexus/components.xml"
+                     "--classes" "build/classes"
+                     "--descriptors" "build/classes/META-INF")
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-plugin-api" ,maven-plugin-api)
+       ("maven-core" ,maven-core)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("java-plexus-component-annotations" ,java-plexus-component-annotations)
+       ("maven-parent-pom" ,maven-parent-pom-30)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-plexus-component-metadata" ,java-plexus-component-metadata)))
+    (home-page "https://maven.apache.org/shared/maven-shared-incremental")
+    (synopsis "Maven Incremental Build support utilities")
+    (description "This package contains various utility classes and plexus
+components for supporting incremental build functionality in maven plugins.")
+    (license license:asl2.0)))
+
+(define-public maven-compiler-plugin
+  (package
+    (name "maven-compiler-plugin")
+    (version "3.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/apache/"
+                                  "maven-compiler-plugin/archive/"
+                                  "maven-compiler-plugin-" version ".tar.gz"))
+              (sha256
+               (base32
+                "018d9qwc4cd6k7a8kvhvxjmzbzd2ifdf7m36wqjfq42010js1mv1"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-compiler-plugin.jar"
+       #:source-dir "src/main/java"
+       #:test-dir "src/test"
+       #:tests? #f; test depends on maven-plugin-test-harness
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "pom.xml"
+             "compiler"
+             "src/main/java/org/apache/maven/plugin/compiler"
+             (list
+               (list "AbstractCompilerMojo.java" "CompilerMojo.java")
+               (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
+         (add-after 'generate-plugin.xml 'fix-plugin.xml
+           (lambda _
+             (substitute* "build/classes/META-INF/maven/plugin.xml"
+               ;; These are defined in AbstractCompilerMojo.java, but not
+               ;; parsed correctly in the previous phase
+               (("DEFAULT_TARGET") "1.6")
+               (("DEFAULT_SOURCE") "1.6"))
+             #t))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-plugin-api" ,maven-plugin-api)
+       ("maven-artifact" ,maven-artifact)
+       ("maven-core" ,maven-core)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("maven-shared-incremental" ,maven-shared-incremental)
+       ("java-plexus-java" ,java-plexus-java)
+       ("java-plexus-compiler-api" ,java-plexus-compiler-api)
+       ("java-plexus-compiler-manager" ,java-plexus-compiler-manager)
+       ("java-plexus-compiler-javac" ,java-plexus-compiler-javac)
+       ("maven-parent-pom" ,maven-parent-pom-33)))
+    (inputs
+     `(("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("java-commons-io" ,java-commons-io)))
+    (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
+    (synopsis "Compiler plugin for Maven")
+    (description "The Compiler Plugin is used to compile the sources of your
+project.  Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
+(if you are using java 1.6) and is used to compile Java sources.  If you want
+to force the plugin using javac, you must configure the plugin option
+@code{forceJavacCompilerUse}.
+
+Also note that at present the default source setting is 1.6 and the default
+target setting is 1.6, independently of the JDK you run Maven with.  You are
+highly encouraged to change these defaults by setting source and target as
+described in Setting the -source and -target of the Java Compiler.
+
+Other compilers than javac can be used and work has already started on
+AspectJ, .NET, and C#.")
+    (license license:asl2.0)))
+
+(define-public java-surefire-logger-api
+  (package
+    (name "java-surefire-logger-api")
+    (version "3.0.0-M4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://apache/maven/surefire/"
+                                  "surefire-" version "-source-release.zip"))
+              (sha256
+               (base32
+                "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "java-surefire-logger-api.jar"
+       #:source-dir "surefire-logger-api/src/main/java"
+       #:tests? #f; require mockito 2
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "surefire-logger-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://maven.apache.org/surefire/surefire-logger-api")
+    (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
+    (description "This package contains interfaces and utilities that are
+internal to the SureFire Logger API.  It is designed to have no dependency.")
+    (license license:asl2.0)))
+
+(define-public java-surefire-parent-pom
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-before 'install 'fix-pom-dependency-versions
+           (lambda _
+             (substitute* "pom.xml"
+               (("1.11") ,(package-version java-commons-compress))
+               (("1.13") ,(package-version java-commons-codec)))
+             (substitute* "pom.xml"
+               (("commonsLang3Version>.*")
+                (string-append
+                  "commonsLang3Version>"
+                  ,(package-version java-commons-lang3)
+                  "</commonsLang3Version>\n"))
+               (("commonsCompress>.*")
+                (string-append
+                  "commonsCompress>"
+                  ,(package-version java-commons-compress)
+                  "</commonsCompress>\n"))
+               (("commonsIoVersion>.*")
+                (string-append
+                  "commonsIoVersion>"
+                  ,(package-version java-commons-io)
+                  "</commonsIoVersion>\n"))
+               (("0.11.0") ,(package-version maven-artifact-transfer))
+               (("1.0.3") ,(package-version java-plexus-java)))
+             #t))
+         (add-after 'install 'install-providers
+           (install-pom-file "surefire-providers/pom.xml"))
+         (replace 'install
+           (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     `(("maven-parent-pom" ,maven-parent-pom-33)))))
+
+(define-public java-surefire-api
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-api")
+    (arguments
+     `(#:tests? #f
+       #:jar-name "java-surefire-api.jar"
+       #:source-dir "surefire-api/src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes")
+             (copy-recursively "surefire-api/src/main/resources" "build/classes")
+             #t))
+         (add-before 'build 'prepare-shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "build/classes")
+             (with-directory-excursion "build/classes"
+               (for-each
+                 (lambda (input)
+                   (for-each
+                     (lambda (jar-file)
+                       (invoke "jar" "xf" jar-file)
+                       (delete-file-recursively "META-INF"))
+                     (find-files (assoc-ref inputs input) ".*.jar$")))
+                 '("maven-shared-utils" "java-commons-codec")))
+             #t))
+         (add-after 'build 'shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jarjar
+                   (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
+                   (injar "java-surefire-api.jar")
+                   (outjar "java-surefire-api-shaded.jar"))
+               (with-directory-excursion "build/jar"
+                 (with-output-to-file "rules"
+                   (lambda _
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.maven.shared.utils.** "
+                                  "org.apache.maven.surefire.shade.api."
+                                  "org.apache.maven.shared.utils.@1~%"))
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.commons.codec.** "
+                                  "org.apache.maven.surefire.shade.api."
+                                  "org.apache.commons.codec.@1~%"))))
+                 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
+                 (delete-file injar)
+                 (rename-file outjar injar)))
+             #t))
+         (replace 'install
+           (install-from-pom "surefire-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-surefire-logger-api" ,java-surefire-logger-api)
+       ("java-commons-codec" ,java-commons-codec)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)
+       ("maven-shared-utils" ,maven-shared-utils-3.1)))
+    (inputs
+     `(("java-jsr305" ,java-jsr305)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-jarjar" ,java-jarjar)))
+    (synopsis "Maven SureFire API")
+    (description "This package contains the API to use Maven SureFire.")))
+
+(define-public java-surefire-booter
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-booter")
+    (arguments
+     `(#:tests? #f; require mockito 2
+       #:jar-name "java-surefire-booter.jar"
+       #:source-dir "surefire-booter/src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-/bin/sh
+           (lambda _
+             (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (replace 'install
+           (install-from-pom "surefire-booter/pom.xml")))))
+    (propagated-inputs
+     `(("java-surefire-api" ,java-surefire-api)
+       ("java-commons-lang3" ,java-commons-lang3)
+       ("java-commons-io" ,java-commons-io)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (inputs
+     `(("java-jsr305" ,java-jsr305)))
+    (synopsis "API and Facilities used by forked tests running in JVM sub-process")
+    (description "SureFire runs tests inside a forked JVM subprocess.  This
+package contains an API and facilities used inside that forked JVM.")))
+
+(define-public java-surefire-extensions-api
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-extensions-api")
+    (arguments
+     `(#:tests? #f; requires mockito 2
+       #:jar-name "java-surefire-extensions-api.jar"
+       #:source-dir "surefire-extensions-api/src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "surefire-extensions-api/pom.xml")))))
+    (propagated-inputs
+     `(("java-surefire-api" ,java-surefire-api)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (inputs
+     `(("java-plexus-component-annotations" ,java-plexus-component-annotations)))
+    (synopsis "Extension API for Maven SureFire")
+    (description "Surefire is a test framework project.  This is the aggregator
+POM in Apache Maven Surefire project.")))
+
+(define-public java-surefire-common-java5
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-common-java5")
+    (arguments
+     `(#:jar-name "java-surefire-common-java5.jar"
+       #:source-dir "surefire-providers/common-java5/src/main/java"
+       #:test-dir "surefire-providers/common-java5/src/test"
+       #:test-exclude (list
+                        ;; Abstract class
+                        "**/PojoStackTraceWriterTest.java"
+                        ;; Fails
+                        "**/SmartStackTraceParserTest.java")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'prepare-shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "build/classes")
+             (with-directory-excursion "build/classes"
+               (for-each
+                 (lambda (jar-file)
+                   (invoke "jar" "xf" jar-file)
+                   (delete-file-recursively "META-INF"))
+                 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
+             #t))
+         (add-after 'build 'shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jarjar
+                   (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
+                   (injar "java-surefire-common-java5.jar")
+                   (outjar "java-surefire-common-java5-shaded.jar"))
+               (with-directory-excursion "build/jar"
+                 (with-output-to-file "rules"
+                   (lambda _
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.maven.shared.utils.** "
+                                  "org.apache.maven.surefire.shade.common."
+                                  "org.apache.maven.shared.utils.@1~%"))))
+                 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
+                 (delete-file injar)
+                 (rename-file outjar injar)))
+             #t))
+         (replace 'install
+           (install-from-pom "surefire-providers/common-java5/pom.xml")))))
+    (propagated-inputs
+     `(("maven-shared-utils" ,maven-shared-utils-3.1)
+       ("java-surefire-api" ,java-surefire-api)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-jarjar" ,java-jarjar)
+       ("java-junit" ,java-junit)
+       ("java-fest-assert" ,java-fest-assert)))
+    (synopsis "Common java5 facilities for Maven SureFire")
+    (description "This package contains shared Java 5 code for all providers.")))
+
+(define-public java-surefire-common-junit3
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-common-junit3")
+    (arguments
+     `(#:jar-name "java-surefire-common-junit3.jar"
+       #:source-dir "surefire-providers/common-junit3/src/main/java"
+       #:test-dir "surefire-providers/common-junit3/src/test"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
+    (propagated-inputs
+     `(("java-junit" ,java-junit)
+       ("java-surefire-api" ,java-surefire-api)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-junit" ,java-junit)
+       ("java-fest-assert" ,java-fest-assert)))
+    (synopsis "Shared JUnit3 provider code for Maven SureFire")
+    (description "This package contains shared code for all JUnit providers.")))
+
+(define-public java-surefire-common-junit4
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-common-junit4")
+    (arguments
+     `(#:jar-name "java-surefire-common-junit4.jar"
+       #:source-dir "surefire-providers/common-junit4/src/main/java"
+       #:tests? #f; tests require junit 4.0
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
+    (propagated-inputs
+     `(("java-junit" ,java-junit)
+       ("java-surefire-api" ,java-surefire-api)
+       ("java-surefire-common-java5" ,java-surefire-common-java5)
+       ("java-surefire-common-junit3" ,java-surefire-common-junit3)
+       ("maven-shared-utils" ,maven-shared-utils-3.1)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (synopsis "Shared JUnit4 provider code for Maven SureFire")
+    (description "This package contains shared code for all JUnit providers,
+starting from JUnit 4.")))
+
+(define-public java-surefire-junit4
+  (package
+    (inherit java-surefire-logger-api)
+    (name "java-surefire-junit4")
+    (arguments
+     `(;#:tests? #f
+       #:jar-name "java-surefire-junit4.jar"
+       #:source-dir "surefire-providers/surefire-junit4/src/main/java"
+       #:test-dir "surefire-providers/surefire-junit4/src/test"
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build java-utils)
+                  (sxml simple))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'regenerate-own-pom
+           (lambda _
+             ;; Surefire struggles resolving artifacts because of this pom
+             ;; file, resulting in a NullPointerException when collecting
+             ;; Artifacts (and a "Failure detected." message from
+             ;; DefaultArtifactResolver).  Replace the pom file with a much
+             ;; simpler one.  Everything is shaded anyway (as used to be the
+             ;; case in 2.22), so there will not be missing dependencies.
+             (with-output-to-file "surefire-providers/surefire-junit4/pom.xml"
+               (lambda _
+                 (sxml->xml
+                   `((project
+                       (modelVersion "4.0.0")
+                       (name "Surefire JUnit4")
+                       (groupId "org.apache.maven.surefire")
+                       (artifactId "surefire-junit4")
+                       (version ,,(package-version java-surefire-common-java5)))))))
+             #t))
+         (add-before 'build 'copy-resources
+           (lambda _
+             (mkdir-p "build/classes")
+             (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
+                               "build/classes")
+             #t))
+         (add-before 'build 'prepare-shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "build/classes")
+             (with-directory-excursion "build/classes"
+               (for-each
+                 (lambda (input)
+                   (for-each
+                     (lambda (jar-file)
+                       (invoke "jar" "xf" jar-file)
+                       (delete-file-recursively "META-INF"))
+                     (find-files (assoc-ref inputs input) ".*.jar$")))
+                 '("maven-shared-utils" "java-surefire-common-java5"
+                   "java-surefire-common-junit3" "java-surefire-common-junit4"
+                   "java-surefire-api")))
+             #t))
+         (add-after 'build 'shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jarjar
+                   (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
+                   (injar "java-surefire-junit4.jar")
+                   (outjar "java-surefire-junit4-shaded.jar"))
+               (with-directory-excursion "build/jar"
+                 (with-output-to-file "rules"
+                   (lambda _
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.maven.shared.utils.** "
+                                  "org.apache.maven.surefire.shade."
+                                  "org.apache.maven.shared.utils.@1~%"))))
+                 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
+                 (delete-file injar)
+                 (rename-file outjar injar)))
+             #t))
+         (replace 'install
+           (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
+    (propagated-inputs
+     `(("java-junit" ,java-junit)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (inputs
+     `(("java-surefire-common-junit4" ,java-surefire-common-junit4)
+       ("java-surefire-common-junit3" ,java-surefire-common-junit3)
+       ("java-surefire-common-java5" ,java-surefire-common-java5)
+       ("java-surefire-api" ,java-surefire-api)))
+    (native-inputs
+     `(("java-jarjar" ,java-jarjar)
+       ("unzip" ,unzip)
+       ("java-junit" ,java-junit)
+       ("java-hamcrest-all" ,java-hamcrest-all)
+       ("java-fest-assert" ,java-fest-assert)))
+    (synopsis "SureFire JUnit 4.0+ runner")
+    (description "This package contains the runner for tests run on a forked
+JVM, using JUnit 4.0 or later.")))
+
+(define-public maven-surefire-common
+  (package
+    (inherit java-surefire-logger-api)
+    (name "maven-surefire-common")
+    (arguments
+     `(#:tests? #f; require mockito 2
+       #:jar-name "maven-surefire-common.jar"
+       #:source-dir "maven-surefire-common/src/main/java"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'prepare-shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (mkdir-p "build/classes")
+             (with-directory-excursion "build/classes"
+               (for-each
+                 (lambda (input)
+                   (for-each
+                     (lambda (jar-file)
+                       (invoke "jar" "xf" jar-file)
+                       (delete-file-recursively "META-INF"))
+                     (find-files (assoc-ref inputs input) ".*.jar$")))
+                 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
+                   "java-commons-compress" "maven-common-artifact-filters")))
+             #t))
+         (add-after 'build 'shade
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jarjar
+                   (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
+                   (injar "maven-surefire-common.jar")
+                   (outjar "maven-surefire-common-shaded.jar"))
+               (with-directory-excursion "build/jar"
+                 (with-output-to-file "rules"
+                   (lambda _
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.maven.shared.utils.** "
+                                  "org.apache.maven.surefire.shade.common."
+                                  "org.apache.maven.shared.utils.@1~%"))
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.commons.io.** "
+                                  "org.apache.maven.surefire.shade.common."
+                                  "org.apache.commons.io.@1~%"))
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.commons.lang3.** "
+                                  "org.apache.maven.surefire.shade.common."
+                                  "org.apache.commons.lang3.@1~%"))
+                     (format #t (string-append
+                                  "rule "
+                                  "org.apache.commons.compress.** "
+                                  "org.apache.maven.surefire.shade.common."
+                                  "org.apache.commons.compress.@1~%"))))
+                 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
+                 (delete-file injar)
+                 (rename-file outjar injar)))
+             #t))
+         (add-before 'install 'fix-pom
+           (lambda _
+             (substitute* "maven-surefire-common/pom.xml"
+               (("maven-toolchain") "maven-core"))
+             #t))
+         (replace 'install
+           (install-from-pom "maven-surefire-common/pom.xml")))))
+    (propagated-inputs
+     `(("java-surefire-api" ,java-surefire-api)
+       ("java-surefire-extensions-api" ,java-surefire-extensions-api)
+       ("java-surefire-booter" ,java-surefire-booter)
+       ("maven-core" ,maven-core)
+       ("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("maven-common-artifact-filters" ,maven-common-artifact-filters)
+       ("maven-artifact-transfer" ,maven-artifact-transfer)
+       ("java-plexus-java" ,java-plexus-java)
+       ("java-jansi" ,java-jansi)
+       ("java-commons-io" ,java-commons-io)
+       ("java-commons-lang3" ,java-commons-lang3)
+       ("java-commons-compress" ,java-commons-compress)
+       ("maven-shared-utils" ,maven-shared-utils-3.1)
+       ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
+    (inputs
+     `(("java-jsr305" ,java-jsr305)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("java-jarjar" ,java-jarjar)))
+    (synopsis "API used in Surefire and Failsafe MOJO")
+    (description "This package contains an API used in SureFire and Failsafe
+MOJO.")))
+
+(define-public maven-surefire-plugin
+  (package
+    (inherit java-surefire-logger-api)
+    (name "maven-surefire-plugin")
+    (arguments
+     `(#:jar-name "maven-surefire-plugin.jar"
+       #:source-dir "maven-surefire-plugin/src/main/java"
+       #:tests? #f; test depends on maven-plugin-test-harness
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "maven-surefire-plugin/pom.xml"
+             "surefire"
+             "."
+             (list
+               (list
+                 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
+                 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
+         (replace 'install
+           (install-from-pom "maven-surefire-plugin/pom.xml")))))
+    (propagated-inputs
+     `(("maven-surefire-common" ,maven-surefire-common)
+       ("maven-core" ,maven-core)))
+    (native-inputs
+     `(("maven-plugin-annotations" ,maven-plugin-annotations)
+       ("unzip" ,unzip)))
+    (synopsis "SureFire Maven plugin that runs tests.")
+    (description "The Surefire Plugin is used during the test phase of the
+build lifecycle to execute the unit tests of an application.  It generates
+reports in two different file formats, plain text and xml.")))
+
+(define-public maven-jar-plugin
+  (package
+    (name "maven-jar-plugin")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/apache/"
+                                  "maven-jar-plugin/archive/"
+                                  "maven-jar-plugin-" version ".tar.gz"))
+              (sha256
+               (base32
+                "032042n3kfb4g5jf6khzxywn22xfy3jpx57lkq88xsv0lwx9np96"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "maven-jar-plugin.jar"
+       #:source-dir "src/main/java"
+       #:tests? #f; test depends on maven-plugin-test-harness
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'generate-plugin.xml
+           (generate-plugin.xml "pom.xml"
+             "jar"
+             "src/main/java/org/apache/maven/plugins/jar"
+             (list
+               (list "AbstractJarMojo.java" "JarMojo.java")
+               (list "AbstractJarMojo.java" "TestJarMojo.java"))))
+         (replace 'install
+           (install-from-pom "pom.xml")))))
+    (propagated-inputs
+     `(("maven-archiver" ,maven-archiver)
+       ("maven-artifact" ,maven-3.0-artifact)
+       ("maven-core" ,maven-3.0-core)
+       ("maven-plugin-api" ,maven-3.0-plugin-api)
+       ("maven-file-management" ,maven-file-management)
+       ("maven-shared-utils" ,maven-shared-utils)
+       ("java-plexus-archiver" ,java-plexus-archiver)
+       ("java-plexus-utils" ,java-plexus-utils)))
+    (inputs
+     `(("maven-plugin-annotations" ,maven-plugin-annotations)))
+    (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
+    (synopsis "Jar builder plugin for Maven")
+    (description "This plugin provides the capability to build jars.  If you
+would like to sign jars please use the Maven Jarsigner Plugin instead.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index 56e563a132..06841d822c 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -37,14 +37,14 @@
 (define-public mc
   (package
     (name "mc")
-    (version "4.8.24")
+    (version "4.8.25")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "https://ftp.midnight-commander.org/mc-"
                           version ".tar.xz"))
       (sha256
-       (base32 "0ikd2yql44p7nagmb08dmjqdwadclnvgr7ri9pmzc2s5f301r7w5"))))
+       (base32 "12jlnabnc91xsm35g99g2wnh96jmznvrhffd18rj7fqfy8brdhgz"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("perl" ,perl)))
diff --git a/gnu/packages/mercury.scm b/gnu/packages/mercury.scm
new file mode 100644
index 0000000000..a6ae451e63
--- /dev/null
+++ b/gnu/packages/mercury.scm
@@ -0,0 +1,251 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages mercury)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages flex)
+  #:use-module (gnu packages shells)
+  #:use-module (gnu packages bison)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (ice-9 match)) ; match-lambda
+
+;; NOTE: Mercury uses a tightly coupled fork of BDWGC and
+;; libatomic-ops. When updating the package, please check the GitHub
+;; repository to ensure that the submodule commit matches what is
+;; provided.
+(define (gc-fork package-name package-url
+                 package-commit package-hash)
+  (let ((commit package-commit))
+    (package (inherit package-name)
+             (source
+              (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url package-url)
+                      (commit commit)))
+                (sha256 (base32 package-hash)))))))
+
+;; NOTE: Mercury /MUST/ bootstrap from a tarball release.
+;; Once the bootstrapping compiler is established, this
+;; minimal build can be used for further compiling Mercury
+;; from a git checkout with additional grades enabled.
+(define-public mercury-minimal
+  (package
+    (name "mercury-minimal")
+    (version "20.06")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://dl.mercurylang.org/release/mercury-srcdist-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1gkr9w8lsdzqykqwd3f1a1phsqv090648i14ilhv8jdg85frdimr"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 match))
+       #:tests? #f ; Tests are run on the stage-2 compiler.
+       ;; TODO: Find a way to bypass all static linkages.
+       #:configure-flags (list "--enable-minimal-install")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'replace-boehm-gc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (libgc (assoc-ref inputs "libgc"))
+                   (libatomic-ops (assoc-ref inputs "libatomic-ops"))
+                   (unpack (assoc-ref %standard-phases 'unpack))
+                   (patch-source-shebangs
+                    (assoc-ref %standard-phases 'patch-source-shebangs)))
+               (map (match-lambda
+                      ((src orig-name new-name)
+                       (with-directory-excursion "."
+                         (apply unpack (list #:source src)))
+                       (delete-file-recursively new-name)
+                       (invoke "mv" orig-name new-name)
+                       (with-directory-excursion new-name
+                         (apply patch-source-shebangs (list #:source src)))))
+                    `((,libgc "source" "boehm_gc")))
+               (map (match-lambda
+                      ((src orig-name new-name)
+                       (with-directory-excursion "."
+                         (apply unpack (list #:source src)))
+                       (delete-file-recursively new-name)
+                       (invoke "mv" orig-name new-name)
+                       (with-directory-excursion new-name
+                         (apply patch-source-shebangs (list #:source src)))))
+                    `((,libatomic-ops "source" "boehm_gc/libatomic_ops")))
+               #t)))
+         (add-after 'replace-boehm-gc 'patch-paths
+           (lambda _
+             (substitute*
+                 (list "Makefile"
+                       "Mmakefile"
+                       "scripts/mercury_update_interface.in"
+                       "scripts/mercury_config.in"
+                       "scripts/mmake.in"
+                       "scripts/Mmake.vars.in"
+                       "scripts/mdb.in"
+                       "scripts/rs6000_hack"
+                       "scripts/fullarch"
+                       "scripts/mmc.in"
+                       "scripts/canonical_grade"
+                       "scripts/mprof.in"
+                       "scripts/gud.el"
+                       "scripts/ml.in"
+                       "scripts/canonical_grade.in"
+                       "scripts/mdprof.in"
+                       "scripts/vpath_find"
+                       "scripts/mkfifo_using_mknod.in"
+                       "scripts/prepare_install_dir.in"
+                       "scripts/mprof_merge_runs"
+                       "scripts/mtc"
+                       "scripts/mgnuc.in"
+                       "scripts/c2init.in"
+                       "bindist/bindist.Makefile"
+                       "boehm_gc/configure.ac"
+                       "boehm_gc/Makefile.direct")
+               (("/bin/sh") (which "sh"))
+               (("/bin/pwd") (which "pwd"))
+               (("/bin/rm") (which "rm")))
+             #t)))))
+    (native-inputs
+     `(("texinfo" ,texinfo)
+       ("flex" ,flex)
+       ("tcsh", tcsh)
+       ("bison" ,bison)
+       ("readline" ,readline)
+       ("libatomic-ops" ,(package-source
+                          (gc-fork
+                           libatomic-ops
+                           "https://github.com/Mercury-Language/libatomic_ops.git"
+                           "49b70d57f6922fd8be55a7dcb77955c8abfc9ae9"
+                           "1flvwscsa6b2b8a38vhhcgl10bbkb5nnihw7s7iia60cinf7wcqm")))
+       ("libgc" ,(package-source
+                  (gc-fork
+                   libgc-7
+                   "https://github.com/Mercury-Language/bdwgc.git"
+                   "43ac2ea45261ba0a715534e9da41b2504904c46a"
+                   "0bmzmbs7id0ndyhy9xli6fhfad1shrim6vmy2k8m1nqr5wb31q76")))
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Pure logic programming language (used only for
+bootstrapping dependent Mercury)")
+    (description "Mercury is a logic/functional programming language which
+combines the clarity and expressiveness of declarative programming with advanced
+static analysis and error detection features.  Its highly optimized execution
+algorithm delivers efficiency far in excess of existing logic programming
+systems, and close to conventional programming systems.  Mercury addresses
+the problems of large-scale program development, allowing modularity,
+separate compilation, and numerous optimization/time trade-offs.")
+    (home-page "https://mercurylang.org")
+    (license license:gpl2)))
+
+;; NOTE: This package is quite large and will take an extensive
+;; amount of time to compile, especially with bootcheck functionality
+;; enabled. To ensure that we do not monopolize the CI & build servers,
+;; please make sure that your changes are justified.
+(define-public mercury
+  (package (inherit mercury-minimal)
+           (name "mercury")
+           (version "20.06")
+           (source
+            (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Mercury-Language/mercury")
+                    (commit (string-append
+                             "version-"
+                             (string-join (string-split version #\.) "_")))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1pc51r7vlqmi689rkwdkk1ka2dyk36q11dqvl339cizng6mp72h6"))))
+           (arguments
+            (substitute-keyword-arguments
+                (package-arguments mercury-minimal)
+              ;; TODO: Find a way to bypass all static linkages.
+              ((#:configure-flags flags ''())
+               `(list ""))
+              ((#:tests? _) #f) ; FIXME: Many test-cases failing.
+              ((#:phases phases)
+               `(modify-phases ,phases
+                  (replace 'patch-paths
+                    (lambda _
+                      (substitute*
+                          (list "prepare.sh"
+                                "Makefile"
+                                "Mmakefile"
+                                "scripts/mercury_update_interface.in"
+                                "scripts/mercury_config.in"
+                                "scripts/mmake.in"
+                                "scripts/Mmake.vars.in"
+                                "scripts/mdb.in"
+                                "scripts/rs6000_hack"
+                                "scripts/fullarch"
+                                "scripts/mmc.in"
+                                "scripts/mprof.in"
+                                "scripts/gud.el"
+                                "scripts/ml.in"
+                                "scripts/canonical_grade.in"
+                                "scripts/mdprof.in"
+                                "scripts/vpath_find"
+                                "scripts/mkfifo_using_mknod.in"
+                                "scripts/prepare_install_dir.in"
+                                "scripts/mprof_merge_runs"
+                                "scripts/mtc"
+                                "scripts/mgnuc.in"
+                                "scripts/c2init.in"
+                                "tools/bootcheck"
+                                "boehm_gc/configure.ac"
+                                "boehm_gc/Makefile.direct")
+                        (("/bin/sh") (which "sh"))
+                        (("/bin/pwd") (which "pwd"))
+                        (("/bin/rm") (which "rm"))
+                        (("boehm_gc/.git") "boehm_gc"))
+                      #t))
+                  (replace 'bootstrap
+                    (lambda _
+                      (invoke "./prepare.sh")
+                      #t))))))
+           ;; TODO: Uncomment phase when tests are enabled.
+           ;; (replace 'check
+           ;;   (lambda _
+           ;;     (invoke "./tools/bootcheck")
+           ;;     #t))
+           ;;
+           ;; TODO: The mercury configuration system determines
+           ;; grade support by looking for available toolchains.
+           ;; Eventually we need to add inputs for Java, Erlang,
+           ;; C#, etc. in order to enable these extra grades.
+           (native-inputs
+            `(("mercury-minimal" ,mercury-minimal)
+              ("autoconf" ,autoconf)
+              ("automake" ,automake)
+              ,@(package-native-inputs mercury-minimal)))
+           (synopsis "Pure logic programming language")))
diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm
index 347aef0a8c..9ffbe33ab7 100644
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@ -296,7 +296,7 @@ get_machine.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/oriansj/m2-planet.git")
+                      (url "https://github.com/oriansj/m2-planet")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -315,7 +315,7 @@ get_machine.")
       (description
        "M2-Planet, the PLAtform NEutral Transpiler, when combined with
 mescc-tools, compiles a subset of the C language into working binaries with
-introspective steps inbetween.  It is self-hosting and for bootstrapping it
+introspective steps in between.  It is self-hosting and for bootstrapping it
 also has an implementation in the M1 macro assembly language.  M2-Planet is
 built as Phase-5 of the full source bootstrapping process and is capable of
 building GNU Mes.")
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index a03c620574..adf648a0a6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -155,14 +155,14 @@ keys, no previous conversation is compromised.")
   (name "libsignal-protocol-c")
   (version "2.3.2")
   (source (origin
-           (method url-fetch)
-           (uri (string-append "https://github.com/WhisperSystems/"
-                               "libsignal-protocol-c/archive/v" version
-                               ".tar.gz"))
-           (file-name (string-append name "-" version ".tar.gz"))
+           (method git-fetch)
+           (uri (git-reference
+                  (url "https://github.com/WhisperSystems/libsignal-protocol-c")
+                  (commit (string-append "v" version))))
+           (file-name (git-file-name name version))
            (sha256
             (base32
-             "0380hl6fw3ppf265fg897pyrpqygpx4m9j8ifq118bim8lq6z0pk"))))
+             "1qj2w4csy6j9jg1jy66n1qwysx7hgjywk4n35hlqcnh1kpa14k3p"))))
   (arguments
    `(;; Required for proper linking and for tests to run.
      #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1")))
@@ -235,7 +235,7 @@ identi.ca and status.net).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sm00th/bitlbee-discord.git")
+             (url "https://github.com/sm00th/bitlbee-discord")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -370,20 +370,21 @@ dictionaries.  HexChat can be extended with multiple addons.")
 (define-public ngircd
   (package
     (name "ngircd")
-    (version "25")
+    (version "26")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0kpf5qi98m9f833r4rx9n6h9p31biwk798jwc1mgzmix7sp7r6f4"))
+                "1ijmv18fa648y7apxb9vp4j9iq6fxq850kz5v36rysaq614cdp2n"))
               (patches (search-patches "ngircd-handle-zombies.patch"))))
     (build-system gnu-build-system)
     ;; Needed for the test suite.
     (native-inputs `(("procps" ,procps)
                      ("expect" ,expect)
-                     ("inetutils" ,inetutils)))
+                     ("inetutils" ,inetutils)
+                     ("openssl" ,openssl)))
     ;; XXX Add libident.
     (inputs `(("zlib" ,zlib)
               ("libwrap" ,tcp-wrappers)
@@ -1004,7 +1005,7 @@ and prevent message loss.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/irungentoo/toxcore.git")
+                      (url "https://github.com/irungentoo/toxcore")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -1039,7 +1040,7 @@ and prevent message loss.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/TokTok/c-toxcore.git")
+             (url "https://github.com/TokTok/c-toxcore")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1070,7 +1071,7 @@ messenger protocol.")
     (origin
      (method git-fetch)
      (uri (git-reference
-           (url "https://github.com/uTox/uTox.git")
+           (url "https://github.com/uTox/uTox")
            (commit (string-append "v" version))
            (recursive? #t))) ;; Needed for 'minini' git submodule.
      (file-name (string-append name "-" version "-checkout"))
@@ -1194,7 +1195,7 @@ connect with friends and family without anyone else listening in.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Bitmessage/PyBitmessage.git")
+             (url "https://github.com/Bitmessage/PyBitmessage")
              (commit version)))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
@@ -1638,7 +1639,7 @@ is also scriptable and extensible via Guile.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/boothj5/libmesode.git")
+                    (url "https://github.com/boothj5/libmesode")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1669,7 +1670,7 @@ manual SSL certificate verification.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/strophe/libstrophe.git")
+             (url "https://github.com/strophe/libstrophe")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1694,14 +1695,14 @@ are both supported).")
 (define-public profanity
   (package
     (name "profanity")
-    (version "0.8.1")
+    (version "0.9.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://profanity-im.github.io/profanity-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "15yrx2ir2bilxpjfaxpjb93yjpvpvcvh5r7wbsjx6kmmy7qg2zvb"))))
+                "00j9l9v62rz9hprgiy1vrz8v3v59ph18h8kskqxr31fgqvjv5xr3"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -1720,7 +1721,8 @@ are both supported).")
        ("libotr" ,libotr)
        ("ncurses" ,ncurses)
        ("openssl" ,openssl)
-       ("readline" ,readline)))
+       ("readline" ,readline)
+       ("sqlite" ,sqlite)))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("autoconf-archive" ,autoconf-archive)
@@ -1776,7 +1778,7 @@ building the IRC clients and bots.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/JFreegman/toxic.git")
+             (url "https://github.com/JFreegman/toxic")
              (commit (string-append "v" version))))
        (sha256
         (base32 "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w"))
@@ -1856,16 +1858,16 @@ QMatrixClient project.")
 (define-public mtxclient
   (package
     (name "mtxclient")
-    (version "0.3.0")
+    (version "0.3.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Nheko-Reborn/mtxclient.git")
+             (url "https://github.com/Nheko-Reborn/mtxclient")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vf5xmn6yfi5lvskfgrdmnalvclzrapcrml92bj9qaa8vq8mfsf2"))))
+        (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
     (arguments
      `(#:configure-flags
        (list
@@ -1906,16 +1908,16 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
 (define-public nheko
   (package
     (name "nheko")
-    (version "0.7.1")
+    (version "0.7.2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Nheko-Reborn/nheko.git")
+             (url "https://github.com/Nheko-Reborn/nheko")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "12sxibbrn79sxkf9jrm7jrlj7l5vz15claxrrll7pkv9mv44wady"))))
+        (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
     (arguments
      `(#:tests? #f                      ;no test target
        #:configure-flags
@@ -2142,20 +2144,20 @@ Telegram messenger.")
     (license license:gpl2+)))
 
 (define-public tdlib
-  (let ((commit "278c7acdec83c5ac17d8e1ed0bb2cacbcea62460")
+  (let ((commit "f45d80fe16f99d112d545b7cd74ce46342fe3437")
         (revision "0")
-        (version "1.6.0"))
+        (version "1.6.6"))
     (package
       (name "tdlib")
       (version (git-version version revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/tdlib/td.git")
+                      (url "https://github.com/tdlib/td")
                       (commit commit)))
                 (sha256
                  (base32
-                  "0zlzpl6fgszg18kwycyyyrnkm255dvc6fkq0b0y32m5wvwwl36cv"))
+                  "1q8zw26mqhpdzvqbgc7fmn8rzwm5amb8m7s6impin4342wj7h6nr"))
                 (file-name (git-file-name name version))))
       (build-system cmake-build-system)
       (arguments
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index f6a1153548..aae39f19f9 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -2,9 +2,9 @@
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
-;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018, 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
 ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
 ;;;
@@ -158,16 +158,15 @@ etc. via a Web interface.  Features include:
 (define-public zabbix-agentd
   (package
     (name "zabbix-agentd")
-    (version "4.4.6")
+    (version "5.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/" version
-             "/zabbix-" version ".tar.gz"))
+             "https://cdn.zabbix.com/zabbix/sources/stable/"
+             (version-major+minor version) "/zabbix-" version ".tar.gz"))
        (sha256
-        (base32
-         "03mf4sklnw1x0ixp41vnibkz0794yi9jhws7ixld8jj2czk2ifr2"))))
+        (base32 "1cnns7ixqi7ank3cbvcs7d8rb5zh9qiqbmgivazr83jnz81qg46w"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -201,7 +200,7 @@ solution (client-side agent)")
                         (front-end-conf (string-append php "/conf"))
                         (etc (string-append php "/etc")))
                    (mkdir-p php)
-                   (copy-recursively "frontends/php" php)
+                   (copy-recursively "ui" php)
                    ;; Make front-end write config to ‘/etc/zabbix’ directory.
                    (rename-file front-end-conf
                                 (string-append front-end-conf "-example"))
@@ -412,7 +411,7 @@ WSGI and the node exporter textfile collector.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/prometheus/node_exporter.git")
+                    (url "https://github.com/prometheus/node_exporter")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -434,7 +433,7 @@ written in Go with pluggable metric collectors.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                      (url "https://github.com/emcrisostomo/fswatch.git")
+                      (url "https://github.com/emcrisostomo/fswatch")
                       (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index 2a4ca555dc..6c09c5c813 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -505,7 +506,7 @@ command-line tool.")
 (define-public chromaprint
   (package
     (name "chromaprint")
-    (version "1.4.3")
+    (version "1.5.0")
     (source (origin
       (method url-fetch)
       (uri (string-append
@@ -513,7 +514,7 @@ command-line tool.")
             version "/chromaprint-" version ".tar.gz"))
       (sha256
        (base32
-        "10kz8lncal4s2rp2rqpgc6xyjp0jzcrihgkx7chf127vfs5n067a"))))
+        "0sknmyl5254rc55bvkhfwpl4dfvz45xglk1rq8zq5crmwq058fjp"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; tests require googletest *sources*
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 543345d9e0..8c82f30d85 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -60,7 +60,7 @@
 (define-public libmpdclient
   (package
     (name "libmpdclient")
-    (version "2.18")
+    (version "2.19")
     (source (origin
               (method url-fetch)
               (uri
@@ -69,7 +69,7 @@
                               "/libmpdclient-" version ".tar.xz"))
               (sha256
                (base32
-                "1yl123xr25gcd3vlsfmn6p7gbrq029pgnxa8m6n6j0byaqgixc2c"))))
+                "12d1fzlkcnjw4ayk2wp11vhglfcvr5k02arzdbkhiavq496av2hm"))))
     (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.23")
+    (version "0.21.25")
     (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
-                "18q72b9baj5cdpq0yn60qm7q4g8vwqqyqndl9xg3f3w0m4n557s3"))))
+                "00f2cm3sg0vi9gxb1yk35lyyh3fbabwim3mfnsz2syrjpw0sv810"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...
@@ -299,14 +299,14 @@ interface for the Music Player Daemon.")
     (name "sonata")
     (version "1.7b1")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://github.com/multani/sonata/archive/v"
-                              version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/multani/sonata")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "07gq2nxqwxs0qyxjbay7k5j25zd386bn7wdr2dl1gk53diwnn7s0"))))
+                "1npbxlrg6k154qybfd250nq2p96kxdsdkj9wwnp93gljnii3g8wh"))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -350,7 +350,7 @@ MPD servers, search and multimedia key support.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/joshkunz/ashuffle.git")
+                    (url "https://github.com/joshkunz/ashuffle")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index b5d275b660..fcdacb66be 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -222,7 +222,7 @@ score, keyboard, guitar, drum and controller views.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/clementine-player/Clementine.git")
+                      (url "https://github.com/clementine-player/Clementine")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -329,7 +329,7 @@ playing your music.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/cmus/cmus.git")
+                    (url "https://github.com/cmus/cmus")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -463,7 +463,7 @@ background while you work.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kode54/dumb.git")
+             (url "https://github.com/kode54/dumb")
              (commit version)))
        (sha256
         (base32 "1cnq6rb14d4yllr0yi32p9jmcig8avs3f43bvdjrx4r1mpawspi6"))
@@ -508,7 +508,7 @@ settings (aliasing, linear interpolation and cubic interpolation).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/hydrogen-music/hydrogen.git")
+             (url "https://github.com/hydrogen-music/hydrogen")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -631,7 +631,7 @@ MusePack, Monkey's Audio, and WavPack files.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/digego/extempore.git")
+                    (url "https://github.com/digego/extempore")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -912,6 +912,71 @@ Sega Master System/Mark III, Sega Genesis/Mega Drive, BBC Micro
                    ;; demo and player directories are under the Expat license
                    license:expat))))
 
+(define-public ninjas2
+  (package
+    (name "ninjas2")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/clearly-broken-software/ninjas2")
+         (commit (string-append "v" version))
+         ;; Bundles a specific commit of the DISTRHO plugin framework.
+         (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1kwp6pmnfar2ip9693gprfbcfscklgri1k1ycimxzlqr61nkd2k9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no tests
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "CC=" ,(cc-for-target)))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure target
+         (replace 'install              ;no install target
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lv2 (string-append out "/lib/lv2")))
+               ;; Install LV2.
+               (for-each
+                (lambda (file)
+                  (copy-recursively file
+                                    (string-append lv2 "/" (basename file))))
+                (find-files "bin" "\\.lv2$" #:directories? #t))
+               ;; Install executables.
+               (for-each
+                 (lambda (file)
+                   (install-file file bin))
+                 (find-files "bin"
+                             (lambda (name stat)
+                               (and
+                                 (equal? (dirname name) "bin")
+                                 (not (string-suffix? ".so" name))
+                                 (not (string-suffix? ".lv2" name))))))
+               #t))))))
+    (inputs
+     `(("fftwf" ,fftwf)
+       ("jack" ,jack-1)                 ; for the standalone JACK application
+       ("libsamplerate" ,libsamplerate)
+       ("mesa" ,mesa)
+       ("libsndfile" ,libsndfile)))
+    (native-inputs
+     `(("ladspa" ,ladspa)
+       ("lv2" ,lv2)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Sample slicer audio plugin")
+    (description
+     "Ninjas 2 is a rewrite of the Ninjas sample slicer audio plugin.
+Its goal is to be an easy to use sample slicer with quick slicing of samples
+and auto-mapping slices to MIDI note numbers.")
+    (home-page "https://github.com/clearly-broken-software/ninjas2")
+    (license license:gpl3+)))
+
 (define-public lilypond
   (package
     (name "lilypond")
@@ -1136,7 +1201,7 @@ complete studio.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sjaehn/BSEQuencer.git")
+                    (url "https://github.com/sjaehn/BSEQuencer")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1172,7 +1237,7 @@ with a selectable pattern matrix size.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/sjaehn/BChoppr.git")
+               (url "https://github.com/sjaehn/BChoppr")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -1185,6 +1250,51 @@ B.Choppr is the successor of B.Slizr.")
     (home-page "https://github.com/sjaehn/BChoppr")
     (license license:gpl3+)))
 
+(define-public bshapr
+  (package
+    (inherit bsequencer)
+    (name "bshapr")
+    (version "0.8")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sjaehn/BShapr")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0jlq5rjicc4fxlpk869dg0l5bwwz8k9aj2wfk9v89b0qw8l8kaxl"))))
+    (synopsis "Beat/envelope shaper LV2 plugin")
+    (description "B.Shapr is a beat/envelope shaper LV2 plugin.")
+    (home-page "https://github.com/sjaehn/BShapr")
+    (license license:gpl3+)))
+
+(define-public bjumblr
+  (package
+    (inherit bsequencer)
+    (name "bjumblr")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sjaehn/BJumblr")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "14z8113zkwykbhm1a8h2xs972dgifvlfij92b08jckyc7cbz84ys"))))
+    (inputs
+     `(("cairo", cairo)
+       ("libsndfile", libsndfile)
+       ("lv2", lv2)))
+    (synopsis "Pattern-controlled audio stream/sample re-sequencer LV2 plugin")
+    (description "B.Jumblr is a pattern-controlled audio stream / sample
+re-sequencer LV2 plugin.")
+    (home-page "https://github.com/sjaehn/BJumblr")
+    (license license:gpl3+)))
+
 (define-public solfege
   (package
     (name "solfege")
@@ -1267,125 +1377,46 @@ your own lessons.")
     (license license:gpl3+)))
 
 (define-public powertabeditor
-  (package
-    (name "powertabeditor")
-    (version "2.0.0-alpha10")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/powertab/powertabeditor.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1z4fhdp71ck9synr12rg1p6365xnypd8ih40c5icj4si36khvksk"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Remove bundled sources for external libraries
-                  (delete-file-recursively "external")
-                  ;; Use only system libraries
-                  (substitute* "CMakeLists.txt"
-                    (("include\\( PTE_ThirdParty \\)")
-                     "\
-include(third_party/Qt)
-include(third_party/boost)
-add_library( Catch INTERFACE IMPORTED )
-add_library( rapidjson INTERFACE IMPORTED )"))
-                  #t))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:modules ((guix build cmake-build-system)
-                  (guix build utils)
-                  (ice-9 match))
-       #:configure-flags
-       ;; CMake appears to lose the RUNPATH for some reason, so it has to be
-       ;; explicitly set with CMAKE_INSTALL_RPATH.
-       (list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
-             (string-append "-DCMAKE_INSTALL_RPATH="
-                            (string-join (map (match-lambda
-                                                ((name . directory)
-                                                 (string-append directory "/lib")))
-                                              %build-inputs) ";"))
-             "-DPTE_DATA_DIR=share/powertabeditor")
-       #:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "bin/pte_tests"
-                     ;; FIXME: these tests fail
-                     "exclude:Actions/EditStaff"
-                     "exclude:Formats/PowerTabOldImport/MergeMultiBarRests"
-                     "exclude:Score/ViewFilter/FilterRule"
-                     "exclude:Score/ViewFilter/ViewFilter"
-                     "exclude:Formats/PowerTabOldImport/Directions")
-             #t))
-         ;; FIXME: This bug has been fixed upstream, but no release has been
-         ;; made yet.  See https://github.com/powertab/powertabeditor/issues/257
-         (add-after 'unpack 'fix-boost-bug
-           (lambda _
-             (substitute* "source/score/voiceutils.cpp"
-               (("boost::rational<int> duration\\(4, pos.getDurationType\\(\\)\\);")
-                "boost::rational<int> duration(4, static_cast<int>(pos.getDurationType()));"))
-             #t))
-         ;; Fix build with Qt 5.11.
-         (add-after 'unpack 'add-missing-headers
-           (lambda _
-             (substitute* (find-files "source/dialogs/" "\\.h$")
-               (("#include <QDialog>" m)
-                (string-append m "\n#include <QButtonGroup>")))
-             (substitute* "source/widgets/mixer/mixeritem.h"
-               (("#include <QWidget>" m)
-                (string-append m "\n#include <QStyle>")))
-             (substitute* "source/widgets/playback/playbackwidget.h"
-               (("#include <QWidget>" m)
-                (string-append m "\n#include <QButtonGroup>\n#include <QAction>")))
-             #t))
-         ;; FIXME: Finding RtMidi was fixed upstream so we should be able to
-         ;; remove this hack when a release is made.
-         ;; See https://github.com/powertab/powertabeditor/issues/255
-         (add-after 'unpack 'fix-rtmidi-header
-           (lambda _
-             (substitute* "source/audio/midioutputdevice.cpp"
-               (("#include <RtMidi.h>") "#include <rtmidi/RtMidi.h>"))
-             #t))
-         (add-before 'configure 'remove-third-party-libs
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Link with required static libraries, because we're not
-             ;; using the bundled version of withershins.
-             ;; Also add pthread for fixing a linker error.
-             (substitute* "source/build/CMakeLists.txt"
-               (("withershins" line)
-                (string-append line "\n"
-                               (assoc-ref inputs "binutils")
-                               "/lib/libbfd.a\n"
-                               (assoc-ref inputs "libiberty")
-                               "/lib/libiberty.a\n"
-                               "dl\n"
-                               "pthread\n"
-                               "z\n")))
-             #t)))))
-    (inputs
-     `(("boost" ,boost)
-       ("alsa-lib" ,alsa-lib)
-       ("qtbase" ,qtbase)
-       ("withershins" ,withershins)
-       ("libiberty" ,libiberty) ;for withershins
-       ("binutils" ,binutils) ;for -lbfd and -liberty (for withershins)
-       ("timidity" ,timidity++)
-       ("pugixml" ,pugixml)
-       ("rtmidi" ,rtmidi)
-       ("rapidjson" ,rapidjson)
-       ("zlib" ,zlib)))
-    (native-inputs
-     `(("catch" ,catch-framework)
-       ("pkg-config" ,pkg-config)))
-    (home-page "http://powertabs.net")
-    (synopsis "Guitar tablature editor")
-    (description
-     "Power Tab Editor 2.0 is the successor to the famous original Power Tab
+  ;; This commit is after the switch from catch2 to doctest; I couldn't build
+  ;; powertabeditor with catch2.
+  (let ((commit "c5d39b25b75bf87ec693a3ac5018823b1d87f277")
+        (revision "1"))
+    (package
+      (name "powertabeditor")
+      (version (git-version "2.0.0-alpha12" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/powertab/powertabeditor")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "16qhqfvk14bp7s8cwr8ds8zfd80pq603d7aymr7967pnb49kic5z"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'check (lambda _ (invoke "bin/pte_tests"))))))
+      (inputs
+       `(("alsa-lib" ,alsa-lib)
+         ("boost" ,boost)
+         ("minizip" ,minizip)
+         ("pugixml" ,pugixml)
+         ("qtbase" ,qtbase)
+         ("rapidjson" ,rapidjson)
+         ("rtmidi" ,rtmidi)
+         ("timidity" ,timidity++)
+         ("zlib" ,zlib)))
+      (native-inputs
+       `(("doctest" ,doctest)
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://github.com/powertab/powertabedito")
+      (synopsis "Guitar tablature editor")
+      (description
+       "Power Tab Editor 2.0 is the successor to the famous original Power Tab
 Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public jalv-select
   (package
@@ -1394,7 +1425,7 @@ Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/jalv_select.git")
+                    (url "https://github.com/brummer10/jalv_select")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1437,7 +1468,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.9.14")
+    (version "0.9.15")
     (source (origin
               (method url-fetch)
               (uri
@@ -1445,7 +1476,7 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "08n83krkak20924flb9azhm9hn40lyfvn29m63zs3lw3wajf0b40"))))
+                "047y2l7ipzv00ly54f074v6p043xjml7vz0svc7z81bhx74vs0ix"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1469,7 +1500,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.9.14")
+    (version "0.9.15")
     (source (origin
               (method url-fetch)
               (uri
@@ -1477,7 +1508,7 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0fr7pkp55zvjxf7p22drs93fsjgvqhbd55vxi0srhp2s2wzz5qak"))))
+                "108jk8p1sbm99plipf98ssij6dxaip1lmznibg8y2c4x0v2la6ab"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1502,7 +1533,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.9.14")
+    (version "0.9.15")
     (source (origin
               (method url-fetch)
               (uri
@@ -1510,7 +1541,7 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0p3f9wsn1nz93szcl60yxhxdr554zm2z2jlbniwwify765lvasxc"))))
+                "0r3bz64jqv5j4rqaxkbiqkxdf8n3hlcwjx1p19qfzik1lbwv9nw5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1535,7 +1566,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.9.14")
+    (version "0.9.15")
     (source (origin
               (method url-fetch)
               (uri
@@ -1543,7 +1574,7 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "079iwwlkl1gscyv70v9ambad8shxbs0ixdfp0vsl6dbh87b09qzh"))))
+                "18ma429kamifcvjmsv0hysxk7qn2r9br4fia929bvfccapck98y1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; there are no tests
@@ -1939,7 +1970,7 @@ projects.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/libpd/libpd.git")
+                    (url "https://github.com/libpd/libpd")
                     (commit version)
                     (recursive? #t)))   ; for the 'pure-data' submodule
               (file-name (string-append name "-" version "-checkout"))
@@ -2020,7 +2051,7 @@ using a system-independent interface.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/extemporelang/portmidi.git")
+                      (url "https://github.com/extemporelang/portmidi")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -2182,7 +2213,7 @@ backends, including ALSA, OSS, Network and FluidSynth.")
        ("docbook-xsl" ,docbook-xsl)
        ("qttools" ,qttools)
        ("pkg-config" ,pkg-config)))
-    (home-page "http://vmpk.sourceforge.net")
+    (home-page "https://vmpk.sourceforge.io/")
     (synopsis "Virtual MIDI piano keyboard")
     (description
      "Virtual MIDI Piano Keyboard is a MIDI events generator and receiver.  It
@@ -2362,7 +2393,7 @@ allows you to send JACK MIDI events (i.e. play) using your PC keyboard.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/kmatheussen/jack_capture.git")
+                    (url "https://github.com/kmatheussen/jack_capture")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -2507,14 +2538,14 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.9.14")
+    (version "0.9.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk"))))
+                "0k7a6llwrzs07flr9mvzvay9ygc2x64syg8npyabsw5a4d85fwsx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no "check" target
@@ -2553,7 +2584,7 @@ follows a traditional multi-track tape recorder control paradigm.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/blablack/ams-lv2.git")
+             (url "https://github.com/blablack/ams-lv2")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2594,7 +2625,7 @@ and hold, etc.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/gxtuner.git")
+                    (url "https://github.com/brummer10/gxtuner")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2682,7 +2713,7 @@ socket or command line.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/chronitis/curseradio.git")
+                      (url "https://github.com/chronitis/curseradio")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -2717,7 +2748,7 @@ tune-in sender list from @url{http://opml.radiotime.com}.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/PromyLOPh/pianobar.git")
+                    (url "https://github.com/PromyLOPh/pianobar")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2939,7 +2970,7 @@ websites such as Libre.fm.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/yask123/Instant-Music-Downloader.git")
+                      (url "https://github.com/yask123/Instant-Music-Downloader")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3057,7 +3088,7 @@ websites such as Libre.fm.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/milkytracker/MilkyTracker.git")
+                    (url "https://github.com/milkytracker/MilkyTracker")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3102,7 +3133,7 @@ websites such as Libre.fm.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/schismtracker/schismtracker.git")
+                    (url "https://github.com/schismtracker/schismtracker")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3290,7 +3321,7 @@ standard MIDI file with the csvmidi program.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxGuvnor.lv2.git")
+                    (url "https://github.com/brummer10/GxGuvnor.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3414,7 +3445,7 @@ simulation of a push pull transistor fuzz effect with added high octave."))))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxSuppaToneBender.lv2.git")
+                    (url "https://github.com/brummer10/GxSuppaToneBender.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3453,7 +3484,7 @@ saturation effect."))))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxHyperion.lv2.git")
+                    (url "https://github.com/brummer10/GxHyperion.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3471,7 +3502,7 @@ simulation of the Hyperion Fuzz pedal.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxVoodoFuzz.lv2.git")
+                    (url "https://github.com/brummer10/GxVoodoFuzz.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3491,7 +3522,7 @@ parallel with a DarkBooster, followed by a volume control.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxSuperFuzz.lv2.git")
+                    (url "https://github.com/brummer10/GxSuperFuzz.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3511,7 +3542,7 @@ adjusts the amount of harmonics.")))
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2.git")
+                    (url "https://github.com/brummer10/GxVintageFuzzMaster.lv2")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -3572,7 +3603,7 @@ a simulation of an analog Wah pedal with switchless activation."))))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ssj71/rkrlv2.git")
+                      (url "https://github.com/ssj71/rkrlv2")
                       (commit commit)))
                 (sha256
                  (base32
@@ -3602,7 +3633,7 @@ maintainer these will get merged into the original project.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/moddevices/mod-utilities.git")
+                      (url "https://github.com/moddevices/mod-utilities")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -3886,7 +3917,7 @@ are a C compiler and glib.  Full API documentation and examples are included.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/LMMS/lmms.git")
+             (url "https://github.com/LMMS/lmms")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3938,7 +3969,7 @@ are a C compiler and glib.  Full API documentation and examples are included.")
         ,(origin
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/mjansson/rpmalloc.git")
+                 (url "https://github.com/mjansson/rpmalloc")
                  (commit "b5bdc18051bb74a22f0bde4bcc90b01cf590b496")))
            (sha256
             (base32
@@ -3975,7 +4006,7 @@ audio samples and various soft sythesizers.  It can receive input from a MIDI ke
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/musescore/MuseScore.git")
+             (url "https://github.com/musescore/MuseScore")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4048,7 +4079,7 @@ sample library.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/muse-sequencer/muse.git")
+                    (url "https://github.com/muse-sequencer/muse")
                     (commit (string-append "muse_"
                                            (string-map (lambda (c)
                                                          (if (char=? c #\.)
@@ -4232,7 +4263,7 @@ notation and includes basic support for digital audio.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/OpenMusicKontrollers/patchmatrix.git")
+                    (url "https://github.com/OpenMusicKontrollers/patchmatrix")
                     (commit version)))
               (file-name (git-file-name "patchmatrix" version))
               (sha256
@@ -4303,7 +4334,7 @@ the electronic or dubstep genre.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pedrolcl/Linux-SonivoxEas.git")
+                    (url "https://github.com/pedrolcl/Linux-SonivoxEas")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -4516,7 +4547,7 @@ at @code{musicbrainz.org}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/trizen/clyrics.git")
+             (url "https://github.com/trizen/clyrics")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4811,7 +4842,7 @@ complete without obstructing your daily work.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/altdesktop/playerctl.git")
+                    (url "https://github.com/altdesktop/playerctl")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4879,7 +4910,7 @@ and reverb.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/sadko4u/lsp-plugins.git")
+               (url "https://github.com/sadko4u/lsp-plugins")
                (commit (string-append "lsp-plugins-" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -4950,7 +4981,7 @@ and debugging of event signal flows inside plugin graphs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jpcima/spectacle.git")
+             (url "https://github.com/jpcima/spectacle")
              (commit (string-append "v" version))
              ;; Bundles a specific commit of the DISTRHO plugin framework.
              (recursive? #t)))
@@ -5047,7 +5078,7 @@ audio and MIDI plugins that can also run as standalone JACK applications.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/zamaudio/zam-plugins.git")
+         (url "https://github.com/zamaudio/zam-plugins")
          (commit version)
          ;; Recursive to fetch the DISTRHO plugin framework. This
          ;; framework is intended to be included in the sources
@@ -5139,7 +5170,7 @@ It can also play and mix samples.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/DISTRHO/DPF-Plugins.git")
+         (url "https://github.com/DISTRHO/DPF-Plugins")
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5186,7 +5217,7 @@ Soul Force), MVerb, Nekobi, and ProM.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/x42/avldrums.lv2.git")
+             (url "https://github.com/x42/avldrums.lv2")
              (commit (string-append "v" version))
              ;; This plugin expects the robtk submodule's source files to be
              ;; there in order to build.
@@ -5230,7 +5261,7 @@ MIDI drums and comes as two separate drumkits: Black Pearl and Red Zeppelin.")
         (method git-fetch)
         (uri
           (git-reference
-            (url "https://github.com/mtytel/helm.git")
+            (url "https://github.com/mtytel/helm")
             (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -5342,19 +5373,19 @@ plugin support, JACK support and chord assistance.")
 (define-public dragonfly-reverb
   (package
     (name "dragonfly-reverb")
-    (version "2.0.0")
+    (version "3.0.0")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/michaelwillis/dragonfly-reverb.git")
+         (url "https://github.com/michaelwillis/dragonfly-reverb")
          (commit version)
          ;; Bundles a specific commit of the DISTRHO plugin framework.
          (recursive? #t)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qrbv4kk5v6ynx424h1i54qj0w8v6vpw81b759jawxvzzprpgq72"))))
+        (base32 "1z2x33lzpd26dv1p29ca7vy8mjfzkfpin35iq46spwd9k3sqn1ja"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -5374,8 +5405,15 @@ plugin support, JACK support and chord assistance.")
                                     (string-append lv2 "/" (basename file))))
                 (find-files "bin" "\\.lv2$" #:directories? #t))
                ;; Install executables.
-               (install-file "bin/DragonflyRoomReverb" bin)
-               (install-file "bin/DragonflyHallReverb" bin)
+               (for-each
+                 (lambda (file)
+                   (install-file file bin))
+                 (find-files "bin"
+                             (lambda (name stat)
+                               (and
+                                 (equal? (dirname name) "bin")
+                                 (not (string-suffix? ".so" name))
+                                 (not (string-suffix? ".lv2" name))))))
                #t))))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -5419,6 +5457,42 @@ automation that comes as an LV2 plugin bundle with a custom UI.")
     (home-page "https://git.zrythm.org/cgit/ZLFO/")
     (license license:agpl3+)))
 
+(define-public remid-lv2
+  (package
+    (name "remid-lv2")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ssj71/reMID.lv2")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "062kriniidsrhzwrf89kfxm9wb0cmgrl07asnlmgil8vcl7gl9y5"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ; no tests included
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("glib" ,glib)
+       ("jack" ,jack-1)
+       ("lv2" ,lv2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/ssj71/reMID.lv2")
+    (synopsis
+     "MIDI-controlled implementation of the SID 6581 chip used in the
+Commodore 64")
+    (description
+     "The 6581 SID chip is the sound chip used in the Commodore 64 computer.
+reMID is a MIDI implementation of the 6581 SID chip using the reSID library
+to provide a virtual SID-based synthesizer, controllable in real-time via
+MIDI.  It includes support for scripted instruments that allow complex sonic
+control of the chip.")
+    (license license:gpl2+)))
+
 (define-public vl1-emulator
   (package
     (name "vl1-emulator")
@@ -5427,7 +5501,7 @@ automation that comes as an LV2 plugin bundle with a custom UI.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/linuxmao-org/VL1-emulator.git")
+             (url "https://github.com/linuxmao-org/VL1-emulator")
              (commit (string-append "v" version))
              ;; bundles a specific commit of the DISTRHO plugin framework
              (recursive? #t)))
@@ -5467,7 +5541,7 @@ standalone JACK application.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/linuxmao-org/regrader.git")
+             (url "https://github.com/linuxmao-org/regrader")
              (commit (string-append "v" version))
              ;; bundles a specific commit of the DISTRHO plugin framework
              (recursive? #t)))
@@ -5519,7 +5593,7 @@ plugin and a standalone JACK application.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/moddevices/tap-lv2.git")
+                 (url "https://github.com/moddevices/tap-lv2")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -5559,7 +5633,7 @@ plugin and a standalone JACK application.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/pdesaulniers/wolf-shaper.git")
+               (url "https://github.com/pdesaulniers/wolf-shaper")
                (commit (string-append "v" version))
                ;; Bundles a specific commit of the DISTRHO plugin framework.
                (recursive? #t)))
@@ -5641,7 +5715,7 @@ It is provided as an LV2 plugin and as a standalone Jack application.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/linuxmao-org/shiru-plugins.git")
+                 (url "https://github.com/linuxmao-org/shiru-plugins")
                  (commit commit)
                  ;; Bundles a specific commit of the DISTRHO plugin framework.
                  (recursive? #t)))
diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm
index e59e0334b7..375b528805 100644
--- a/gnu/packages/ncdu.scm
+++ b/gnu/packages/ncdu.scm
@@ -28,20 +28,21 @@
 (define-public ncdu
   (package
     (name "ncdu")
-    (version "1.15")
+    (version "1.15.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dev.yorhel.nl/download/ncdu-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1ywpa8yg74a5xa46f0qig92xw5z5s1lmspwzcslr497brk2ksnaa"))))
+                "1c1zxalm5asyhn4p1hd51h7khw17515gbqmvdz63kc8xpx6xqbdh"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
-    (synopsis "Ncurses based disk usage analyzer")
-    (description "A disk usage analyzer with an ncurses interface, aimed to be
+    (synopsis "Ncurses-based disk usage analyzer")
+    (description
+     "Ncdu is a disk usage analyzer with an ncurses interface, aimed to be
 run on a remote server where you don't have an entire graphical setup, but have
-to do with a simple SSH connection. ncdu aims to be fast, simple and easy to
+to do with a simple SSH connection.  ncdu aims to be fast, simple and easy to
 use, and should be able to run in any minimal POSIX-like environment with
 ncurses installed.")
     (license (x11-style
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 1e6f70e1ff..8df66af120 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -328,6 +328,54 @@ It includes the following programs:
     ;; The user can choose version 2 or 3 of the GPL, not later versions.
     (license (list license:gpl2 license:gpl3))))
 
+(define-public parprouted
+  (package
+    (name "parprouted")
+    (version "0.7")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.hazard.maks.net/parprouted/"
+                                  "parprouted-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1z6yg28i0pv20jivyy82pxb38hsryj95inhj27bs6ja1bp4l6dnn"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ;no tests
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'insert-absolute-iproute-reference
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let* ((iproute (assoc-ref inputs "iproute"))
+                             (ip (string-append iproute "/sbin/ip")))
+                        (substitute* "parprouted.c"
+                          (("/sbin/ip") ip))
+                        #t)))
+                  (replace 'configure
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (sbin (string-append out "/sbin"))
+                             (man8 (string-append out "/share/man/man8")))
+                        ;; No configure script; hijack the phase to make
+                        ;; the necessary arrangements.
+                        (setenv "CC" ,(cc-for-target))
+                        (for-each mkdir-p (list sbin man8))
+                        (substitute* "Makefile"
+                          (("/usr/local/sbin") sbin)
+                          (("/usr/local/man/man8") man8))
+                        #t))))))
+    (inputs
+     `(("iproute" ,iproute)))
+    (home-page "https://www.hazard.maks.net/parprouted/")
+    (synopsis "Proxy ARP requests to other interfaces")
+    (description
+     "@command{parprouted} is a daemon for transparent IP (Layer@tie{}3)
+proxy ARP bridging.  Unlike standard bridging, proxy ARP bridging can bridge
+Ethernet networks behind wireless nodes.  Normal layer@tie{}2 bridging does
+not work between wireless nodes because wireless does not know about MAC
+addresses used in the wired Ethernet networks.  This daemon can also be
+useful for making transparent firewalls.")
+    (license license:gpl2)))
+
 (define-public socat
   (package
     (name "socat")
@@ -567,7 +615,7 @@ written in the C programming language.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/edenhill/librdkafka.git")
+                    (url "https://github.com/edenhill/librdkafka")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -603,13 +651,13 @@ containing both Producer and Consumer support.")
     (version "1.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://libndp.org/files/"
-                                  name "-" version ".tar.gz"))
+              (uri (string-append "https://libndp.org/files/"
+                                  "libndp-" version ".tar.gz"))
               (sha256
                (base32
                 "1dlinhl39va00v55qygjc9ap77yqf7xvn4rwmvdr49xhzzxhlj1c"))))
     (build-system gnu-build-system)
-    (home-page "http://libndp.org/")
+    (home-page "https://libndp.org/")
     (synopsis "Library for Neighbor Discovery Protocol")
     (description
      "libndp contains a library which provides a wrapper for IPv6 Neighbor
@@ -733,7 +781,7 @@ intended as a substitute for the PPPStatus and EthStatus projects.")
 configuration, troubleshooting, or servers.  Utilities included are:
 
 @itemize @bullet
-@item @command{arping}: Ping hosts using the @dfn{Adress Resolution Protocol}.
+@item @command{arping}: Ping hosts using the @dfn{Address Resolution Protocol}.
 @item @command{clockdiff}: Compute time difference between network hosts
 using ICMP TSTAMP messages.
 @item @command{ninfod}: Daemon that responds to IPv6 Node Information Queries.
@@ -868,14 +916,14 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "3.2.4")
+    (version "3.2.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
                            version ".tar.xz"))
        (sha256
-        (base32 "1amqgn94g6h6cfnsccm2zb4c73pfv1qmzi1i6h1hnbcyhhg4czfi"))))
+        (base32 "0h69m9maq6w5gik4gamv4kfqrr37hmi4kpwh225y1k36awm0b2dx"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
@@ -937,25 +985,26 @@ network frames.")
 (define-public fping
   (package
     (name "fping")
-    (version "4.2")
+    (version "4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://fping.org/dist/fping-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0jmnf4vmr43aiwk3h2b5qdsb95gxar8gz1yli8fswnm9nrs9ccvx"))))
+        (base32 "0b9ppwibc0dx2ns95m0z1b28939af1c8yvgjbhnr9f7p8bl0l14j"))))
     (build-system gnu-build-system)
     (home-page "https://fping.org/")
     (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
     (description
-     "fping is a ping like program which uses the Internet Control Message
-Protocol (ICMP) echo request to determine if a target host is responding.
-fping differs from ping in that you can specify any number of targets on the
-command line, or specify a file containing the lists of targets to ping.
-Instead of sending to one target until it times out or replies, fping will
-send out a ping packet and move on to the next target in a round-robin
-fashion.")
+     "fping is a ping-like program which uses @acronym{ICMP, Internet Control
+Message Protocol} echo requests to determine if a target host is responding.
+
+@command{fping} differs from @command{ping} in that you can specify any number
+of targets on the command line, or specify a file containing the lists of
+targets to ping.  Instead of sending to one target until it times out or
+replies, fping will send out a ping packet and move on to the next target in a
+round-robin fashion.")
     (license license:expat)))
 
 (define-public gandi.cli
@@ -1016,7 +1065,7 @@ virtual machines, and certificates.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/vishvananda/netns.git")
+                      (url "https://github.com/vishvananda/netns")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1042,7 +1091,7 @@ handling network namespaces in Go.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/ishidawataru/sctp.git")
+                      (url "https://github.com/ishidawataru/sctp")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1127,15 +1176,14 @@ TCP connection, TLS handshake and so on) in the terminal.")
 (define-public squid
   (package
     (name "squid")
-    (version "4.11")
+    (version "4.12")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.squid-cache.org/Versions/v4/squid-"
                            version ".tar.xz"))
        (sha256
-        (base32
-          "0z986kykx539wjqd7mr8y0abf3z6hz8byf8fmmbky9hh4ihlgnaf"))))
+        (base32 "05z34ysy2zn7as11vd365xxhh36bm1ysiwcbr0i0f0nwng406apl"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1174,7 +1222,7 @@ reusing frequently-requested web pages.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/vgropp/bwm-ng.git")
+             (url "https://github.com/vgropp/bwm-ng")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1731,16 +1779,16 @@ library remains flexible, portable, and easily embeddable.")
 (define-public sslh
   (package
     (name "sslh")
-    (version "1.20")
+    (version "1.21b")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/yrutschle/sslh.git")
+             (url "https://github.com/yrutschle/sslh")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "18zhkqlwfh6f5dg1a41a4p7p9g94dgb9nwls1ksy9r5yz174i2fx"))))
+        (base32 "1bws153l4x3vbwxshb92vqy3rnv8xfysmf7incp6hcmq43jsgjmr"))))
     (build-system gnu-build-system)
     (native-inputs
      `(;; Test dependencies.
@@ -1866,12 +1914,12 @@ gone wild and are suddenly taking up your bandwidth.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/nzbget/nzbget/archive/v"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (string-append "https://github.com/nzbget/nzbget/releases"
+                           "/download/v" version
+                           "/nzbget-" version "-src.tar.gz"))
        (sha256
         (base32
-         "0l3dzxz7d7jf6cyach41zirvsx1x0vs4nh053c0miycv7zjyrly7"))
+         "0lwd0pfrs4a5ms193hgz2qiyf7grrc925dw6y0nfc0gkp27db9b5"))
        (modules '((guix build utils)))
        (snippet
         ;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
@@ -1908,7 +1956,7 @@ procedure calls (RPCs).")
 (define-public openvswitch
   (package
     (name "openvswitch")
-    (version "2.12.0")
+    (version "2.13.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1916,7 +1964,7 @@ procedure calls (RPCs).")
                     version ".tar.gz"))
               (sha256
                (base32
-                "1y78ix5inhhcvicbvyy2ij38am1215nr55vydhab3d4065q45z8k"))))
+                "0cd5vmfr6zwgcnkwys6rag6cmz68v0librpaplianv734xs74pyx"))))
     (build-system gnu-build-system)
     (arguments
      '(;; FIXME: many tests fail with:
@@ -1943,11 +1991,9 @@ procedure calls (RPCs).")
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2)
+       ("python" ,python-wrapper)
        ;; for testing
        ("util-linux" ,util-linux)))
-    (propagated-inputs
-     `(("python-six" ,python2-six)))
     (inputs
      `(("libcap-ng" ,libcap-ng)
        ("openssl" ,openssl)))
@@ -2037,13 +2083,14 @@ enabled due to license conflicts between the BSD advertising clause and the GPL.
     (version "3.0.19")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/ptrrkssn/pidentd/archive/"
-                           "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/ptrrkssn/pidentd")
+              (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0y3kd1bkydqkpc1qdff24yswysamsqivvadjy0468qri5730izgc"))))
+         "1k4rr0b4ygxssbnsykzjvz4hjhazzz4j5arlilyc1iq7b1wzsk7i"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f)) ; No tests are included
@@ -2052,7 +2099,7 @@ enabled due to license conflicts between the BSD advertising clause and the GPL.
     (home-page "https://www.lysator.liu.se/~pen/pidentd/")
     (synopsis "Small Ident Daemon")
     (description
-     "@dfn{Pidentd} (Peter's Ident Daemon) is a identd, which implements a
+     "@dfn{Pidentd} (Peter's Ident Daemon) is an identd, which implements a
 identification server.  Pidentd looks up specific TCP/IP connections and
 returns the user name and other information about the connection.")
     (license license:public-domain)))
@@ -2148,7 +2195,7 @@ updates to the zebra daemon.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/vanhauser-thc/thc-ipv6.git")
+                       (url "https://github.com/vanhauser-thc/thc-ipv6")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -2459,7 +2506,7 @@ networks using zeromq.  It has these key characteristics:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/linux-can/can-utils.git")
+                    (url "https://github.com/linux-can/can-utils")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2640,7 +2687,7 @@ SNMP v3 using both IPv4 and IPv6.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/GNS3/ubridge.git")
+             (url "https://github.com/GNS3/ubridge")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2679,7 +2726,7 @@ Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ZerBea/hcxtools.git")
+             (url "https://github.com/ZerBea/hcxtools")
              (commit version)))
        (sha256
         (base32 "0k2qlq9hz5zc21nyc6yrnfqzga7hydn5mm0x3rpl2fhkwl81lxcn"))
@@ -2713,7 +2760,7 @@ packets from wireless devices for use with hashcat or John the Ripper.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ZerBea/hcxdumptool.git")
+             (url "https://github.com/ZerBea/hcxdumptool")
              (commit version)))
        (sha256
         (base32 "1b4d543y64ib92w9gcmiyjn5hz2vyjqmxk3f3yr1zk04fhw16gmf"))
@@ -2827,7 +2874,7 @@ communication over HTTP.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Stiffstream/restinio.git")
+                    (url "https://github.com/Stiffstream/restinio")
                     (commit (string-append "v." version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2865,16 +2912,17 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
 (define-public opendht
   (package
     (name "opendht")
-    (version "2.0.0")
+    (version "2.1.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/savoirfairelinux/opendht.git")
+                    (url "https://github.com/savoirfairelinux/opendht")
                     (commit version)))
               (file-name (git-file-name name version))
+              (patches (search-patches "opendht-fix-jami.patch"))
               (sha256
                (base32
-                "1q1fwk8wwk9r6bp0indpr60ql668lsk16ykslacyhrh7kg97kvhr"))))
+                "1ax26ri1ifb6s8ppd28jmanka9yf8mw3np65q2h4djhhik0phhal"))))
     ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
     (build-system cmake-build-system)
     (inputs
@@ -3038,7 +3086,7 @@ module @code{batman-adv}, for Layer 2.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pagekite/PyPagekite.git")
+             (url "https://github.com/pagekite/PyPagekite")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3202,7 +3250,7 @@ cables.")
 (define-public haproxy
   (package
     (name "haproxy")
-    (version "2.1.6")
+    (version "2.1.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.haproxy.org/download/"
@@ -3210,7 +3258,7 @@ cables.")
                                   "/src/haproxy-" version ".tar.gz"))
               (sha256
                (base32
-                "1pyz4gckdn8982vpb1iiw9agwp2s5p8wc0nn1qh1ic0wq3lrnpg6"))))
+                "0fd3c1znid5a9w3gcf77b85hm2a2558w9s02c4b7xzkmivqnqbir"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
index 27cd5c18b7..b1d6d4ce59 100644
--- a/gnu/packages/node-xyz.scm
+++ b/gnu/packages/node-xyz.scm
@@ -253,7 +253,7 @@ function with browser support.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/npm/node-semver.git")
+                    (url "https://github.com/npm/node-semver")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index e37bf30a7d..82754cbf36 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -107,20 +107,20 @@ time-stamping or reference clock, sub-microsecond accuracy is possible.")
 (define-public ntp
   (package
    (name "ntp")
-   (version "4.2.8p14")
+   (version "4.2.8p15")
    (source
      (origin
        (method url-fetch)
        (uri (list (string-append
-                    "http://archive.ntp.org/ntp4/ntp-"
-                    (version-major+minor version)
-                    "/ntp-" version ".tar.gz")
+                   "https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-"
+                   (version-major+minor version)
+                   "/ntp-" version ".tar.gz")
                   (string-append
-                    "https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-"
-                    (version-major+minor version)
-                    "/ntp-" version ".tar.gz")))
+                   "http://archive.ntp.org/ntp4/ntp-"
+                   (version-major+minor version)
+                   "/ntp-" version ".tar.gz")))
        (sha256
-        (base32 "1dsfbrad5adwjnm3k0y0ip8dzs7r2nmw66vjil8gvapnh7qf8q0r"))
+        (base32 "06cwhimm71safmwvp6nhxp6hvxsg62whnbgbgiflsqb8mgg40n7n"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index d9ba2aee2d..1b40063ffb 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -238,7 +238,7 @@ functional, imperative and object-oriented styles of programming.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml/ocamlbuild.git")
+             (url "https://github.com/ocaml/ocamlbuild")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -533,7 +533,7 @@ Git-friendly development workflow.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/camlp5/camlp5.git")
+             (url "https://github.com/camlp5/camlp5")
              (commit (string-append "rel" (string-delete #\. version)))))
        (file-name (git-file-name name version))
        (sha256
@@ -620,7 +620,7 @@ written in Objective Caml.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml/num.git")
+             (url "https://github.com/ocaml/num")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -666,7 +666,7 @@ the OCaml core distribution.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml/tuareg.git")
+             (url "https://github.com/ocaml/tuareg")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -843,7 +843,7 @@ libpanel, librsvg and quartz.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/bcpierce00/unison.git")
+                    (url "https://github.com/bcpierce00/unison")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1156,7 +1156,7 @@ GNU CC attributes.  It provides also a C pretty printer as an example of use.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/c-cube/qcheck.git")
+             (url "https://github.com/c-cube/qcheck")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1683,7 +1683,7 @@ simple (yet expressive) query language to select the tests to run.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alainfrisch/ppx_tools.git")
+             (url "https://github.com/alainfrisch/ppx_tools")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256 (base32
@@ -1738,7 +1738,7 @@ lets the client choose the concrete timeline.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/savonet/ocaml-ssl.git")
+              (url "https://github.com/savonet/ocaml-ssl")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256 (base32
@@ -2575,7 +2575,7 @@ programs.  It allows the definition of simple macros and file inclusion.  Cpp oi
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/c-cube/seq.git")
+             (url "https://github.com/c-cube/seq")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2613,7 +2613,7 @@ standard iterator type starting from 4.07.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml/ocaml-re.git")
+             (url "https://github.com/ocaml/ocaml-re")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2722,7 +2722,7 @@ writing to these structures, and they are accessed via the Bigarray module.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mirage/ezjsonm.git")
+             (url "https://github.com/mirage/ezjsonm")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2755,7 +2755,7 @@ JSON.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mirage/ocaml-uri.git")
+             (url "https://github.com/mirage/ocaml-uri")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2822,7 +2822,7 @@ Format module of the OCaml standard library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/alavrik/piqi.git")
+             (url "https://github.com/alavrik/piqi")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2940,13 +2940,14 @@ and 4 (random based) according to RFC 4122.")
     (name "ocaml4.07-piqi")
     (version "0.7.7")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/alavrik/piqi-ocaml/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/alavrik/piqi-ocaml")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1l0b4saxmwqgw9mb10mwrz31lvpj3l0abh3cwarqp0x4vdrzshbh"))))
+                "1913jpsb8mvqi8609j4g4sm5jhg50dq0xqxgy8nmvknfryyc89nm"))))
     (build-system ocaml-build-system)
     (arguments
      `(#:make-flags
@@ -2955,6 +2956,10 @@ and 4 (random based) according to RFC 4122.")
                             "/bin/sh"))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-files-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (delete 'configure))
        #:ocaml ,ocaml-4.07
        #:findlib ,ocaml4.07-findlib))
@@ -3115,7 +3120,7 @@ function that follows the prototype of POSIX's wcwidth.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/diml/zed.git")
+             (url "https://github.com/diml/zed")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3145,7 +3150,7 @@ connect an engine to your inputs and rendering functions to get an editor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/diml/lambda-term.git")
+             (url "https://github.com/diml/lambda-term")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3181,7 +3186,7 @@ instead of bindings to a C library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml-community/utop.git")
+             (url "https://github.com/ocaml-community/utop")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3372,7 +3377,7 @@ cross-platform SDL C library.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/deducteam/dedukti.git")
+             (url "https://github.com/deducteam/dedukti")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3517,7 +3522,7 @@ collection.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rlepigre/ocaml-bindlib.git")
+             (url "https://github.com/rlepigre/ocaml-bindlib")
              (commit (string-append "ocaml-bindlib_" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3725,7 +3730,7 @@ format}.  @code{craml} is released as a single binary (called @code{craml}).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocaml/merlin.git")
+             (url "https://github.com/ocaml/merlin")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4169,7 +4174,7 @@ OCaml AST in the OCaml syntax;
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_compare.git")
+                     (url "https://github.com/janestreet/ppx_compare")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4294,7 +4299,7 @@ new record values.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_sexp_conv.git")
+                     (url "https://github.com/janestreet/ppx_sexp_conv")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4323,7 +4328,7 @@ definitions.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_variants_conv.git")
+                     (url "https://github.com/janestreet/ppx_variants_conv")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4452,7 +4457,7 @@ storage of large amounts of data.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_hash.git")
+                     (url "https://github.com/janestreet/ppx_hash")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4483,7 +4488,7 @@ hash functions from type exrpessions and definitions.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_enumerate.git")
+                     (url "https://github.com/janestreet/ppx_enumerate")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4834,7 +4839,7 @@ useful errors on failure.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_expect.git")
+                     (url "https://github.com/janestreet/ppx_expect")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4909,7 +4914,7 @@ packages.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_typerep_conv.git")
+                     (url "https://github.com/janestreet/ppx_typerep_conv")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4975,7 +4980,7 @@ verification tool.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/ppx_bin_prot.git")
+                     (url "https://github.com/janestreet/ppx_bin_prot")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5144,7 +5149,7 @@ Configurator allows one to:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/spawn.git")
+                     (url "https://github.com/janestreet/spawn")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5192,7 +5197,7 @@ thousands of times faster than fork.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/core.git")
+                     (url "https://github.com/janestreet/core")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5232,7 +5237,7 @@ standard library that was developed by Jane Street.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/janestreet/core_kernel.git")
+                     (url "https://github.com/janestreet/core_kernel")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -5335,7 +5340,7 @@ stream, and convert everything to UTF-8.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ocsigen/tyxml.git")
+             (url "https://github.com/ocsigen/tyxml")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5370,7 +5375,7 @@ combinators.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/aantron/bisect_ppx.git")
+             (url "https://github.com/aantron/bisect_ppx")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5455,7 +5460,7 @@ complexity of the OCaml module system.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Chris00/fftw-ocaml.git")
+             (url "https://github.com/Chris00/fftw-ocaml")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5491,7 +5496,7 @@ library FFTW.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mmottl/lacaml.git")
+             (url "https://github.com/mmottl/lacaml")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5524,7 +5529,7 @@ convenience functions for vectors and matrices.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Chris00/ocaml-cairo.git")
+                    (url "https://github.com/Chris00/ocaml-cairo")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -5554,7 +5559,7 @@ and SVG file output.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/garrigue/lablgtk.git")
+                    (url "https://github.com/garrigue/lablgtk")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index dc690f3cef..dc4930918a 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -93,7 +93,7 @@ monospaced or proportional.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/taku910/zinnia.git")
+               (url "https://github.com/taku910/zinnia")
                (commit commit)))
          (sha256
           (base32
diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm
index cd31dfd910..8d0480622e 100644
--- a/gnu/packages/onc-rpc.scm
+++ b/gnu/packages/onc-rpc.scm
@@ -147,7 +147,7 @@ from the protocol files.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/thkukuk/libnsl.git")
+                    (url "https://github.com/thkukuk/libnsl")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/opencl.scm b/gnu/packages/opencl.scm
index f14d5df130..593b9044df 100644
--- a/gnu/packages/opencl.scm
+++ b/gnu/packages/opencl.scm
@@ -58,7 +58,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/KhronosGroup/OpenCL-Headers.git")
+                      (url "https://github.com/KhronosGroup/OpenCL-Headers")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -109,7 +109,7 @@ programming.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/KhronosGroup/OpenCL-CLHPP.git")
+             (url "https://github.com/KhronosGroup/OpenCL-CLHPP")
              (commit (string-append "v" version))))
        (sha256
         (base32 "0h5kpg5cl8wzfnqmv6i26aig2apv06ffm9p3rh35938n9r8rladm"))
@@ -181,7 +181,7 @@ Loader as provided by this package.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Oblomov/clinfo.git")
+             (url "https://github.com/Oblomov/clinfo")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -223,7 +223,7 @@ the system.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/intel/beignet.git")
+             (url "https://github.com/intel/beignet")
              (commit (string-append "Release_v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -303,7 +303,7 @@ back-end for the LLVM compiler framework.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pocl/pocl.git")
+             (url "https://github.com/pocl/pocl")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1c4y69zks6hkq5fqh9waxgb8g4ka7y6h3vacmsm720kba0h57g8a"))
diff --git a/gnu/packages/opencog.scm b/gnu/packages/opencog.scm
index 18aba64aec..cca0b37ead 100644
--- a/gnu/packages/opencog.scm
+++ b/gnu/packages/opencog.scm
@@ -44,7 +44,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/cogutil.git")
+                      (url "https://github.com/opencog/cogutil")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -76,7 +76,7 @@ utilities use for typical programming tasks in multiple OpenCog projects.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/atomspace.git")
+                      (url "https://github.com/opencog/atomspace")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -122,7 +122,7 @@ features not otherwise available.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/cogserver.git")
+                      (url "https://github.com/opencog/cogserver")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -164,7 +164,7 @@ OpenCog framework.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/attention.git")
+                      (url "https://github.com/opencog/attention")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -209,7 +209,7 @@ tasks.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/opencog.git")
+                      (url "https://github.com/opencog/opencog")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -260,7 +260,7 @@ combination.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/opencog/agi-bio.git")
+                      (url "https://github.com/opencog/agi-bio")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/openkinect.scm b/gnu/packages/openkinect.scm
index 536eb5a6fd..0cdecca3ab 100644
--- a/gnu/packages/openkinect.scm
+++ b/gnu/packages/openkinect.scm
@@ -39,6 +39,7 @@
                 (uri (git-reference
                       (url "https://github.com/OpenKinect/libfreenect")
                       (commit (string-append "v" version))))
+                (file-name (git-file-name name version))
                 (sha256
                  (base32
                   "0was1va167rqshmpn382h36yyprpfi9cwillb6ylppmnfdrfrhrr"))))
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index a1e21d8872..d0294cdef3 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -79,7 +79,7 @@
         ("python-testrepository" ,python-testrepository)
         ("python-testscenarios" ,python-testscenarios)
         ("python-testtools" ,python-testtools)))
-    (home-page "https://wiki.openstack.org/wiki/Security/Projects/Bandit")
+    (home-page "https://github.com/PyCQA/bandit")
     (synopsis "Security oriented static analyser for python code")
     (description
       "Bandit is a tool designed to find common security issues in Python code.
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 2cd7886011..68a2e6e203 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -118,8 +119,8 @@
   ;; Note: the 'update-guix-package.scm' script expects this definition to
   ;; start precisely like this.
   (let ((version "1.1.0")
-        (commit "c00564192a9924ab2218c243342963aba89d67d1")
-        (revision 12))
+        (commit "36a1925f21ee6787d8b80025f1b96238309f4b96")
+        (revision 17))
     (package
       (name "guix")
 
@@ -135,7 +136,7 @@
                       (commit commit)))
                 (sha256
                  (base32
-                  "008ywpdkc5f2jh25x6rr9glzvq4a6qih7v73w5dbxscpddx5c5g2"))
+                  "05f7w6hyl1bw58q1fph9ws17rx0zgs638mrsxwz026bwjyy2xxr0"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (build-system gnu-build-system)
       (arguments
@@ -319,7 +320,7 @@ $(prefix)/etc/init.d\n")))
 
                        ;; Guile libraries are needed here for
                        ;; cross-compilation.
-                       ("guile" ,guile-3.0)
+                       ("guile" ,guile-3.0-latest) ;for faster builds
                        ("gnutls" ,gnutls)
                        ("guile-gcrypt" ,guile-gcrypt)
                        ("guile-json" ,guile-json-4)
@@ -346,7 +347,7 @@ $(prefix)/etc/init.d\n")))
          ("sqlite" ,sqlite)
          ("libgcrypt" ,libgcrypt)
 
-         ("guile" ,guile-3.0)
+         ("guile" ,guile-3.0-latest)
 
          ;; Some of the tests use "unshare" when it is available.
          ("util-linux" ,util-linux)
@@ -486,9 +487,10 @@ the Nix package manager.")
    (package
      (inherit guix)
      (name "guix-minimal")
-     (inputs
-      `(("guile" ,guile-2.2)
-        ,@(alist-delete "guile" (package-inputs guix))))
+     (native-inputs
+      (fold alist-delete
+            (package-native-inputs guix)
+            '("guile-ssh")))
      (propagated-inputs
       (fold alist-delete
             (package-propagated-inputs guix)
@@ -897,7 +899,7 @@ written entirely in Python.")))
        ("texinfo" ,texinfo)
        ("graphviz" ,graphviz)))
     (inputs
-     `(("guile" ,guile-3.0)))
+     `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
     (propagated-inputs
      `(("guix" ,guix)
        ("guile-commonmark" ,guile-commonmark)
@@ -981,7 +983,7 @@ environments.")
                          "-s")
                    "\",\n\t\t\""))
                  (("guix-jupyter-kernel.scm")
-                  (string-append out "/share/guile/site/2.2/"
+                  (string-append out "/share/guile/site/3.0/"
                                  "guix-jupyter-kernel.scm")))
                #t))))))
     (native-inputs
@@ -995,7 +997,7 @@ environments.")
        ("python-ipykernel" ,python-ipykernel)))
     (inputs
      `(("guix" ,guix)
-       ("guile" ,guile-3.0)))
+       ("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
     (propagated-inputs
      `(("guile-json" ,guile-json-4)
        ("guile-simple-zmq" ,guile-simple-zmq)
@@ -1129,7 +1131,7 @@ the boot loader configuration.")
 (define-public flatpak
   (package
    (name "flatpak")
-   (version "1.6.3")
+   (version "1.8.0")
    (source
     (origin
      (method url-fetch)
@@ -1137,7 +1139,7 @@ the boot loader configuration.")
                          version "/flatpak-" version ".tar.xz"))
      (sha256
       (base32
-       "17s8nqdxd4xdy7ag9bw06adxccha78jmlsa3zpqnl3qh92pg0hji"))))
+       "0d4x79z96r60rc2gnf415da7z9x1my5hdyjdlklfiwll57jbqr23"))))
 
    ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to
    ;; find the TLS backend in glib-networking.
@@ -1152,7 +1154,9 @@ the boot loader configuration.")
        (string-append "--with-system-bubblewrap="
                       (assoc-ref %build-inputs "bubblewrap")
                       "/bin/bwrap")
-       "--with-system-dbus-proxy")
+       (string-append "--with-system-dbus-proxy="
+                      (assoc-ref %build-inputs "xdg-dbus-proxy")
+                      "/bin/xdg-dbus-proxy"))
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'fix-tests
@@ -1187,6 +1191,7 @@ cp -r /tmp/locale/*/en_US.*")))
       ("libcap" ,libcap)
       ("pkg-config" ,pkg-config)
       ("python" ,python)
+      ("python-pyparsing" ,python-pyparsing)
       ("socat" ,socat)
       ("which" ,which)))
    (propagated-inputs `(("glib-networking" ,glib-networking)
diff --git a/gnu/packages/pantheon.scm b/gnu/packages/pantheon.scm
index 72910e5470..aa7074827e 100644
--- a/gnu/packages/pantheon.scm
+++ b/gnu/packages/pantheon.scm
@@ -18,11 +18,15 @@
 
 (define-module (gnu packages pantheon)
   #:use-module (gnu packages cmake)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages)
   #:use-module (guix build-system meson)
   #:use-module (guix git-download)
@@ -37,7 +41,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/elementary/granite.git")
+                    (url "https://github.com/elementary/granite")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -75,7 +79,7 @@ in apps built for the Pantheon desktop.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/elementary/calculator.git")
+             (url "https://github.com/elementary/calculator")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -107,3 +111,64 @@ in apps built for the Pantheon desktop.")
 arithmetic.  It is the default calculator application in the Pantheon
 desktop.")
     (license license:gpl3)))
+
+(define-public sideload
+  (package
+    (name "sideload")
+    (version "1.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/elementary/sideload")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0mlc3nm2navzxm8k1rwpbw4w6mv30lmhqybm8jqxd4v8x7my73vq"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t
+       #:configure-flags (list (string-append "-Dflatpak="
+                                              (assoc-ref %build-inputs "flatpak")
+                                              "/include"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'set-environment-variables
+           (lambda _
+             ;; Disable compiling schemas and updating desktop databases
+             (setenv "DESTDIR" "/")
+             #t))
+         (add-after 'install 'install-symlinks
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin/io.elementary.sideload"))
+                    (link (string-append out "/bin/sideload")))
+               (symlink bin link)
+               #t))))))
+    (inputs
+     `(("flatpak" ,flatpak)
+       ("glib" ,glib)
+       ("granite" ,granite)
+       ("gtk" ,gtk+)
+       ("hicolor-icon-theme" ,hicolor-icon-theme)
+       ("libgee" ,libgee)
+       ("libostree" ,libostree)
+       ("libxml2" ,libxml2)))
+    (propagated-inputs
+     ;; Sideload needs these in the environment to fetch data securely from
+     ;; Flatpak remotes.
+     `(("gnupg" ,gnupg)
+       ("gpgme" ,gpgme)))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("pkg-config" ,pkg-config)
+       ("vala" ,vala)))
+    (home-page "https://github.com/elementary/sideload")
+    (synopsis "Graphical application to side-load Flatpaks")
+    (description "Sideload handles flatpakref files, like those you might find
+on Flathub or another third-party website providing a Flatpak app for
+download.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 30b3c1ddda..cad9383769 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -55,14 +55,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20200522")
+    (version "20200622")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32 "10is46v5dpccxibby0zikg1q68mdwpmgdpxk796zka93idd6id29"))))
+       (base32 "0gqxpk1hm323hwvw9isjxy2xv2wg8avav60bckjm0s57jbhsz3zz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 6bd1e94c91..ee4d088501 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -121,7 +121,7 @@ human.")
 (define-public keepassxc
   (package
     (name "keepassxc")
-    (version "2.5.4")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
@@ -129,11 +129,26 @@ human.")
                            "/releases/download/" version "/keepassxc-"
                            version "-src.tar.xz"))
        (sha256
-        (base32 "0jndssyvpl8bc5i2q3d6kq1ppynchxx9nvp1qhd2pc0qqc0hhpm5"))))
+        (base32 "0fpx6pq336g1xwjl5yzvsky6vqvaa38zb8pwkgswph9slybkvlnh"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags '("-DWITH_XC_ALL=YES"
-                           "-DWITH_XC_UPDATECHECK=NO")))
+                           "-DWITH_XC_UPDATECHECK=NO")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'wrap-bin
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-program (string-append out "/bin/keepassxc")
+                 `("QT_PLUGIN_PATH" ":" prefix
+                   ,(map (lambda (label)
+                           (string-append (assoc-ref inputs label)
+                                          "/lib/qt5/plugins"))
+                         '("qtbase" "qtsvg")))))
+             #t)))))
+    (native-inputs
+     `(("asciidoctor" ,ruby-asciidoctor)
+       ("qttools" ,qttools)))
     (inputs
      `(("argon2" ,argon2)
        ("libgcrypt" ,libgcrypt)
@@ -149,8 +164,6 @@ human.")
        ("readline" ,readline)
        ("yubikey-personalization" ,yubikey-personalization) ; XC_YUBIKEY
        ("zlib" ,zlib)))
-    (native-inputs
-     `(("qttools" ,qttools)))
     (home-page "https://www.keepassxc.org")
     (synopsis "Password manager")
     (description "KeePassXC is a password manager or safe which helps you to
@@ -202,7 +215,7 @@ algorithms AES or Twofish.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pwsafe/pwsafe.git")
+             (url "https://github.com/pwsafe/pwsafe")
              (commit version)))
        (sha256
         (base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh"))
@@ -586,7 +599,7 @@ key URIs using the standard otpauth:// scheme.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/IJHack/QtPass.git")
+             (url "https://github.com/IJHack/QtPass")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -710,7 +723,7 @@ using password-store through rofi interface:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/browserpass/browserpass-native.git")
+             (url "https://github.com/browserpass/browserpass-native")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1210,3 +1223,46 @@ desired length.  It can also generate their corresponding hashes for a given
 encryption algorithm if so desired.")
       (home-page "https://github.com/khorben/makepasswd")
       (license license:gpl3))))
+
+(define-public pass-tomb
+  (package
+    (name "pass-tomb")
+    (version "1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/roddhjav/pass-tomb")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1qj7vx7svk1ljwihj3kv310k17mafnf919n30n4qn1yxmmsvj924"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "PREFIX=" out)
+               (string-append "BASHCOMPDIR=" out "/etc/bash_completion.d")))
+       #:test-target "tests"
+       ;; tests are very dependent on system state (swap partition) and require
+       ;; access to /tmp/zsh which is not in the build container.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-tomb-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((tomb (assoc-ref inputs "tomb")))
+               (substitute* "tomb.bash"
+                 ((":-tomb")
+                  (string-append ":-" tomb "/bin/tomb"))))))
+         (delete 'configure))))
+    (inputs
+     `(("tomb" ,tomb)))
+    (home-page "https://github.com/roddhjav/pass-tomb")
+    (synopsis "Pass extension keeping the tree of passwords encrypted")
+    (description "Pass-tomb provides a convenient solution to put your
+password store in a Tomb and then keep your password tree encrypted when you
+are not using it.  It uses the same GPG key to encrypt passwords and tomb,
+therefore you don't need to manage more key or secret.  Moreover, you can ask
+pass-tomb to automatically close your store after a given time.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/ecl-16-format-directive-limit.patch b/gnu/packages/patches/ecl-16-format-directive-limit.patch
new file mode 100644
index 0000000000..237db92722
--- /dev/null
+++ b/gnu/packages/patches/ecl-16-format-directive-limit.patch
@@ -0,0 +1,83 @@
+Patch backported by Sage.
+
+Fix from upstream that happens to work around
+https://trac.sagemath.org/ticket/23011
+diff --git a/src/lsp/format.lsp b/src/lsp/format.lsp
+index 77ca799..53b887c 100644
+--- a/src/lsp/format.lsp
++++ b/src/lsp/format.lsp
+@@ -307,11 +307,13 @@
+                   :start (format-directive-start struct)
+                   :end (format-directive-end struct))))
+ 
++(defconstant +format-directive-limit+ (1+ (char-code #\~)))
++
+ #+formatter
+ (defparameter *format-directive-expanders*
+-  (make-array char-code-limit :initial-element nil))
++  (make-array +format-directive-limit+ :initial-element nil))
+ (defparameter *format-directive-interpreters*
+-  (make-array char-code-limit :initial-element nil))
++  (make-array +format-directive-limit+ :initial-element nil))
+ 
+ (defparameter *default-format-error-control-string* nil)
+ (defparameter *default-format-error-offset* nil)
+@@ -550,24 +552,24 @@
+            (write-string directive stream)
+            (interpret-directive-list stream (cdr directives) orig-args args))
+           (#-ecl format-directive #+ecl vector
++           (multiple-value-bind
++                 (new-directives new-args)
++               (let* ((code (char-code (format-directive-character directive)))
++                      (function
++                        (and (< code +format-directive-limit+)
++                             (svref *format-directive-interpreters* code)))
++                      (*default-format-error-offset*
++                        (1- (format-directive-end directive))))
++                 (unless function
++                   (error 'format-error
++                          :complaint "Unknown format directive."))
+                  (multiple-value-bind
+                        (new-directives new-args)
+-                     (let ((function
+-                            (svref *format-directive-interpreters*
+-                                   (char-code (format-directive-character
+-                                               directive))))
+-                           (*default-format-error-offset*
+-                            (1- (format-directive-end directive))))
+-                       (unless function
+-                         (error 'format-error
+-                                :complaint "Unknown format directive."))
+-                       (multiple-value-bind
+-                             (new-directives new-args)
+-                           (funcall function stream directive
+-                                    (cdr directives) orig-args args)
+-                         (values new-directives new-args)))
+-                   (interpret-directive-list stream new-directives
+-                                             orig-args new-args)))))
++                     (funcall function stream directive
++                              (cdr directives) orig-args args)
++                   (values new-directives new-args)))
++             (interpret-directive-list stream new-directives
++                                       orig-args new-args)))))
+       args))
+ 
+ 
+@@ -639,11 +641,12 @@
+        (values `(write-string ,directive stream)
+                more-directives))
+       (format-directive
+-       (let ((expander
+-              (aref *format-directive-expanders*
+-                    (char-code (format-directive-character directive))))
+-             (*default-format-error-offset*
+-              (1- (format-directive-end directive))))
++       (let* ((code (char-code (format-directive-character directive)))
++              (expander
++                (and (< code +format-directive-limit+)
++                     (svref *format-directive-expanders* code)))
++              (*default-format-error-offset*
++                (1- (format-directive-end directive))))
+          (if expander
+              (funcall expander directive more-directives)
+              (error 'format-error
diff --git a/gnu/packages/patches/ecl-16-ignore-stderr-write-error.patch b/gnu/packages/patches/ecl-16-ignore-stderr-write-error.patch
new file mode 100644
index 0000000000..42d213c0e9
--- /dev/null
+++ b/gnu/packages/patches/ecl-16-ignore-stderr-write-error.patch
@@ -0,0 +1,17 @@
+Patch adapted from Sage.
+diff -Naur ecl-16.1.2.orig/src/c/file.d ecl-16.1.2/src/c/file.d
+--- ecl-16.1.2.orig/src/c/file.d	2016-05-11 13:10:51.867673867 +1200
++++ ecl-16.1.2/src/c/file.d	2016-05-11 14:44:48.121907307 +1200
+@@ -3354,8 +3354,10 @@
+   ecl_disable_interrupts();
+   do {
+     out = fwrite(c, sizeof(char), n, IO_STREAM_FILE(strm));
+-  } while (out < n && restartable_io_error(strm, "fwrite"));
+-  ecl_enable_interrupts();
++  /* Ignore write errors to stderr to avoid an infinite loop */
++  } while (out < n && (IO_STREAM_FILE(strm) != stderr) && restartable_io_error(strm, "fwrite"));
++
++  ecl_enable_interrupts();
+   return out;
+ }
+ 
diff --git a/gnu/packages/patches/ecl-16-libffi.patch b/gnu/packages/patches/ecl-16-libffi.patch
new file mode 100644
index 0000000000..fc06a07606
--- /dev/null
+++ b/gnu/packages/patches/ecl-16-libffi.patch
@@ -0,0 +1,16 @@
+Patch adapted from Sage. Allows building ECL on libffi 3.3.
+diff --git a/src/c/ffi.d b/src/c/ffi.d
+index 8861303e..8a959c23 100644
+--- a/src/c/ffi.d
++++ b/src/c/ffi.d
+@@ -133,8 +133,8 @@ static struct {
+ #elif defined(X86_WIN64)
+   {@':win64', FFI_WIN64},
+ #elif defined(X86_ANY) || defined(X86) || defined(X86_64)
+-  {@':cdecl', FFI_SYSV},
+-  {@':sysv', FFI_SYSV},
++  {@':cdecl', FFI_UNIX64},
++  {@':sysv', FFI_UNIX64},
+   {@':unix64', FFI_UNIX64},
+ #endif
+ };
diff --git a/gnu/packages/patches/emacs-exwm-fix-fullscreen-states.patch b/gnu/packages/patches/emacs-exwm-fix-fullscreen-states.patch
new file mode 100644
index 0000000000..6d31021f67
--- /dev/null
+++ b/gnu/packages/patches/emacs-exwm-fix-fullscreen-states.patch
@@ -0,0 +1,39 @@
+From edb930005b0ba83051ca8a59b493e9a3c8ef580a Mon Sep 17 00:00:00 2001
+From: Chris Feng <chris.w.feng@gmail.com>
+Date: Sun, 14 Jun 2020 00:00:00 +0000
+Subject: [PATCH] Fix fullscreen states
+
+* exwm-layout.el (exwm-layout-set-fullscreen,
+exwm-layout-unset-fullscreen): Use `exwm--id' for interactive use.
+(exwm-layout-unset-fullscreen): Mandatorily clear fullscreen states.
+---
+ exwm-layout.el | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/exwm-layout.el b/exwm-layout.el
+index 170c2be..79d0c95 100644
+--- a/exwm-layout.el
++++ b/exwm-layout.el
+@@ -205,7 +205,7 @@
+                        :border-width 0
+                        :stack-mode xcb:StackMode:Above))
+     (cl-pushnew xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)
+-    (exwm-layout--set-ewmh-state id)
++    (exwm-layout--set-ewmh-state exwm--id)
+     (xcb:flush exwm--connection)
+     (set-window-dedicated-p (get-buffer-window) t)
+     (exwm-input--release-keyboard exwm--id)))
+@@ -233,7 +233,9 @@
+       (let ((window (get-buffer-window nil t)))
+         (when window
+           (exwm-layout--show exwm--id window))))
+-    (exwm-layout--set-ewmh-state id)
++    (setq exwm--ewmh-state
++          (delq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state))
++    (exwm-layout--set-ewmh-state exwm--id)
+     (xcb:flush exwm--connection)
+     (set-window-dedicated-p (get-buffer-window) nil)
+     (when (eq 'line-mode exwm--selected-input-mode)
+-- 
+2.26.2
+
diff --git a/gnu/packages/patches/emacs-telega-patch-server-functions.patch b/gnu/packages/patches/emacs-telega-patch-server-functions.patch
new file mode 100644
index 0000000000..e3d49278d0
--- /dev/null
+++ b/gnu/packages/patches/emacs-telega-patch-server-functions.patch
@@ -0,0 +1,31 @@
+Remove interactive build for telega-server, as it fails on Guix.
+Modify the `telega-server--find-bin' function to only use the version
+of telega-server installed by Guix.
+
+Created by Brett Gilio <brettg@gnu.org>
+
+--- a/telega-server.el
++++ b/telega-server.el
+@@ -113,7 +113,6 @@ If already deferring, then just executes the BODY."
+ If BUILD-FLAGS is specified, then rebuild server without any
+ queries using this flags for building, could be empty string.
+ Otherwise query user about building flags."
+-  (interactive)
+   (telega-test-env 'quiet)
+   (when (or build-flags
+             (y-or-n-p "Build `telega-server'? "))
+@@ -137,11 +136,8 @@ Otherwise query user about building flags."
+ (defun telega-server--find-bin ()
+   "Find telega-server executable.
+ Raise error if not found."
+-  (let ((exec-path (cons telega-directory exec-path)))
+-    (or (executable-find "telega-server")
+-        (progn (telega-server-build)
+-               (executable-find "telega-server"))
+-        (error "`telega-server' not found in exec-path"))))
++  (or (executable-find "telega-server")
++      (error "`telega-server' not found in exec-path")))
+ 
+ (defun telega-server-version ()
+   "Return telega-server version."
+
diff --git a/gnu/packages/patches/flint-ldconfig.patch b/gnu/packages/patches/flint-ldconfig.patch
deleted file mode 100644
index d7c66e17ab..0000000000
--- a/gnu/packages/patches/flint-ldconfig.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Patch by Andreas Enge <andreas@enge.fr>.
-Remedy the absence of ldconfig and explicitly create an additional symbolic
-link to the flint library, as discussed privately with upstream.
-
-diff -r -u flint-2.5.2.orig/configure flint-2.5.2/configure
---- flint-2.5.2.orig/configure	2015-08-13 18:16:22.000000000 +0200
-+++ flint-2.5.2/configure	2015-08-14 17:38:14.316284437 +0200
-@@ -714,6 +714,7 @@
- echo "FLINT_SHARED=$SHARED" >> Makefile
- echo "FLINT_LIB=$FLINT_LIB" >> Makefile
- echo "FLINT_LIBNAME=$FLINT_LIBNAME" >> Makefile
-+echo "FLINT_MAJOR=$FLINT_MAJOR" >> Makefile
- echo "FLINT_SOLIB=$FLINT_SOLIB" >> Makefile
- echo "EXEEXT=$EXEEXT" >> Makefile
- echo "PREFIX=$PREFIX" >> Makefile
-diff -r -u flint-2.5.2.orig/Makefile.in flint-2.5.2/Makefile.in
---- flint-2.5.2.orig/Makefile.in	2015-08-13 18:16:22.000000000 +0200
-+++ flint-2.5.2/Makefile.in	2015-08-14 17:38:50.584774817 +0200
-@@ -118,6 +118,7 @@
- 		$(LDCONFIG) -n "$(CURDIR)"; \
- 	fi
- 	ln -sf "$(FLINT_LIB)" "$(FLINT_LIBNAME)"; \
-+	ln -sf "$(FLINT_LIB)" "$(FLINT_LIBNAME).$(FLINT_MAJOR)"; \
- 
- libflint.a: $(OBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
- 	$(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(filter-out %templates, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h))), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) static || exit $$?;))
diff --git a/gnu/packages/patches/ganeti-deterministic-manual.patch b/gnu/packages/patches/ganeti-deterministic-manual.patch
new file mode 100644
index 0000000000..2d90aa740e
--- /dev/null
+++ b/gnu/packages/patches/ganeti-deterministic-manual.patch
@@ -0,0 +1,16 @@
+Sort the ecode list in the gnt-cluster manual for deterministic results.
+
+Submitted upstream: <https://github.com/ganeti/ganeti/pull/1504>.
+
+diff --git a/lib/build/sphinx_ext.py b/lib/build/sphinx_ext.py
+--- a/lib/build/sphinx_ext.py
++++ b/lib/build/sphinx_ext.py
+@@ -108,7 +108,7 @@ CV_ECODES_DOC = "ecodes"
+ # pylint: disable=W0621
+ CV_ECODES_DOC_LIST = [(name, doc) for (_, name, doc) in constants.CV_ALL_ECODES]
+ DOCUMENTED_CONSTANTS = {
+-  CV_ECODES_DOC: CV_ECODES_DOC_LIST,
++  CV_ECODES_DOC: sorted(CV_ECODES_DOC_LIST, key=lambda tup: tup[0]),
+   }
+ 
+ 
diff --git a/gnu/packages/patches/ganeti-disable-version-symlinks.patch b/gnu/packages/patches/ganeti-disable-version-symlinks.patch
new file mode 100644
index 0000000000..a5f347cfc6
--- /dev/null
+++ b/gnu/packages/patches/ganeti-disable-version-symlinks.patch
@@ -0,0 +1,136 @@
+This patch adds a new "--disable-version-links" configuration option
+that allows installing to the standard GNU installation directories
+instead of having to add symlinks in /etc/ganeti/{lib,share} that
+points to the right $ganeti/{lib,share}/$version.  Mainly to reduce
+service complexity, and because Guix users can install as many versions
+of Ganeti they can muster without resorting to such hacks.
+
+diff --git a/Makefile.am b/Makefile.am
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -66,11 +66,16 @@ SHELL_ENV_INIT = autotools/shell-env-init
+ # so, if some currently architecture-independent executable is replaced by an
+ # architecture-dependent one (and hence has to go under $(versiondir)), add a link
+ # under $(versionedsharedir) but do not change the external links.
++#
++# As of Ganeti 3.0, it is possible to disable this behavior by passing
++# --disable-version-links, in which case the standard GNU installation
++# directories are used.
+ if USE_VERSION_FULL
+ DIRVERSION=$(VERSION_FULL)
+ else
+ DIRVERSION=$(VERSION_MAJOR).$(VERSION_MINOR)
+ endif
++if USE_VERSION_LINKS
+ versiondir = $(libdir)/ganeti/$(DIRVERSION)
+ defaultversiondir = $(libdir)/ganeti/default
+ versionedsharedir = $(prefix)/share/ganeti/$(DIRVERSION)
+@@ -90,6 +95,18 @@ gntpythondir = $(versionedsharedir)
+ pkgpython_bindir = $(versionedsharedir)
+ gnt_python_sbindir = $(versionedsharedir)
+ tools_pythondir = $(versionedsharedir)
++else
++myexeclibdir = $(pkglibdir)
++pkgpython_rpc_stubdir = $(pkgpythondir)/rpc/stub
++gntpythondir = $(sbindir)
++pkgpython_bindir = $(pkglibdir)
++gnt_python_sbindir = $(sbindir)
++tools_pythondir = $(pkglibdir)
++versionedsharedir = $(pkglibdir)
++# This is a hack but works because the only user does $(versiondir)$(datadir).
++versiondir =
++endif !USE_VERSION_LINKS
++
+ 
+ clientdir = $(pkgpythondir)/client
+ cmdlibdir = $(pkgpythondir)/cmdlib
+@@ -2356,6 +2373,7 @@ src/AutoConf.hs: Makefile src/AutoConf.hs.in $(PRINT_PY_CONSTANTS) \
+ 	    -DVERSION_SUFFIX="$(VERSION_SUFFIX)" \
+ 	    -DVERSION_FULL="$(VERSION_FULL)" \
+ 	    -DDIRVERSION="$(DIRVERSION)" \
++	    -DUSE_VERSION_LINKS="$(USE_VERSION_LINKS)" \
+ 	    -DLOCALSTATEDIR="$(localstatedir)" \
+ 	    -DSYSCONFDIR="$(sysconfdir)" \
+ 	    -DSSH_CONFIG_DIR="$(SSH_CONFIG_DIR)" \
+@@ -2857,6 +2875,7 @@ install-exec-local:
+ 	@mkdir_p@ "$(DESTDIR)${localstatedir}/lib/ganeti" \
+ 	  "$(DESTDIR)${localstatedir}/log/ganeti" \
+ 	  "$(DESTDIR)${localstatedir}/run/ganeti"
++if USE_VERSION_LINKS
+ 	for dir in $(SYMLINK_TARGET_DIRS); do \
+ 	  @mkdir_p@  $(DESTDIR)$$dir; \
+ 	done
+@@ -2892,7 +2911,8 @@ install-exec-local:
+ if INSTALL_SYMLINKS
+ 	$(LN_S) -f $(versionedsharedir) $(DESTDIR)$(sysconfdir)/ganeti/share
+ 	$(LN_S) -f $(versiondir) $(DESTDIR)$(sysconfdir)/ganeti/lib
+-endif
++endif INSTALL_SYMLINKS
++endif USE_VERSION_LINKS
+ 
+ .PHONY: apidoc
+ if WANT_HSAPIDOC
+diff --git a/configure.ac b/configure.ac
+--- a/configure.ac
++++ b/configure.ac
+@@ -29,6 +29,23 @@ AC_SUBST([BINDIR], $bindir)
+ AC_SUBST([SBINDIR], $sbindir)
+ AC_SUBST([MANDIR], $mandir)
+ 
++# --enable-version-links
++AC_ARG_ENABLE([version-links],
++  [AS_HELP_STRING([--enable-version-links],
++                  m4_normalize([install ganeti to version-specific
++                  subdirectories to allow installing multiple versions
++                  in parallel (default: enabled)]))],
++  [[if test "$enableval" != no; then
++      USE_VERSION_LINKS=True
++    else
++      USE_VERSION_LINKS=False
++    fi
++  ]],
++  [USE_VERSION_LINKS=True
++  ])
++AC_SUBST(USE_VERSION_LINKS, $USE_VERSION_LINKS)
++AM_CONDITIONAL([USE_VERSION_LINKS], [test "$USE_VERSION_LINKS" = True])
++
+ # --enable-versionfull
+ AC_ARG_ENABLE([versionfull],
+   [AS_HELP_STRING([--enable-versionfull],
+diff --git a/lib/bootstrap.py b/lib/bootstrap.py
+--- a/lib/bootstrap.py
++++ b/lib/bootstrap.py
+@@ -944,7 +944,7 @@ def SetupNodeDaemon(opts, cluster_name, node, ssh_port):
+                          debug=opts.debug, verbose=opts.verbose,
+                          use_cluster_key=True, ask_key=opts.ssh_key_check,
+                          strict_host_check=opts.ssh_key_check,
+-                         ensure_version=True)
++                         ensure_version=constants.USE_VERSION_LINKS)
+ 
+   _WaitForSshDaemon(node, ssh_port)
+   _WaitForNodeDaemon(node)
+diff --git a/src/AutoConf.hs.in b/src/AutoConf.hs.in
+--- a/src/AutoConf.hs.in
++++ b/src/AutoConf.hs.in
+@@ -64,6 +64,9 @@ versionFull = "VERSION_FULL"
+ dirVersion :: String
+ dirVersion = "DIRVERSION"
+ 
++useVersionLinks :: Bool
++useVersionLinks = USE_VERSION_LINKS
++
+ localstatedir :: String
+ localstatedir = "LOCALSTATEDIR"
+ 
+diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
+--- a/src/Ganeti/Constants.hs
++++ b/src/Ganeti/Constants.hs
+@@ -164,5 +164,8 @@ versionRevision = AutoConf.versionRevision
+ dirVersion :: String
+ dirVersion = AutoConf.dirVersion
+ 
++useVersionLinks :: Bool
++useVersionLinks = AutoConf.useVersionLinks
++
+ osApiV10 :: Int
+ osApiV10 = 10
diff --git a/gnu/packages/patches/ganeti-drbd-compat.patch b/gnu/packages/patches/ganeti-drbd-compat.patch
new file mode 100644
index 0000000000..32f46bc7ed
--- /dev/null
+++ b/gnu/packages/patches/ganeti-drbd-compat.patch
@@ -0,0 +1,166 @@
+This patch adds support for newer versions of DRBD.
+
+Submitted upstream: <https://github.com/ganeti/ganeti/pull/1496>.
+
+diff --git a/lib/storage/drbd.py b/lib/storage/drbd.py
+--- a/lib/storage/drbd.py
++++ b/lib/storage/drbd.py
+@@ -315,6 +315,13 @@ class DRBD8Dev(base.BlockDev):
+     """
+     return self._show_info_cls.GetDevInfo(self._GetShowData(minor))
+ 
++  @staticmethod
++  def _NeedsLocalSyncerParams():
++    # For DRBD >= 8.4, syncer init must be done after local, not in net.
++    info = DRBD8.GetProcInfo()
++    version = info.GetVersion()
++    return version["k_minor"] >= 4
++
+   def _MatchesLocal(self, info):
+     """Test if our local config matches with an existing device.
+ 
+@@ -397,6 +404,20 @@ class DRBD8Dev(base.BlockDev):
+         base.ThrowError("drbd%d: can't attach local disk: %s",
+                         minor, result.output)
+ 
++    def _WaitForMinorSyncParams():
++      """Call _SetMinorSyncParams and raise RetryAgain on errors.
++      """
++      if self._SetMinorSyncParams(minor, self.params):
++        raise utils.RetryAgain()
++
++    if self._NeedsLocalSyncerParams():
++      # Retry because disk config for DRBD resource may be still uninitialized.
++      try:
++        utils.Retry(_WaitForMinorSyncParams, 1.0, 5.0)
++      except utils.RetryTimeout as e:
++        base.ThrowError("drbd%d: can't set the synchronization parameters: %s" %
++                        (minor, utils.CommaJoin(e.args[0])))
++
+   def _AssembleNet(self, minor, net_info, dual_pri=False, hmac=None,
+                    secret=None):
+     """Configure the network part of the device.
+@@ -432,21 +453,24 @@ class DRBD8Dev(base.BlockDev):
+     # sync speed only after setting up both sides can race with DRBD
+     # connecting, hence we set it here before telling DRBD anything
+     # about its peer.
+-    sync_errors = self._SetMinorSyncParams(minor, self.params)
+-    if sync_errors:
+-      base.ThrowError("drbd%d: can't set the synchronization parameters: %s" %
+-                      (minor, utils.CommaJoin(sync_errors)))
++
++    if not self._NeedsLocalSyncerParams():
++      sync_errors = self._SetMinorSyncParams(minor, self.params)
++      if sync_errors:
++        base.ThrowError("drbd%d: can't set the synchronization parameters: %s" %
++                        (minor, utils.CommaJoin(sync_errors)))
+ 
+     family = self._GetNetFamily(minor, lhost, rhost)
+ 
+-    cmd = self._cmd_gen.GenNetInitCmd(minor, family, lhost, lport,
++    cmds = self._cmd_gen.GenNetInitCmds(minor, family, lhost, lport,
+                                       rhost, rport, protocol,
+                                       dual_pri, hmac, secret, self.params)
+ 
+-    result = utils.RunCmd(cmd)
+-    if result.failed:
+-      base.ThrowError("drbd%d: can't setup network: %s - %s",
+-                      minor, result.fail_reason, result.output)
++    for cmd in cmds:
++      result = utils.RunCmd(cmd)
++      if result.failed:
++        base.ThrowError("drbd%d: can't setup network: %s - %s",
++                         minor, result.fail_reason, result.output)
+ 
+     def _CheckNetworkConfig():
+       info = self._GetShowInfo(minor)
+@@ -463,19 +487,20 @@ class DRBD8Dev(base.BlockDev):
+       base.ThrowError("drbd%d: timeout while configuring network", minor)
+ 
+     # Once the assembly is over, try to set the synchronization parameters
+-    try:
+-      # The minor may not have been set yet, requiring us to set it at least
+-      # temporarily
+-      old_minor = self.minor
+-      self._SetFromMinor(minor)
+-      sync_errors = self.SetSyncParams(self.params)
+-      if sync_errors:
+-        base.ThrowError("drbd%d: can't set the synchronization parameters: %s" %
+-                        (self.minor, utils.CommaJoin(sync_errors)))
+-    finally:
+-      # Undo the change, regardless of whether it will have to be done again
+-      # soon
+-      self._SetFromMinor(old_minor)
++    if not self._NeedsLocalSyncerParams():
++      try:
++        # The minor may not have been set yet, requiring us to set it at least
++        # temporarily
++        old_minor = self.minor
++        self._SetFromMinor(minor)
++        sync_errors = self.SetSyncParams(self.params)
++        if sync_errors:
++          base.ThrowError("drbd%d: can't set the synchronization parameters: %s" %
++                          (self.minor, utils.CommaJoin(sync_errors)))
++      finally:
++        # Undo the change, regardless of whether it will have to be done again
++        # soon
++        self._SetFromMinor(old_minor)
+ 
+   @staticmethod
+   def _GetNetFamily(minor, lhost, rhost):
+diff --git a/lib/storage/drbd_cmdgen.py b/lib/storage/drbd_cmdgen.py
+--- a/lib/storage/drbd_cmdgen.py
++++ b/lib/storage/drbd_cmdgen.py
+@@ -56,7 +56,7 @@ class BaseDRBDCmdGenerator(object):
+   def GenLocalInitCmds(self, minor, data_dev, meta_dev, size_mb, params):
+     raise NotImplementedError
+ 
+-  def GenNetInitCmd(self, minor, family, lhost, lport, rhost, rport, protocol,
++  def GenNetInitCmds(self, minor, family, lhost, lport, rhost, rport, protocol,
+                     dual_pri, hmac, secret, params):
+     raise NotImplementedError
+ 
+@@ -138,7 +138,7 @@ class DRBD83CmdGenerator(BaseDRBDCmdGenerator):
+ 
+     return [args]
+ 
+-  def GenNetInitCmd(self, minor, family, lhost, lport, rhost, rport, protocol,
++  def GenNetInitCmds(self, minor, family, lhost, lport, rhost, rport, protocol,
+                     dual_pri, hmac, secret, params):
+     args = ["drbdsetup", self._DevPath(minor), "net",
+             "%s:%s:%s" % (family, lhost, lport),
+@@ -155,7 +155,7 @@ class DRBD83CmdGenerator(BaseDRBDCmdGenerator):
+     if params[constants.LDP_NET_CUSTOM]:
+       args.extend(shlex.split(params[constants.LDP_NET_CUSTOM]))
+ 
+-    return args
++    return [args]
+ 
+   def GenSyncParamsCmd(self, minor, params):
+     args = ["drbdsetup", self._DevPath(minor), "syncer"]
+@@ -345,8 +345,14 @@ class DRBD84CmdGenerator(BaseDRBDCmdGenerator):
+ 
+     return cmds
+ 
+-  def GenNetInitCmd(self, minor, family, lhost, lport, rhost, rport, protocol,
++  def GenNetInitCmds(self, minor, family, lhost, lport, rhost, rport, protocol,
+                     dual_pri, hmac, secret, params):
++    cmds = []
++
++    cmds.append(["drbdsetup", "new-resource", self._GetResource(minor)])
++    cmds.append(["drbdsetup", "new-minor", self._GetResource(minor),
++                 str(minor), "0"])
++
+     args = ["drbdsetup", "connect", self._GetResource(minor),
+             "%s:%s:%s" % (family, lhost, lport),
+             "%s:%s:%s" % (family, rhost, rport),
+@@ -362,7 +368,8 @@ class DRBD84CmdGenerator(BaseDRBDCmdGenerator):
+     if params[constants.LDP_NET_CUSTOM]:
+       args.extend(shlex.split(params[constants.LDP_NET_CUSTOM]))
+ 
+-    return args
++    cmds.append(args)
++    return cmds
+ 
+   def GenSyncParamsCmd(self, minor, params):
+     args = ["drbdsetup", "disk-options", minor]
diff --git a/gnu/packages/patches/ganeti-haskell-pythondir.patch b/gnu/packages/patches/ganeti-haskell-pythondir.patch
new file mode 100644
index 0000000000..fa77771839
--- /dev/null
+++ b/gnu/packages/patches/ganeti-haskell-pythondir.patch
@@ -0,0 +1,66 @@
+This patch allows the Haskell daemons to locate Python libraries
+installed to a non-standard pythondir.  It is necessary because Guix
+does not use versionedsharedir (see related patch that disables it).
+
+diff --git a/Makefile.am b/Makefile.am
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -83,6 +83,7 @@ myexeclibdir = $(pkglibdir)
+ bindir = $(versiondir)/$(BINDIR)
+ sbindir = $(versiondir)$(SBINDIR)
+ mandir = $(versionedsharedir)/root$(MANDIR)
++pythondir = $(versionedsharedir)
+ pkgpythondir = $(versionedsharedir)/ganeti
+ pkgpython_rpc_stubdir = $(versionedsharedir)/ganeti/rpc/stub
+ gntpythondir = $(versionedsharedir)
+@@ -2386,6 +2387,7 @@ src/AutoConf.hs: Makefile src/AutoConf.hs.in $(PRINT_PY_CONSTANTS) \
+ 	    -DPKGLIBDIR="$(libdir)/ganeti" \
+ 	    -DSHAREDIR="$(prefix)/share/ganeti" \
+ 	    -DVERSIONEDSHAREDIR="$(versionedsharedir)" \
++	    -DPYTHONDIR="$(pythondir)" \
+ 	    -DDRBD_BARRIERS="$(DRBD_BARRIERS)" \
+ 	    -DDRBD_NO_META_FLUSH="$(DRBD_NO_META_FLUSH)" \
+ 	    -DSYSLOG_USAGE="$(SYSLOG_USAGE)" \
+diff --git a/src/AutoConf.hs.in b/src/AutoConf.hs.in
+--- a/src/AutoConf.hs.in
++++ b/src/AutoConf.hs.in
+@@ -157,6 +157,9 @@ sharedir = "SHAREDIR"
+ versionedsharedir :: String
+ versionedsharedir = "VERSIONEDSHAREDIR"
+ 
++pythondir :: String
++pythondir = "PYTHONDIR"
++
+ drbdBarriers :: String
+ drbdBarriers = "DRBD_BARRIERS"
+ 
+diff --git a/src/Ganeti/Path.hs b/src/Ganeti/Path.hs
+--- a/src/Ganeti/Path.hs
++++ b/src/Ganeti/Path.hs
+@@ -188,5 +188,5 @@ getInstReasonFilename instName = instanceReasonDir `pjoin` instName
+ 
+ -- | The path to the Python executable for starting jobs.
+ jqueueExecutorPy :: IO FilePath
+-jqueueExecutorPy = return $ versionedsharedir
+-                            </> "ganeti" </> "jqueue" </> "exec.py"
++jqueueExecutorPy = return $ pythondir
++                           </> "ganeti" </> "jqueue" </> "exec.py"
+diff --git a/src/Ganeti/Query/Exec.hs b/src/Ganeti/Query/Exec.hs
+--- a/src/Ganeti/Query/Exec.hs
++++ b/src/Ganeti/Query/Exec.hs
+@@ -99,12 +99,12 @@ spawnJobProcess jid = withErrorLogAt CRITICAL (show jid) $
+   do
+     use_debug <- isDebugMode
+     env_ <- (M.toList . M.insert "GNT_DEBUG" (if use_debug then "1" else "0")
+-            . M.insert "PYTHONPATH" AC.versionedsharedir
++            . M.insert "PYTHONPATH" AC.pythondir
+             . M.fromList)
+            `liftM` getEnvironment
+     execPy <- P.jqueueExecutorPy
+     logDebug $ "Executing " ++ AC.pythonPath ++ " " ++ execPy
+-               ++ " with PYTHONPATH=" ++ AC.versionedsharedir
++               ++ " with PYTHONPATH=" ++ AC.pythondir
+ 
+     (master, child) <- pipeClient connectConfig
+     let (rh, wh) = clientToHandle child
+
diff --git a/gnu/packages/patches/ganeti-os-disk-size.patch b/gnu/packages/patches/ganeti-os-disk-size.patch
new file mode 100644
index 0000000000..16b1d7615c
--- /dev/null
+++ b/gnu/packages/patches/ganeti-os-disk-size.patch
@@ -0,0 +1,17 @@
+This exposes information about disk sizes to OS install scripts.  instance-guix
+uses this if available to determine the size of the VM image.
+
+Submitted upstream:
+https://github.com/ganeti/ganeti/pull/1503
+
+diff --git a/lib/backend.py b/lib/backend.py
+--- a/lib/backend.py
++++ b/lib/backend.py
+@@ -4305,6 +4305,7 @@ def OSEnvironment(instance, inst_os, debug=0):
+     uri = _CalculateDeviceURI(instance, disk, real_disk)
+     result["DISK_%d_ACCESS" % idx] = disk.mode
+     result["DISK_%d_UUID" % idx] = disk.uuid
++    result["DISK_%d_SIZE" % idx] = str(disk.size)
+     if real_disk.dev_path:
+       result["DISK_%d_PATH" % idx] = real_disk.dev_path
+     if uri:
diff --git a/gnu/packages/patches/ganeti-preserve-PYTHONPATH.patch b/gnu/packages/patches/ganeti-preserve-PYTHONPATH.patch
new file mode 100644
index 0000000000..1358e30633
--- /dev/null
+++ b/gnu/packages/patches/ganeti-preserve-PYTHONPATH.patch
@@ -0,0 +1,21 @@
+Do not override PYTHONPATH when calling Python code from the Haskell
+daemons.  This is necessary because the Python library dependencies are
+only available through PYTHONPATH.
+
+diff --git a/src/Ganeti/Query/Exec.hs b/src/Ganeti/Query/Exec.hs
+--- a/src/Ganeti/Query/Exec.hs
++++ b/src/Ganeti/Query/Exec.hs
+@@ -99,12 +99,10 @@ spawnJobProcess jid = withErrorLogAt CRITICAL (show jid) $
+   do
+     use_debug <- isDebugMode
+     env_ <- (M.toList . M.insert "GNT_DEBUG" (if use_debug then "1" else "0")
+-            . M.insert "PYTHONPATH" AC.pythondir
+             . M.fromList)
+            `liftM` getEnvironment
+     execPy <- P.jqueueExecutorPy
+     logDebug $ "Executing " ++ AC.pythonPath ++ " " ++ execPy
+-               ++ " with PYTHONPATH=" ++ AC.pythondir
+ 
+     (master, child) <- pipeClient connectConfig
+     let (rh, wh) = clientToHandle child
+
diff --git a/gnu/packages/patches/ganeti-shepherd-master-failover.patch b/gnu/packages/patches/ganeti-shepherd-master-failover.patch
new file mode 100644
index 0000000000..36a7918998
--- /dev/null
+++ b/gnu/packages/patches/ganeti-shepherd-master-failover.patch
@@ -0,0 +1,18 @@
+By default, master-failover will call "herd start ganeti-wconfd" with
+extra arguments such as --force-node.  That does not work with the
+Shepherd, so the Guix service has a "force-start" action for this purpose.
+
+diff --git a/lib/bootstrap.py b/lib/bootstrap.py
+--- a/lib/bootstrap.py
++++ b/lib/bootstrap.py
+@@ -1011,9 +1011,7 @@ def MasterFailover(no_voting=False):
+ 
+   try:
+     # Forcefully start WConfd so that we can access the configuration
+-    result = utils.RunCmd([pathutils.DAEMON_UTIL,
+-                           "start", constants.WCONFD, "--force-node",
+-                           "--no-voting", "--yes-do-it"])
++    result = utils.RunCmd(["herd", "force-start", constants.WCONFD])
+     if result.failed:
+       raise errors.OpPrereqError("Could not start the configuration daemon,"
+                                  " command %s had exitcode %s and error %s" %
diff --git a/gnu/packages/patches/ganeti-shepherd-support.patch b/gnu/packages/patches/ganeti-shepherd-support.patch
new file mode 100644
index 0000000000..f750604344
--- /dev/null
+++ b/gnu/packages/patches/ganeti-shepherd-support.patch
@@ -0,0 +1,87 @@
+Ganeti uses an internal tool to start/stop daemons during init and
+upgrade.  This patch makes the tool use native Shepherd facilities.
+
+diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in
+--- a/daemons/daemon-util.in
++++ b/daemons/daemon-util.in
+@@ -184,6 +184,21 @@ use_systemctl() {
+   return 1
+ }
+ 
++# Checks if we should use the Shepherd to start/stop daemons
++use_shepherd() {
++  # Is Shepherd running as PID 1?
++  ps --no-headers -p 1 -o cmd | grep -q shepherd || return 1
++
++  type -p herd >/dev/null || return 1
++
++  # Does Shepherd know about Ganeti at all?
++  if herd status | grep -q ganeti; then
++    return 0
++  fi
++
++  return 1
++}
++
+ # Prints path to PID file for a daemon.
+ daemon_pidfile() {
+   if [[ "$#" -lt 1 ]]; then
+@@ -261,6 +276,13 @@ check() {
+     else
+       return 1
+     fi
++  elif use_shepherd; then
++    activestate="$(herd status ${name})"
++    if echo $activestate | grep -q Running ; then
++      return 0
++    else
++      return 1
++    fi
+   elif type -p start-stop-daemon >/dev/null; then
+     start-stop-daemon --stop --signal 0 --quiet \
+       --pidfile $pidfile --name "$name"
+@@ -291,6 +313,20 @@ start() {
+     return $?
+   fi
+ 
++  if use_shepherd; then
++    if herd status "$name" | grep -q "disabled"; then
++      # The Shepherd will disable a service that has stopped, even if it exits
++      # gracefully.  Thus, we must re-enable it in case of a master failover.
++      herd enable "${name}"
++    fi
++    # Note: unlike systemd, which happily starts a service and returns success
++    # even if the daemon immediately exits, the Shepherd actually waits for it
++    # to come up.  Thus, ignore the exit status from 'herd start' in case of
++    # master daemons running on the wrong node, or ganeti-kvmd disabled, etc.
++    herd start "${name}"
++    return 0
++  fi
++
+   # Read $<daemon>_ARGS and $EXTRA_<daemon>_ARGS
+   eval local args="\"\$${ucname}_ARGS \$EXTRA_${ucname}_ARGS\""
+ 
+@@ -336,6 +372,13 @@ stop() {
+ 
+   if use_systemctl; then
+     systemctl stop "${name}.service"
++  elif use_shepherd; then
++    if herd status | grep -q "$name"; then
++      herd stop "$name"
++    else
++      # Do not raise an error if the service has not been enabled.
++      return 0
++    fi
+   elif type -p start-stop-daemon >/dev/null; then
+     start-stop-daemon --stop --quiet --oknodo --retry 30 \
+       --pidfile $pidfile --name "$name"
+@@ -352,6 +395,9 @@ check_and_start() {
+     if use_systemctl; then
+       echo "${name} supervised by systemd but not running, will not restart."
+       return 1
++    elif use_shepherd; then
++      echo "${name} supervised by shepherd but not running, will not restart."
++      return 1
+     fi
+ 
+     start $name
diff --git a/gnu/packages/patches/gash-utils-ls-test.patch b/gnu/packages/patches/gash-utils-ls-test.patch
new file mode 100644
index 0000000000..e1dfb9c23b
--- /dev/null
+++ b/gnu/packages/patches/gash-utils-ls-test.patch
@@ -0,0 +1,25 @@
+'ls.scm' monkey-patches (ice-9 getopt-long) to allow it to recognize '-1'
+as a valid option.  Unfortunately, monkey patching no longer works with
+Guile 3.0 due to inlining, so change the test to make do without '-1'.
+
+diff --git a/tests/core-utils.org b/tests/core-utils.org
+index d35ede8..22718e3 100644
+--- a/tests/core-utils.org
++++ b/tests/core-utils.org
+@@ -93,14 +93,11 @@
+ * ls
+ :script:
+ #+begin_src sh
+-  ls -1 tests/data/star
++  ls tests/data/star
+ #+end_src
+ :stdout:
+ #+begin_example
+-  0
+-  1
+-  2
+-  3
++  0  1  2  3                                                                    
+ #+end_example
+ 
+ * test-file
diff --git a/gnu/packages/patches/gdb-hurd.patch b/gnu/packages/patches/gdb-hurd.patch
new file mode 100644
index 0000000000..0af8d4dc28
--- /dev/null
+++ b/gnu/packages/patches/gdb-hurd.patch
@@ -0,0 +1,69 @@
+Taken from upstream, removed ChangeLog.
+
+From 6930bffe3373690b3431d6291f9f7c116d6a1ec4 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sat, 30 May 2020 18:35:59 +0000
+Subject: [PATCH] hurd: fix gnu_debug_flag type
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes
+
+../../gdb/gnu-nat.c:96:6: error: conflicting declaration ‘bool gnu_debug_flag’
+   96 | bool gnu_debug_flag = false;
+../../gdb/gnu-nat.c: In function ‘void _initialize_gnu_nat()’:
+../../gdb/gnu-nat.c:3511:7: error: cannot
+
+gdb/ChangeLog:
+
+	* gnu-nat.h (gnu_debug_flag): Set type to bool.
+---
+ gdb/ChangeLog | 4 ++++
+ gdb/gnu-nat.h | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/gdb/gnu-nat.h b/gdb/gnu-nat.h
+index 77c57817b2..766f716587 100644
+--- a/gdb/gnu-nat.h
++++ b/gdb/gnu-nat.h
+@@ -111,7 +111,7 @@ extern char *proc_string (struct proc *proc);
+ 	      __proc_pid (__proc), __proc->tid, \
+ 	      host_address_to_string (__proc) , ##args); } while (0)
+ 
+-extern int gnu_debug_flag;
++extern bool gnu_debug_flag;
+ 
+ #define debug(msg, args...) \
+  do { if (gnu_debug_flag) \
+-- 
+Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
+Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
+
+commit 366f550a593c7e6bae3699a4b6d65fe937af5603
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date:   Sat May 30 18:41:30 2020 +0000
+
+    hurd: add missing include
+    
+    Fixes
+    
+    ../../gdb/gnu-nat.c:2522:14: error: ‘target_gdbarch’ was not declared in this scope; did you mean ‘target_detach’?
+     2522 |    paddress (target_gdbarch (), memaddr), pulongest (len),
+    
+    gdb/Changelog:
+    
+            * gnu-nat.c: Include "gdbarch.h".
+
+diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
+index 3b438a9a43..9b93488b41 100644
+--- a/gdb/gnu-nat.c
++++ b/gdb/gnu-nat.c
+@@ -64,6 +64,7 @@ extern "C"
+ #include "language.h"
+ #include "target.h"
+ #include "gdbsupport/gdb_wait.h"
++#include "gdbarch.h"
+ #include "gdbcmd.h"
+ #include "gdbcore.h"
+ #include "gdbthread.h"
diff --git a/gnu/packages/patches/grub-cross-system-i686.patch b/gnu/packages/patches/grub-cross-system-i686.patch
new file mode 100644
index 0000000000..2715345d63
--- /dev/null
+++ b/gnu/packages/patches/grub-cross-system-i686.patch
@@ -0,0 +1,96 @@
+Not upstreamed.
+Fixes cross-build for the Hurd, from i686-linux,
+see <https://bugs.gnu.org/41982>.
+
+From 17b242e7b80108f1467037e15b605595e4823b2e Mon Sep 17 00:00:00 2001
+From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
+Date: Sun, 21 Jun 2020 15:10:40 +0200
+Subject: [PATCH v2] grub-core: Build fixes for i386
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+* grub-core/lib/i386/relocator64.S: Avoid x86_64 instructions on i386.
+---
+ grub-core/lib/i386/relocator64.S | 33 +++++++++++++++++++++++++++++++-
+ 1 file changed, 32 insertions(+), 1 deletion(-)
+
+diff --git a/grub-core/lib/i386/relocator64.S b/grub-core/lib/i386/relocator64.S
+index 148f38adb..ea39908c1 100644
+--- a/grub-core/lib/i386/relocator64.S
++++ b/grub-core/lib/i386/relocator64.S
+@@ -63,7 +63,9 @@ VARIABLE(grub_relocator64_cr3)
+ 	movq	%rax, %cr3
+ #endif
+ 
++#ifdef __x86_64__
+ 	.code64
++#endif
+ 
+ 	/* mov imm64, %rax */
+ 	.byte 	0x48
+@@ -71,7 +73,14 @@ VARIABLE(grub_relocator64_cr3)
+ VARIABLE(grub_relocator64_rsp)
+ 	.quad	0
+ 
++#ifndef __x86_64__
++	/* movq	%rax, %rsp */
++	.byte 	0x48
++	.byte	0x89
++	.byte	0xc4
++#else
+ 	movq	%rax, %rsp
++#endif
+ 
+ #ifdef GRUB_MACHINE_EFI
+ 	jmp	LOCAL(skip_efi_stack_align)
+@@ -85,7 +94,14 @@ VARIABLE(grub_relocator64_rsp)
+ 	 */
+ VARIABLE(grub_relocator64_efi_start)
+ 	/* Align the stack as UEFI spec requires. */
++#ifndef __x86_64__
++	.byte 0x48
++        .byte 0x83
++        .byte 0xe4
++        .byte 0xf0
++#else
+ 	andq	$~15, %rsp
++#endif
+ 
+ LOCAL(skip_efi_stack_align):
+ #endif
+@@ -95,8 +111,15 @@ LOCAL(skip_efi_stack_align):
+ VARIABLE(grub_relocator64_rsi)
+ 	.quad	0
+ 
++#ifndef	__x86_64__
++	/* movq	%rax, %rsi */
++	.byte 	0x48
++	.byte	0x89
++	.byte 	0xc6
++#else
+ 	movq	%rax, %rsi
+-	
++#endif
++
+ 	/* mov imm64, %rax */
+ 	.byte 	0x48
+ 	.byte	0xb8
+@@ -128,6 +151,14 @@ VARIABLE(grub_relocator64_rdx)
+ #ifdef __APPLE__
+ 	.byte 0xff, 0x25
+ 	.quad 0
++#elif !defined (__x86_64__)
++	/* jmp *LOCAL(jump_addr) (%rip) */
++	.byte 0xff
++        .byte 0x25
++	.byte 0
++	.byte 0
++	.byte 0
++	.byte 0
+ #else
+ 	jmp *LOCAL(jump_addr) (%rip)
+ #endif
+-- 
+Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
+Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
+
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index d3d95cbf28..cff0b7ad45 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -25,7 +25,7 @@ index 8be2362..48716f2 100755
 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n 935105e1a8a97d64daffb372690e2b566b5f07641f01470929dbbc82d20d4407 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 2ec8c2627e46e80fc208584966a2ded7a0a9ff76b55ffccec0623b89b98ded2b firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 -
 -echo Extracting Firefox tarball
 -tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -37,7 +37,7 @@ index 8be2362..48716f2 100755
 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
 +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n 935105e1a8a97d64daffb372690e2b566b5f07641f01470929dbbc82d20d4407 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 2ec8c2627e46e80fc208584966a2ded7a0a9ff76b55ffccec0623b89b98ded2b firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 +# 
 +# echo Extracting Firefox tarball
 +# tar -xf firefox-${FFVERSION}esr.source.tar.xz
diff --git a/gnu/packages/patches/ilmbase-fix-test-arm.patch b/gnu/packages/patches/ilmbase-fix-test-arm.patch
deleted file mode 100644
index 2dbc55e8c4..0000000000
--- a/gnu/packages/patches/ilmbase-fix-test-arm.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Fix a test failure on ARM platforms:
-
-https://github.com/AcademySoftwareFoundation/openexr/issues/713
-
-Taken from upstream:
-
-https://github.com/AcademySoftwareFoundation/openexr/commit/76d9839cd1b300398f8b801dfcb4bcf2f8c0096f
-
-diff --git a/OpenEXR/IlmImfTest/testHuf.cpp b/OpenEXR/IlmImfTest/testHuf.cpp
-index 4c887ee8..a93b8ea9 100644
---- a/OpenEXR/IlmImfTest/testHuf.cpp
-+++ b/OpenEXR/IlmImfTest/testHuf.cpp
-@@ -181,9 +181,9 @@ compressUncompressSubset(const unsigned short raw[], int n)
- // This DEK hash is determined from an aprior initial run of this
- // test noting its value from the assert message compressVerify().
- // 
--#define  HUF_COMPRESS_DEK_HASH_FOR_FILL4_USHRT_MAX_PLUS_ONE 2956869585U
--#define  HUF_COMPRESS_DEK_HASH_FOR_FILL4_N 3414126535U
--#define  HUF_COMPRESS_DEK_HASH_FOR_FILL5_N 169791374U
-+#define  HUF_COMPRESS_DEK_HASH_FOR_FILL4_USHRT_MAX_PLUS_ONE 2013380646U
-+#define  HUF_COMPRESS_DEK_HASH_FOR_FILL4_N 213880353U
-+#define  HUF_COMPRESS_DEK_HASH_FOR_FILL5_N 2492982090U
- 
- void
- compressVerify (const unsigned short raw[], 
-@@ -200,7 +200,7 @@ compressVerify (const unsigned short raw[],
-     // under the topic of sorting and search chapter 6.4. 
-     //
-     unsigned int compressedHash = nCompressed;
--    const char* cptr = compressed;
-+    const unsigned char* cptr = reinterpret_cast<const unsigned char*>( (const char*) compressed);
-     for (int i = 0; i < nCompressed; ++i)
-     {
-         compressedHash = 
-@@ -210,6 +210,25 @@ compressVerify (const unsigned short raw[],
-     cout << "verifying compressed checksum hash = " 
-         << compressedHash << std::endl;
- 
-+    if (compressedHash != dekHash)
-+    {
-+       cout << "hash verification failed. Got " << compressedHash << " expected " << dekHash << std::endl;
-+       const unsigned char* cptr = reinterpret_cast<const unsigned char*>( (const char*) compressed);
-+       for(int i = 0 ; i < nCompressed ; ++i )
-+       {
-+           cout << std::hex << (0xFF & (int) (*cptr++));
-+           if ( (i & 0xF) ==0 )
-+           {
-+              cout << '\n';
-+           }
-+           else
-+           {
-+              cout << ' ';
-+           }
-+       }
-+       cout << "\n";
-+    }
-+
-     assert (compressedHash == dekHash);
- }
- 
diff --git a/gnu/packages/patches/intel-xed-fix-nondeterminism.patch b/gnu/packages/patches/intel-xed-fix-nondeterminism.patch
new file mode 100644
index 0000000000..c81bd0edde
--- /dev/null
+++ b/gnu/packages/patches/intel-xed-fix-nondeterminism.patch
@@ -0,0 +1,113 @@
+This patch removes sources of build non-determinism in the upstream sources.
+
+In particular, many of the compiled sources are generated with Python code,
+which in turn uses dictionaries to index the output C functions.  However,
+iterators over Python dictionaries have no guaranteed order, thus resulting in
+the C functions being output in a random order between builds.
+
+The patch below fixes this by forcing an order during output in several key
+places.  Note, however, that future updates may uncover new such places that
+just happen to be non-problematic at the time of this patch.  If you are
+reading this due to finding such issues, feel free to contact me at
+elaexuotee@wilsonb.com for help.
+
+diff --git a/pysrc/ild_codegen.py b/pysrc/ild_codegen.py
+index 628ec45..a9bff79 100755
+--- a/pysrc/ild_codegen.py
++++ b/pysrc/ild_codegen.py
+@@ -188,14 +188,14 @@ def gen_l2_func_list(agi, target_nt_dict, arg_nt_dict,
+                      ild_t_member):
+     """generate L2 functions"""
+     l2_func_list = []
+-    for (nt_name,array) in target_nt_dict.items():
++    for (nt_name,array) in sorted(target_nt_dict.items()):
+         target_opname = array.get_target_opname()
+         if array.is_const_lookup_fun():
+             fo = gen_const_l2_function(agi, nt_name,
+                                 target_opname, ild_t_member)
+             l2_func_list.append(fo)
+         else:
+-            for arg_nt_seq,arg_arr in arg_nt_dict.items():
++            for arg_nt_seq,arg_arr in sorted(arg_nt_dict.items()):
+                 fo = gen_scalable_l2_function(agi, nt_name,
+                      target_opname, ild_t_member, arg_arr, list(arg_nt_seq))
+                 l2_func_list.append(fo)
+diff --git a/pysrc/ild_disp.py b/pysrc/ild_disp.py
+index 942c036..cf80e29 100755
+--- a/pysrc/ild_disp.py
++++ b/pysrc/ild_disp.py
+@@ -350,7 +350,8 @@ def work(agi, united_lookup,  disp_nts, brdisp_nts, ild_gendir,
+     disp_dict = _gen_l3_array_dict(agi, disp_nts, _disp_token)
+ 
+     
+-    nt_arr_list = list(brdisp_dict.values()) + list(disp_dict.values())
++    nt_arr_list = ([v for (k,v) in sorted(brdisp_dict.items())] +
++                   [v for (k,v) in sorted(disp_dict.items())])
+     #create function that calls all initialization functions
+     init_f = ild_nt.gen_init_function(nt_arr_list, 'xed_ild_disp_l3_init')
+     
+@@ -367,7 +368,7 @@ def work(agi, united_lookup,  disp_nts, brdisp_nts, ild_gendir,
+     l2_functions = []
+     eosz_op = ild_eosz.get_target_opname()
+     easz_op = ild_easz.get_target_opname()
+-    for nt_name,array in list(disp_dict.items()) + list(brdisp_dict.items()):
++    for nt_name,array in sorted(disp_dict.items()) + sorted(brdisp_dict.items()):
+         #Some DISP NTs depend on EOSZ, others on EASZ, we need to know
+         #that when we generate L2 functions
+         if eosz_op in array.get_arg_names():
+diff --git a/pysrc/ild_easz.py b/pysrc/ild_easz.py
+index 02cd691..c53b9f2 100755
+--- a/pysrc/ild_easz.py
++++ b/pysrc/ild_easz.py
+@@ -165,9 +165,10 @@ def work(agi, united_lookup, easz_nts, ild_gendir, debug):
+             return
+         nt_seq_arrays[tuple(nt_seq)] = array
+     #init function calls all single init functions for the created tables
+-    init_f = ild_nt.gen_init_function(list(nt_seq_arrays.values()),
++    nt_seq_values = [v for (k,v) in sorted(nt_seq_arrays.items())]
++    init_f = ild_nt.gen_init_function(nt_seq_values,
+                                        'xed_ild_easz_init')
+-    ild_nt.dump_lu_arrays(agi, list(nt_seq_arrays.values()), _easz_c_fn, 
++    ild_nt.dump_lu_arrays(agi, nt_seq_values, _easz_c_fn, 
+                           mbuild.join('include-private', _easz_header_fn),
+                           init_f)
+     getter_fos = []
+diff --git a/pysrc/ild_eosz.py b/pysrc/ild_eosz.py
+index 6643bc3..89d2d89 100755
+--- a/pysrc/ild_eosz.py
++++ b/pysrc/ild_eosz.py
+@@ -200,10 +200,11 @@ def work(agi, united_lookup, eosz_nts, ild_gendir, debug):
+             return None
+         nt_seq_arrays[tuple(nt_seq)] = array
+     #init function calls all single init functions for the created tables
+-    init_f = ild_nt.gen_init_function(list(nt_seq_arrays.values()), 
++    nt_seq_values = [v for (k,v) in sorted(nt_seq_arrays.items())]
++    init_f = ild_nt.gen_init_function(nt_seq_values, 
+                                       'xed_ild_eosz_init')
+     #dump init and lookup functions for EOSZ sequences
+-    ild_nt.dump_lu_arrays(agi, list(nt_seq_arrays.values()), _eosz_c_fn,
++    ild_nt.dump_lu_arrays(agi, nt_seq_values, _eosz_c_fn,
+                           mbuild.join('include-private', _eosz_header_fn),
+                           init_f)
+     #generate EOSZ getter functions - they get xed_decoded_inst_t*
+diff --git a/pysrc/ild_imm.py b/pysrc/ild_imm.py
+index 51c413c..0530bae 100755
+--- a/pysrc/ild_imm.py
++++ b/pysrc/ild_imm.py
+@@ -322,12 +322,14 @@ def work(agi, united_lookup, imm_nts, ild_gendir, eosz_dict,
+                                      level='l3')
+         nt_dict[nt_name] = array
+ 
++    nt_dict_values = [v for (k,v) in sorted(nt_dict.items())]
++
+     #create function that calls all initialization functions for L3
+-    init_f = ild_nt.gen_init_function(list(nt_dict.values()),
++    init_f = ild_nt.gen_init_function(nt_dict_values,
+                                       'xed_ild_imm_l3_init')
+     
+     #dump L3 functions
+-    ild_nt.dump_lu_arrays(agi, list(nt_dict.values()), _l3_c_fn,
++    ild_nt.dump_lu_arrays(agi, nt_dict_values, _l3_c_fn,
+                           mbuild.join('include-private',_l3_header_fn),
+                           init_f)
+     
diff --git a/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch b/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch
new file mode 100644
index 0000000000..1352ed7803
--- /dev/null
+++ b/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch
@@ -0,0 +1,31 @@
+From d80cfc83325f8e95d35ecd9f15b36b96fa9ed3ee Mon Sep 17 00:00:00 2001
+From: Simon South <simon@simonsouth.net>
+Date: Sat, 6 Jun 2020 18:56:56 -0400
+Subject: [PATCH] Disable branch-patching
+
+This patch disables JamVM's branch-patching optimization, which tends
+to make JamVM fail with an "Illegal instruction" error on x86_64 (and
+possibly other architectures that use variable-length instructions)
+when built using modern versions of gcc and glibc.
+---
+ src/init.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/init.c b/src/init.c
+index 32539cf..38ad54b 100644
+--- a/src/init.c
++++ b/src/init.c
+@@ -72,8 +72,8 @@ void setDefaultInitArgs(InitArgs *args) {
+ #ifdef INLINING
+     args->replication_threshold = 10;
+     args->profile_threshold     = 10;
+-    args->branch_patching_dup   = TRUE;
+-    args->branch_patching       = TRUE;
++    args->branch_patching_dup   = FALSE;
++    args->branch_patching       = FALSE;
+     args->print_codestats       = FALSE;
+     args->join_blocks           = TRUE;
+     args->profiling             = TRUE;
+-- 
+2.25.2
+
diff --git a/gnu/packages/patches/libreoffice-poppler-compat.patch b/gnu/packages/patches/libreoffice-poppler-compat.patch
deleted file mode 100644
index 8dc0b60a12..0000000000
--- a/gnu/packages/patches/libreoffice-poppler-compat.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix type mismatch with Poppler 0.86.
-
-Taken from Arch Linux:
-https://git.archlinux.org/svntogit/packages.git/tree/trunk/libreoffice-poppler-0.86.patch?h=packages/libreoffice-fresh
-
-diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
---- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
-+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
-@@ -563,7 +563,9 @@ void PDFOutDev::processLink(Link* link, Catalog*)
-     if (!(pAction && pAction->getKind() == actionURI))
-         return;
- 
--#if POPPLER_CHECK_VERSION(0, 72, 0)
-+#if POPPLER_CHECK_VERSION(0, 86, 0)
-+    const char* pURI = static_cast<LinkURI*>(pAction)->getURI().c_str();
-+#elif POPPLER_CHECK_VERSION(0, 72, 0)
-     const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->c_str();
- #else
-     const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->getCString();
diff --git a/gnu/packages/patches/libvnc-CVE-2018-20750.patch b/gnu/packages/patches/libvnc-CVE-2018-20750.patch
deleted file mode 100644
index 146243670a..0000000000
--- a/gnu/packages/patches/libvnc-CVE-2018-20750.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 09e8fc02f59f16e2583b34fe1a270c238bd9ffec Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
-Date: Mon, 7 Jan 2019 10:40:01 +0100
-Subject: [PATCH] Limit lenght to INT_MAX bytes in
- rfbProcessFileTransferReadBuffer()
-
-This ammends 15bb719c03cc70f14c36a843dcb16ed69b405707 fix for a heap
-out-of-bound write access in rfbProcessFileTransferReadBuffer() when
-reading a transfered file content in a server. The former fix did not
-work on platforms with a 32-bit int type (expected by rfbReadExact()).
-
-CVE-2018-15127
-<https://github.com/LibVNC/libvncserver/issues/243>
-<https://github.com/LibVNC/libvncserver/issues/273>
----
- libvncserver/rfbserver.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
-index 7af84906..f2edbeea 100644
---- a/libvncserver/rfbserver.c
-+++ b/libvncserver/rfbserver.c
-@@ -88,6 +88,8 @@
- #include <errno.h>
- /* strftime() */
- #include <time.h>
-+/* INT_MAX */
-+#include <limits.h>
- 
- #ifdef LIBVNCSERVER_WITH_WEBSOCKETS
- #include "rfbssl.h"
-@@ -1472,8 +1474,11 @@ char *rfbProcessFileTransferReadBuffer(rfbClientPtr cl, uint32_t length)
-        0XFFFFFFFF, i.e. SIZE_MAX for 32-bit systems. On 64-bit systems, a length of 0XFFFFFFFF
-        will safely be allocated since this check will never trigger and malloc() can digest length+1
-        without problems as length is a uint32_t.
-+       We also later pass length to rfbReadExact() that expects a signed int type and
-+       that might wrap on platforms with a 32-bit int type if length is bigger
-+       than 0X7FFFFFFF.
-     */
--    if(length == SIZE_MAX) {
-+    if(length == SIZE_MAX || length > INT_MAX) {
- 	rfbErr("rfbProcessFileTransferReadBuffer: too big file transfer length requested: %u", (unsigned int)length);
- 	rfbCloseClient(cl);
- 	return NULL;
diff --git a/gnu/packages/patches/libvnc-CVE-2019-15681.patch b/gnu/packages/patches/libvnc-CVE-2019-15681.patch
deleted file mode 100644
index e328d87920..0000000000
--- a/gnu/packages/patches/libvnc-CVE-2019-15681.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From d01e1bb4246323ba6fcee3b82ef1faa9b1dac82a Mon Sep 17 00:00:00 2001
-From: Christian Beier <dontmind@freeshell.org>
-Date: Mon, 19 Aug 2019 22:32:25 +0200
-Subject: [PATCH] rfbserver: don't leak stack memory to the remote
-
-Thanks go to Pavel Cheremushkin of Kaspersky for reporting.
----
- libvncserver/rfbserver.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
-index 3bacc891..310e5487 100644
---- a/libvncserver/rfbserver.c
-+++ b/libvncserver/rfbserver.c
-@@ -3724,6 +3724,8 @@ rfbSendServerCutText(rfbScreenInfoPtr rfbScreen,char *str, int len)
-     rfbServerCutTextMsg sct;
-     rfbClientIteratorPtr iterator;
- 
-+    memset((char *)&sct, 0, sizeof(sct));
-+
-     iterator = rfbGetClientIterator(rfbScreen);
-     while ((cl = rfbClientIteratorNext(iterator)) != NULL) {
-         sct.type = rfbServerCutText;
diff --git a/gnu/packages/patches/linbox-fix-pkgconfig.patch b/gnu/packages/patches/linbox-fix-pkgconfig.patch
new file mode 100644
index 0000000000..c93915fb1b
--- /dev/null
+++ b/gnu/packages/patches/linbox-fix-pkgconfig.patch
@@ -0,0 +1,23 @@
+Backported from:
+
+From 426eb97ba762c7663884f57ead0909f2aa3cd6a5 Mon Sep 17 00:00:00 2001
+From: Cyril Bouvier <cyril.bouvier@lirmm.fr>
+Date: Thu, 17 Jan 2019 16:32:19 +0100
+Subject: [PATCH] Remove @LINBOXSAGE_LIBS@ from linbox.pc.in
+
+---
+ linbox.pc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/linbox.pc.in b/linbox.pc.in
+index 278f127e4..c6b8091eb 100644
+--- a/linbox.pc.in
++++ b/linbox.pc.in
+@@ -9,6 +9,6 @@ Description: Exact Linear Algebra library
+ URL: http://github.com/linbox-team/linbox
+ Version: @VERSION@
+ Requires: fflas-ffpack >= 2.4.0, givaro >= 4.1.0
+-Libs: -L${libdir} -llinbox @LINBOXSAGE_LIBS@ @NTL_LIBS@ @MPFR_LIBS@ @FPLLL_LIBS@ @IML_LIBS@ @FLINT_LIBS@ @OCL_LIBS@
++Libs: -L${libdir} -llinbox @NTL_LIBS@ @MPFR_LIBS@ @FPLLL_LIBS@ @IML_LIBS@ @FLINT_LIBS@ @OCL_LIBS@
+ Cflags: @DEFAULT_CFLAGS@ -DDISABLE_COMMENTATOR -I${includedir} @NTL_CFLAGS@ @MPFR_CFLAGS@ @FPLLL_CFLAGS@  @IML_CFLAGS@ @FLINT_CFLAGS@ 
+ \-------------------------------------------------------
diff --git a/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
new file mode 100644
index 0000000000..fe381acf1b
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch
@@ -0,0 +1,192 @@
+From f8e146f3430de3a6cd904f3f3f7aa1bfaefee14c Mon Sep 17 00:00:00 2001
+From: Bjorn Pettersson <bjorn.a.pettersson@ericsson.com>
+Date: Thu, 28 Nov 2019 23:18:28 +0100
+Subject: [PATCH] [InstCombine] Fix big-endian miscompile of (bitcast
+ (zext/trunc (bitcast)))
+
+Summary:
+optimizeVectorResize is rewriting patterns like:
+  %1 = bitcast vector %src to integer
+  %2 = trunc/zext %1
+  %dst = bitcast %2 to vector
+
+Since bitcasting between integer an vector types gives
+different integer values depending on endianness, we need
+to take endianness into account. As it happens the old
+implementation only produced the correct result for little
+endian targets.
+
+Fixes: https://bugs.llvm.org/show_bug.cgi?id=44178
+
+Reviewers: spatel, lattner, lebedev.ri
+
+Reviewed By: spatel, lebedev.ri
+
+Subscribers: lebedev.ri, hiraditya, uabelho, llvm-commits
+
+Tags: #llvm
+
+Differential Revision: https://reviews.llvm.org/D70844
+
+(cherry picked from commit a9d6b0e5444741d08ff1df7cf71d1559e7fefc1f)
+---
+ .../InstCombine/InstCombineCasts.cpp          | 79 +++++++++++++------
+ llvm/test/Transforms/InstCombine/cast.ll      |  6 +-
+ 2 files changed, 60 insertions(+), 25 deletions(-)
+
+diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+index 2c9ba203fbf3..0af3de300e77 100644
+--- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
++++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+@@ -18,6 +18,7 @@
+ #include "llvm/IR/DIBuilder.h"
+ #include "llvm/IR/PatternMatch.h"
+ #include "llvm/Support/KnownBits.h"
++#include <numeric>
+ using namespace llvm;
+ using namespace PatternMatch;
+ 
+@@ -1820,12 +1821,24 @@ Instruction *InstCombiner::visitPtrToInt(PtrToIntInst &CI) {
+ }
+ 
+ /// This input value (which is known to have vector type) is being zero extended
+-/// or truncated to the specified vector type.
++/// or truncated to the specified vector type. Since the zext/trunc is done
++/// using an integer type, we have a (bitcast(cast(bitcast))) pattern,
++/// endianness will impact which end of the vector that is extended or
++/// truncated.
++///
++/// A vector is always stored with index 0 at the lowest address, which
++/// corresponds to the most significant bits for a big endian stored integer and
++/// the least significant bits for little endian. A trunc/zext of an integer
++/// impacts the big end of the integer. Thus, we need to add/remove elements at
++/// the front of the vector for big endian targets, and the back of the vector
++/// for little endian targets.
++///
+ /// Try to replace it with a shuffle (and vector/vector bitcast) if possible.
+ ///
+ /// The source and destination vector types may have different element types.
+-static Instruction *optimizeVectorResize(Value *InVal, VectorType *DestTy,
+-                                         InstCombiner &IC) {
++static Instruction *optimizeVectorResizeWithIntegerBitCasts(Value *InVal,
++                                                            VectorType *DestTy,
++                                                            InstCombiner &IC) {
+   // We can only do this optimization if the output is a multiple of the input
+   // element size, or the input is a multiple of the output element size.
+   // Convert the input type to have the same element type as the output.
+@@ -1844,31 +1857,53 @@ static Instruction *optimizeVectorResize(Value *InVal, VectorType *DestTy,
+     InVal = IC.Builder.CreateBitCast(InVal, SrcTy);
+   }
+ 
++  bool IsBigEndian = IC.getDataLayout().isBigEndian();
++  unsigned SrcElts = SrcTy->getNumElements();
++  unsigned DestElts = DestTy->getNumElements();
++
++  assert(SrcElts != DestElts && "Element counts should be different.");
++
+   // Now that the element types match, get the shuffle mask and RHS of the
+   // shuffle to use, which depends on whether we're increasing or decreasing the
+   // size of the input.
+-  SmallVector<uint32_t, 16> ShuffleMask;
++  SmallVector<uint32_t, 16> ShuffleMaskStorage;
++  ArrayRef<uint32_t> ShuffleMask;
+   Value *V2;
+ 
+-  if (SrcTy->getNumElements() > DestTy->getNumElements()) {
+-    // If we're shrinking the number of elements, just shuffle in the low
+-    // elements from the input and use undef as the second shuffle input.
+-    V2 = UndefValue::get(SrcTy);
+-    for (unsigned i = 0, e = DestTy->getNumElements(); i != e; ++i)
+-      ShuffleMask.push_back(i);
++  // Produce an identify shuffle mask for the src vector.
++  ShuffleMaskStorage.resize(SrcElts);
++  std::iota(ShuffleMaskStorage.begin(), ShuffleMaskStorage.end(), 0);
+ 
++  if (SrcElts > DestElts) {
++    // If we're shrinking the number of elements (rewriting an integer
++    // truncate), just shuffle in the elements corresponding to the least
++    // significant bits from the input and use undef as the second shuffle
++    // input.
++    V2 = UndefValue::get(SrcTy);
++    // Make sure the shuffle mask selects the "least significant bits" by
++    // keeping elements from back of the src vector for big endian, and from the
++    // front for little endian.
++    ShuffleMask = ShuffleMaskStorage;
++    if (IsBigEndian)
++      ShuffleMask = ShuffleMask.take_back(DestElts);
++    else
++      ShuffleMask = ShuffleMask.take_front(DestElts);
+   } else {
+-    // If we're increasing the number of elements, shuffle in all of the
+-    // elements from InVal and fill the rest of the result elements with zeros
+-    // from a constant zero.
++    // If we're increasing the number of elements (rewriting an integer zext),
++    // shuffle in all of the elements from InVal. Fill the rest of the result
++    // elements with zeros from a constant zero.
+     V2 = Constant::getNullValue(SrcTy);
+-    unsigned SrcElts = SrcTy->getNumElements();
+-    for (unsigned i = 0, e = SrcElts; i != e; ++i)
+-      ShuffleMask.push_back(i);
+-
+-    // The excess elements reference the first element of the zero input.
+-    for (unsigned i = 0, e = DestTy->getNumElements()-SrcElts; i != e; ++i)
+-      ShuffleMask.push_back(SrcElts);
++    // Use first elt from V2 when indicating zero in the shuffle mask.
++    uint32_t NullElt = SrcElts;
++    // Extend with null values in the "most significant bits" by adding elements
++    // in front of the src vector for big endian, and at the back for little
++    // endian.
++    unsigned DeltaElts = DestElts - SrcElts;
++    if (IsBigEndian)
++      ShuffleMaskStorage.insert(ShuffleMaskStorage.begin(), DeltaElts, NullElt);
++    else
++      ShuffleMaskStorage.append(DeltaElts, NullElt);
++    ShuffleMask = ShuffleMaskStorage;
+   }
+ 
+   return new ShuffleVectorInst(InVal, V2,
+@@ -2359,8 +2394,8 @@ Instruction *InstCombiner::visitBitCast(BitCastInst &CI) {
+         CastInst *SrcCast = cast<CastInst>(Src);
+         if (BitCastInst *BCIn = dyn_cast<BitCastInst>(SrcCast->getOperand(0)))
+           if (isa<VectorType>(BCIn->getOperand(0)->getType()))
+-            if (Instruction *I = optimizeVectorResize(BCIn->getOperand(0),
+-                                               cast<VectorType>(DestTy), *this))
++            if (Instruction *I = optimizeVectorResizeWithIntegerBitCasts(
++                    BCIn->getOperand(0), cast<VectorType>(DestTy), *this))
+               return I;
+       }
+ 
+diff --git a/llvm/test/Transforms/InstCombine/cast.ll b/llvm/test/Transforms/InstCombine/cast.ll
+index b6d1eda0601d..3ce8de033422 100644
+--- a/llvm/test/Transforms/InstCombine/cast.ll
++++ b/llvm/test/Transforms/InstCombine/cast.ll
+@@ -824,7 +824,7 @@ define i64 @test59(i8 %A, i8 %B) {
+ 
+ define <3 x i32> @test60(<4 x i32> %call4) {
+ ; CHECK-LABEL: @test60(
+-; CHECK-NEXT:    [[P10:%.*]] = shufflevector <4 x i32> [[CALL4:%.*]], <4 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
++; CHECK-NEXT:    [[P10:%.*]] = shufflevector <4 x i32> [[CALL4:%.*]], <4 x i32> undef, <3 x i32> <i32 1, i32 2, i32 3>
+ ; CHECK-NEXT:    ret <3 x i32> [[P10]]
+ ;
+   %p11 = bitcast <4 x i32> %call4 to i128
+@@ -836,7 +836,7 @@ define <3 x i32> @test60(<4 x i32> %call4) {
+ 
+ define <4 x i32> @test61(<3 x i32> %call4) {
+ ; CHECK-LABEL: @test61(
+-; CHECK-NEXT:    [[P10:%.*]] = shufflevector <3 x i32> [[CALL4:%.*]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
++; CHECK-NEXT:    [[P10:%.*]] = shufflevector <3 x i32> [[CALL4:%.*]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 3, i32 0, i32 1, i32 2>
+ ; CHECK-NEXT:    ret <4 x i32> [[P10]]
+ ;
+   %p11 = bitcast <3 x i32> %call4 to i96
+@@ -848,7 +848,7 @@ define <4 x i32> @test61(<3 x i32> %call4) {
+ define <4 x i32> @test62(<3 x float> %call4) {
+ ; CHECK-LABEL: @test62(
+ ; CHECK-NEXT:    [[TMP1:%.*]] = bitcast <3 x float> [[CALL4:%.*]] to <3 x i32>
+-; CHECK-NEXT:    [[P10:%.*]] = shufflevector <3 x i32> [[TMP1]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
++; CHECK-NEXT:    [[P10:%.*]] = shufflevector <3 x i32> [[TMP1]], <3 x i32> <i32 0, i32 undef, i32 undef>, <4 x i32> <i32 3, i32 0, i32 1, i32 2>
+ ; CHECK-NEXT:    ret <4 x i32> [[P10]]
+ ;
+   %p11 = bitcast <3 x float> %call4 to i96
+-- 
+2.26.2
+
diff --git a/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
new file mode 100644
index 0000000000..6cfe07e50a
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch
@@ -0,0 +1,97 @@
+From 011fb5bf8b31316472fccb1a19c91912246df9b2 Mon Sep 17 00:00:00 2001
+From: Reid Kleckner <rnk@google.com>
+Date: Sat, 28 Mar 2020 11:03:14 -0700
+Subject: [PATCH] [CodeGen] Fix sinking local values in lpads with phis
+
+There was already a test case for landingpads to handle this case, but I
+had forgotten to consider PHI instructions preceding the EH_LABEL in the
+landingpad.
+
+PR45261
+---
+ llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 17 +++++++++-
+ llvm/test/CodeGen/X86/sink-local-value.ll  | 36 ++++++++++++++++++++++
+ 2 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+index 5ac3606dc662..2638b1e8a05c 100644
+--- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
++++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
+@@ -225,6 +225,21 @@ static bool isRegUsedByPhiNodes(unsigned DefReg,
+   return false;
+ }
+ 
++static bool isTerminatingEHLabel(MachineBasicBlock *MBB, MachineInstr &MI) {
++  // Ignore non-EH labels.
++  if (!MI.isEHLabel())
++    return false;
++
++  // Any EH label outside a landing pad must be for an invoke. Consider it a
++  // terminator.
++  if (!MBB->isEHPad())
++    return true;
++
++  // If this is a landingpad, the first non-phi instruction will be an EH_LABEL.
++  // Don't consider that label to be a terminator.
++  return MI.getIterator() != MBB->getFirstNonPHI();
++}
++
+ /// Build a map of instruction orders. Return the first terminator and its
+ /// order. Consider EH_LABEL instructions to be terminators as well, since local
+ /// values for phis after invokes must be materialized before the call.
+@@ -233,7 +248,7 @@ void FastISel::InstOrderMap::initialize(
+   unsigned Order = 0;
+   for (MachineInstr &I : *MBB) {
+     if (!FirstTerminator &&
+-        (I.isTerminator() || (I.isEHLabel() && &I != &MBB->front()))) {
++        (I.isTerminator() || isTerminatingEHLabel(MBB, I))) {
+       FirstTerminator = &I;
+       FirstTerminatorOrder = Order;
+     }
+diff --git a/llvm/test/CodeGen/X86/sink-local-value.ll b/llvm/test/CodeGen/X86/sink-local-value.ll
+index b0e511ac1189..f7d861ac9b6c 100644
+--- a/llvm/test/CodeGen/X86/sink-local-value.ll
++++ b/llvm/test/CodeGen/X86/sink-local-value.ll
+@@ -145,6 +145,42 @@ try.cont:                                         ; preds = %entry, %lpad
+ ; CHECK:         retl
+ 
+ 
++define i32 @lpad_phi() personality i32 (...)* @__gxx_personality_v0 {
++entry:
++  store i32 42, i32* @sink_across
++  invoke void @may_throw()
++          to label %try.cont unwind label %lpad
++
++lpad:                                             ; preds = %entry
++  %p = phi i32 [ 11, %entry ]  ; Trivial, but -O0 keeps it
++  %0 = landingpad { i8*, i32 }
++          catch i8* null
++  store i32 %p, i32* @sink_across
++  br label %try.cont
++
++try.cont:                                         ; preds = %entry, %lpad
++  %r.0 = phi i32 [ 13, %entry ], [ 55, %lpad ]
++  ret i32 %r.0
++}
++
++; The constant materialization should be *after* the stores to sink_across, but
++; before any EH_LABEL.
++
++; CHECK-LABEL: lpad_phi:
++; CHECK:         movl    $42, sink_across
++; CHECK:         movl    $13, %{{[a-z]*}}
++; CHECK: .Ltmp{{.*}}:
++; CHECK:         calll   may_throw
++; CHECK: .Ltmp{{.*}}:
++; CHECK:         jmp     .LBB{{.*}}
++; CHECK: .LBB{{.*}}:                                # %lpad
++; CHECK-NEXT: .Ltmp{{.*}}:
++; CHECK:         movl    {{.*}}, sink_across
++; CHECK:         movl    $55, %{{[a-z]*}}
++; CHECK: .LBB{{.*}}:                                # %try.cont
++; CHECK:         retl
++
++
+ ; Function Attrs: nounwind readnone speculatable
+ declare void @llvm.dbg.value(metadata, metadata, metadata) #0
+ 
diff --git a/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
new file mode 100644
index 0000000000..3f16de5a2b
--- /dev/null
+++ b/gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch
@@ -0,0 +1,113 @@
+Guix note: this got detected with the test suite of rustc 1.41.1, but
+the issue potentially affects all consumers of LLVM.
+
+From 58e8c793d0e43150a6452e971a32d7407a8a7401 Mon Sep 17 00:00:00 2001
+From: Tim Northover <tnorthover@apple.com>
+Date: Mon, 30 Sep 2019 07:46:52 +0000
+Subject: [PATCH] Revert "[SCEV] add no wrap flag for SCEVAddExpr."
+
+This reverts r366419 because the analysis performed is within the context of
+the loop and it's only valid to add wrapping flags to "global" expressions if
+they're always correct.
+
+llvm-svn: 373184
+---
+ llvm/lib/Analysis/ScalarEvolution.cpp              | 2 +-
+ llvm/test/Analysis/ScalarEvolution/limit-depth.ll  | 2 +-
+ llvm/test/Analysis/ScalarEvolution/nsw.ll          | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count12.ll | 2 +-
+ llvm/test/Analysis/ScalarEvolution/trip-count9.ll  | 8 ++++----
+ 5 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
+index 354ae05bb841..c29fc5dbccfb 100644
+--- a/llvm/lib/Analysis/ScalarEvolution.cpp
++++ b/llvm/lib/Analysis/ScalarEvolution.cpp
+@@ -4992,7 +4992,7 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN,
+   // overflow.
+   if (auto *BEInst = dyn_cast<Instruction>(BEValueV))
+     if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L))
+-      (void)getAddRecExpr(getAddExpr(StartVal, Accum, Flags), Accum, L, Flags);
++      (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags);
+ 
+   return PHISCEV;
+ }
+diff --git a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+index db68a4f84c91..6fdf8c5df974 100644
+--- a/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
++++ b/llvm/test/Analysis/ScalarEvolution/limit-depth.ll
+@@ -46,7 +46,7 @@ define void @test_mul(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ define void @test_sext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f) {
+ ; CHECK-LABEL: @test_sext
+ ; CHECK:        %se2 = sext i64 %iv2.inc to i128
+-; CHECK-NEXT:   -->  {(1 + (sext i64 {(sext i32 (1 + %a)<nsw> to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
++; CHECK-NEXT:   -->  {(1 + (sext i64 {(sext i32 (1 + %a) to i64),+,1}<nsw><%loop> to i128))<nsw>,+,1}<nsw><%loop2>
+ entry:
+   br label %loop
+ 
+diff --git a/llvm/test/Analysis/ScalarEvolution/nsw.ll b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+index 69427368625d..ca24f9d4a04b 100644
+--- a/llvm/test/Analysis/ScalarEvolution/nsw.ll
++++ b/llvm/test/Analysis/ScalarEvolution/nsw.ll
+@@ -163,7 +163,7 @@ bb5:                                              ; preds = %bb2
+ declare void @f(i32)
+ 
+ ; CHECK-LABEL: nswnowrap
+-; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (2 + %v)
++; CHECK: --> {(1 + %v)<nsw>,+,1}<nsw><%for.body>{{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: (1 + ((1 + %v)<nsw> smax %v))
+ define void @nswnowrap(i32 %v, i32* %buf) {
+ entry:
+   %add = add nsw i32 %v, 1
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+index 5e7d72d5e4f3..d0086ee2e6ac 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count12.ll
+@@ -1,7 +1,7 @@
+ ; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+ 
+ ; CHECK: Determining loop execution counts for: @test
+-; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len)<nsw> /u 2)
++; CHECK: Loop %for.body: backedge-taken count is ((-2 + %len) /u 2)
+ ; CHECK: Loop %for.body: max backedge-taken count is 1073741823
+ 
+ define zeroext i16 @test(i16* nocapture %p, i32 %len) nounwind readonly {
+diff --git a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+index c0a1d12fa00e..9a080b34743f 100644
+--- a/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
++++ b/llvm/test/Analysis/ScalarEvolution/trip-count9.ll
+@@ -179,7 +179,7 @@ exit:
+ }
+ 
+ ; CHECK: Determining loop execution counts for: @nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax %n))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax %n))
+ ; CHECK: Loop %loop: max backedge-taken count is -1
+ define void @nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -195,7 +195,7 @@ exit:
+ }
+ 
+ ; CHECK: Determining loop execution counts for: @nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax %n)) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax %n)) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @nsw_startx_step2(i4 %n, i4 %x) {
+ entry:
+@@ -381,7 +381,7 @@ exit:
+ }
+ 
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx
+-; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x)<nsw> smax (2 * %n)))
++; CHECK: Loop %loop: backedge-taken count is (-1 + (-1 * %x) + ((1 + %x) smax (2 * %n)))
+ ; CHECK: Loop %loop: max backedge-taken count is -2
+ define void @even_nsw_startx(i4 %n, i4 %x) {
+ entry:
+@@ -398,7 +398,7 @@ exit:
+ }
+ 
+ ; CHECK: Determining loop execution counts for: @even_nsw_startx_step2
+-; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x)<nsw> smax (2 * %n))) /u 2)
++; CHECK: Loop %loop: backedge-taken count is ((-1 + (-1 * %x) + ((2 + %x) smax (2 * %n))) /u 2)
+ ; CHECK: Loop %loop: max backedge-taken count is 7
+ define void @even_nsw_startx_step2(i4 %n, i4 %x) {
+ entry:
diff --git a/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch b/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch
new file mode 100644
index 0000000000..98a0c8a395
--- /dev/null
+++ b/gnu/packages/patches/maven-enforcer-api-fix-old-dependencies.patch
@@ -0,0 +1,177 @@
+From eccc46eaf7903a8e837813795498b12c078faaea Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Wed, 11 Mar 2020 21:53:32 +0100
+Subject: [PATCH] Fix old dependencies
+
+---
+ .../enforcer/AbstractBanDependencies.java     |  2 +-
+ .../enforcer/BanTransitiveDependencies.java   |  2 +-
+ .../enforcer/DependencyConvergence.java       | 17 ++++++++---------
+ .../enforcer/RequireUpperBoundDeps.java       | 19 +++++++++----------
+ .../enforcer/utils/DependencyVersionMap.java  |  6 +++---
+ 5 files changed, 22 insertions(+), 24 deletions(-)
+
+diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
+index 2888a61..2b944b7 100644
+--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
++++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
+@@ -119,7 +119,7 @@ public abstract class AbstractBanDependencies
+         Set<Artifact> dependencies = null;
+         try
+         {
+-            DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
++            DependencyNode node = graphBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), null );
+             if ( searchTransitive )
+             {
+                 dependencies = ArtifactUtils.getAllDescendants( node );
+diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
+index 6e1dcd4..1b964ba 100644
+--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
++++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
+@@ -158,7 +158,7 @@ public class BanTransitiveDependencies
+         try
+         {
+             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+-            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project, null );
++            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project.getProjectBuildingRequest(), null );
+         }
+         catch ( Exception e )
+         {
+diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
+index 684f984..ca7ad3a 100644
+--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
++++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
+@@ -35,9 +35,9 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+ import org.apache.maven.plugin.logging.Log;
+ import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
+ import org.apache.maven.project.MavenProject;
+-import org.apache.maven.shared.dependency.tree.DependencyNode;
+-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
++import org.apache.maven.shared.dependency.graph.DependencyNode;
++import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
++import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
+ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+ import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+ 
+@@ -60,7 +60,7 @@ public class DependencyConvergence
+     // CHECKSTYLE_OFF: LineLength
+     /**
+      * Uses the {@link EnforcerRuleHelper} to populate the values of the
+-     * {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
++     * {@link DependencyGraphBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+      * factory method. <br/>
+      * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
+      * 
+@@ -75,16 +75,15 @@ public class DependencyConvergence
+         try
+         {
+             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+-            DependencyTreeBuilder dependencyTreeBuilder =
+-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
++            DependencyGraphBuilder dependencyTreeBuilder =
++                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
+             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
+             ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
+             ArtifactMetadataSource metadataSource =
+                 (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
+             ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
+             ArtifactFilter filter = null; // we need to evaluate all scopes
+-            DependencyNode node = dependencyTreeBuilder.buildDependencyTree( project, repository, factory,
+-                                                                             metadataSource, filter, collector );
++            DependencyNode node = dependencyTreeBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), filter);
+             return node;
+         }
+         catch ( ExpressionEvaluationException e )
+@@ -95,7 +94,7 @@ public class DependencyConvergence
+         {
+             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
+         }
+-        catch ( DependencyTreeBuilderException e )
++        catch ( DependencyGraphBuilderException e )
+         {
+             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
+         }
+diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
+index 458554a..2de9870 100644
+--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
++++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
+@@ -38,10 +38,10 @@ import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+ import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+ import org.apache.maven.plugin.logging.Log;
+ import org.apache.maven.project.MavenProject;
+-import org.apache.maven.shared.dependency.tree.DependencyNode;
+-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
++import org.apache.maven.shared.dependency.graph.DependencyNode;
++import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
++import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
++import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
+ import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+ import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+ 
+@@ -91,7 +91,7 @@ public class RequireUpperBoundDeps
+     // CHECKSTYLE_OFF: LineLength
+     /**
+      * Uses the {@link EnforcerRuleHelper} to populate the values of the
+-     * {@link DependencyTreeBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
++     * {@link DependencyGraphBuilder#buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+      * factory method. <br/>
+      * This method simply exists to hide all the ugly lookup that the {@link EnforcerRuleHelper} has to do.
+      * 
+@@ -106,8 +106,8 @@ public class RequireUpperBoundDeps
+         try
+         {
+             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
+-            DependencyTreeBuilder dependencyTreeBuilder =
+-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
++            DependencyGraphBuilder dependencyTreeBuilder =
++                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
+             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
+             ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
+             ArtifactMetadataSource metadataSource =
+@@ -115,8 +115,7 @@ public class RequireUpperBoundDeps
+             ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
+             ArtifactFilter filter = null; // we need to evaluate all scopes
+             DependencyNode node =
+-                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
+-                                                           collector );
++                dependencyTreeBuilder.buildDependencyGraph( project.getProjectBuildingRequest(), filter);
+             return node;
+         }
+         catch ( ExpressionEvaluationException e )
+@@ -127,7 +126,7 @@ public class RequireUpperBoundDeps
+         {
+             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
+         }
+-        catch ( DependencyTreeBuilderException e )
++        catch ( DependencyGraphBuilderException e )
+         {
+             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
+         }
+diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
+index b6213fa..2c2a645 100644
+--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
++++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
+@@ -26,8 +26,8 @@ import java.util.Map;
+ 
+ import org.apache.maven.artifact.Artifact;
+ import org.apache.maven.plugin.logging.Log;
+-import org.apache.maven.shared.dependency.tree.DependencyNode;
+-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
++import org.apache.maven.shared.dependency.graph.DependencyNode;
++import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
+ 
+ /**
+  * @author Brian Fox
+@@ -132,4 +132,4 @@ public class DependencyVersionMap
+         }
+         return output;
+     }
+-}
+\ No newline at end of file
++}
+-- 
+2.24.1
+
diff --git a/gnu/packages/patches/opendht-fix-jami.patch b/gnu/packages/patches/opendht-fix-jami.patch
new file mode 100644
index 0000000000..9718a84a41
--- /dev/null
+++ b/gnu/packages/patches/opendht-fix-jami.patch
@@ -0,0 +1,33 @@
+From e2b39dd3a0742853e00f9c3e8c46c911da20bed7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
+Date: Tue, 30 Jun 2020 10:42:49 -0400
+Subject: [PATCH 1/4] http/request: make terminate public
+
+---
+ include/opendht/http.h | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/include/opendht/http.h b/include/opendht/http.h
+index cc8d5f9..46b722c 100644
+--- a/include/opendht/http.h
++++ b/include/opendht/http.h
+@@ -294,6 +294,7 @@ public:
+      * User action to cancel the Request and call the completion callbacks.
+      */
+     void cancel();
++    void terminate(const asio::error_code& ec);
+ 
+ private:
+     using OnCompleteCb = std::function<void()>;
+@@ -320,8 +321,6 @@ private:
+ 
+     void connect(std::vector<asio::ip::tcp::endpoint>&& endpoints, HandlerCb cb = {});
+ 
+-    void terminate(const asio::error_code& ec);
+-
+     void post();
+ 
+     void handle_request(const asio::error_code& ec);
+-- 
+2.27.0
+
diff --git a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
new file mode 100644
index 0000000000..9503ab6f31
--- /dev/null
+++ b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
@@ -0,0 +1,358 @@
+From 951f2269f67d618d376656db831796c119f4f6b3 Mon Sep 17 00:00:00 2001
+From: Leo Prikler <leo.prikler@student.tugraz.at>
+Date: Fri, 26 Jun 2020 18:20:04 +0200
+Subject: [PATCH] ppsspp: disable upgrade and gold
+
+---
+ Core/Config.cpp             | 11 -------
+ Core/Config.h               |  2 --
+ Qt/QtMain.cpp               |  6 ----
+ SDL/SDLMain.cpp             |  6 ----
+ UI/DevScreens.cpp           |  3 --
+ UI/GameSettingsScreen.cpp   |  1 -
+ UI/MainScreen.cpp           | 63 +------------------------------------
+ UI/MiscScreens.cpp          | 31 ++----------------
+ UWP/PPSSPP_UWPMain.cpp      |  6 ----
+ Windows/MainWindowMenu.cpp  |  2 +-
+ Windows/main.cpp            |  6 ----
+ android/jni/app-android.cpp |  6 ----
+ 12 files changed, 5 insertions(+), 138 deletions(-)
+
+diff --git a/Core/Config.cpp b/Core/Config.cpp
+index 214aeb433..04e3b151d 100644
+--- a/Core/Config.cpp
++++ b/Core/Config.cpp
+@@ -428,7 +428,6 @@ static ConfigSetting generalSettings[] = {
+ 	ConfigSetting("IgnoreBadMemAccess", &g_Config.bIgnoreBadMemAccess, true, true),
+ 	ConfigSetting("CurrentDirectory", &g_Config.currentDirectory, ""),
+ 	ConfigSetting("ShowDebuggerOnLoad", &g_Config.bShowDebuggerOnLoad, false),
+-	ConfigSetting("CheckForNewVersion", &g_Config.bCheckForNewVersion, true),
+ 	ConfigSetting("Language", &g_Config.sLanguageIni, &DefaultLangRegion),
+ 	ConfigSetting("ForceLagSync2", &g_Config.bForceLagSync, false, true, true),
+ 	ConfigSetting("DiscordPresence", &g_Config.bDiscordPresence, true, true, false),  // Or maybe it makes sense to have it per-game? Race conditions abound...
+@@ -1229,16 +1228,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) {
+ 		upgradeMessage = "";
+ 	}
+ 
+-	// Check for new version on every 10 runs.
+-	// Sometimes the download may not be finished when the main screen shows (if the user dismisses the
+-	// splash screen quickly), but then we'll just show the notification next time instead, we store the
+-	// upgrade number in the ini.
+-	if (iRunCount % 10 == 0 && bCheckForNewVersion) {
+-		std::shared_ptr<http::Download> dl = g_DownloadManager.StartDownloadWithCallback(
+-			"http://www.ppsspp.org/version.json", "", &DownloadCompletedCallback);
+-		dl->SetHidden(true);
+-	}
+-
+ 	INFO_LOG(LOADER, "Loading controller config: %s", controllerIniFilename_.c_str());
+ 	bSaveSettings = true;
+ 
+diff --git a/Core/Config.h b/Core/Config.h
+index 084eacc94..e7134cab5 100644
+--- a/Core/Config.h
++++ b/Core/Config.h
+@@ -99,7 +99,6 @@ struct Config {
+ 	bool bIgnoreBadMemAccess;
+ 	bool bFastMemory;
+ 	int iCpuCore;
+-	bool bCheckForNewVersion;
+ 	bool bForceLagSync;
+ 	bool bFuncReplacements;
+ 	bool bHideSlowWarnings;
+@@ -521,4 +520,3 @@ std::string CreateRandMAC();
+ // TODO: Find a better place for this.
+ extern http::Downloader g_DownloadManager;
+ extern Config g_Config;
+-
+diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp
+index 7713b6587..1d92d1175 100644
+--- a/Qt/QtMain.cpp
++++ b/Qt/QtMain.cpp
+@@ -194,12 +194,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 		return true;
+ 	case SYSPROP_HAS_FILE_BROWSER:
+ 		return true;
+-	case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-		return true;
+-#else
+-		return false;
+-#endif
+ 	default:
+ 		return false;
+ 	}
+diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp
+index 52028d087..d8697d210 100644
+--- a/SDL/SDLMain.cpp
++++ b/SDL/SDLMain.cpp
+@@ -356,12 +356,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 	switch (prop) {
+ 	case SYSPROP_HAS_BACK_BUTTON:
+ 		return true;
+-	case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-		return true;
+-#else
+-		return false;
+-#endif
+ 	default:
+ 		return false;
+ 	}
+diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp
+index f146d099e..625ee124c 100644
+--- a/UI/DevScreens.cpp
++++ b/UI/DevScreens.cpp
+@@ -603,9 +603,6 @@ void SystemInfoScreen::CreateViews() {
+ #ifdef _M_SSE
+ 	buildConfig->Add(new InfoItem("_M_SSE", StringFromFormat("0x%x", _M_SSE)));
+ #endif
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		buildConfig->Add(new InfoItem("GOLD", ""));
+-	}
+ 
+ 	ViewGroup *cpuExtensionsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
+ 	cpuExtensionsScroll->SetTag("DevSystemInfoCPUExt");
+diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp
+index 8202870c7..81112f822 100644
+--- a/UI/GameSettingsScreen.cpp
++++ b/UI/GameSettingsScreen.cpp
+@@ -796,7 +796,6 @@ void GameSettingsScreen::CreateViews() {
+ 	}
+ #endif
+ 
+-	systemSettings->Add(new CheckBox(&g_Config.bCheckForNewVersion, sy->T("VersionCheck", "Check for new versions of PPSSPP")));
+ 	const std::string bgPng = GetSysDirectory(DIRECTORY_SYSTEM) + "background.png";
+ 	const std::string bgJpg = GetSysDirectory(DIRECTORY_SYSTEM) + "background.jpg";
+ 	if (File::Exists(bgPng) || File::Exists(bgJpg)) {
+diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp
+index 43535913d..36834020d 100644
+--- a/UI/MainScreen.cpp
++++ b/UI/MainScreen.cpp
+@@ -1054,11 +1054,7 @@ void MainScreen::CreateViews() {
+ 	sprintf(versionString, "%s", PPSSPP_GIT_VERSION);
+ 	rightColumnItems->SetSpacing(0.0f);
+ 	LinearLayout *logos = new LinearLayout(ORIENT_HORIZONTAL);
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		logos->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+-	} else {
+-		logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+-	}
++	logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+ 	logos->Add(new ImageView(ImageID("I_LOGO"), IS_DEFAULT, new LinearLayoutParams(Margins(-12, 0, 0, 0))));
+ 	rightColumnItems->Add(logos);
+ 	TextView *ver = rightColumnItems->Add(new TextView(versionString, new LinearLayoutParams(Margins(70, -6, 0, 0))));
+@@ -1070,11 +1066,6 @@ void MainScreen::CreateViews() {
+ 	rightColumnItems->Add(new Choice(mm->T("Game Settings", "Settings")))->OnClick.Handle(this, &MainScreen::OnGameSettings);
+ 	rightColumnItems->Add(new Choice(mm->T("Credits")))->OnClick.Handle(this, &MainScreen::OnCredits);
+ 	rightColumnItems->Add(new Choice(mm->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg);
+-	if (!System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		Choice *gold = rightColumnItems->Add(new Choice(mm->T("Buy PPSSPP Gold")));
+-		gold->OnClick.Handle(this, &MainScreen::OnSupport);
+-		gold->SetIcon(ImageID("I_ICONGOLD"));
+-	}
+ 
+ #if !PPSSPP_PLATFORM(UWP)
+ 	// Having an exit button is against UWP guidelines.
+@@ -1099,28 +1090,6 @@ void MainScreen::CreateViews() {
+ 	} else if (tabHolder_->GetVisibility() != V_GONE) {
+ 		root_->SetDefaultFocusView(tabHolder_);
+ 	}
+-
+-	auto u = GetI18NCategory("Upgrade");
+-
+-	upgradeBar_ = 0;
+-	if (!g_Config.upgradeMessage.empty()) {
+-		upgradeBar_ = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
+-
+-		UI::Margins textMargins(10, 5);
+-		UI::Margins buttonMargins(0, 0);
+-		UI::Drawable solid(0xFFbd9939);
+-		upgradeBar_->SetBG(solid);
+-		upgradeBar_->Add(new TextView(u->T("New version of PPSSPP available") + std::string(": ") + g_Config.upgradeVersion, new LinearLayoutParams(1.0f, textMargins)));
+-		upgradeBar_->Add(new Button(u->T("Download"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDownloadUpgrade);
+-		upgradeBar_->Add(new Button(u->T("Dismiss"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDismissUpgrade);
+-
+-		// Slip in under root_
+-		LinearLayout *newRoot = new LinearLayout(ORIENT_VERTICAL);
+-		newRoot->Add(root_);
+-		newRoot->Add(upgradeBar_);
+-		root_->ReplaceLayoutParams(new LinearLayoutParams(1.0));
+-		root_ = newRoot;
+-	}
+ }
+ 
+ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
+@@ -1128,27 +1097,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
+ 	return UI::EVENT_DONE;
+ }
+ 
+-UI::EventReturn MainScreen::OnDownloadUpgrade(UI::EventParams &e) {
+-#if PPSSPP_PLATFORM(ANDROID)
+-	// Go to app store
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-	} else {
+-		LaunchBrowser("market://details?id=org.ppsspp.ppsspp");
+-	}
+-#else
+-	// Go directly to ppsspp.org and let the user sort it out
+-	LaunchBrowser("https://www.ppsspp.org/downloads.html");
+-#endif
+-	return UI::EVENT_DONE;
+-}
+-
+-UI::EventReturn MainScreen::OnDismissUpgrade(UI::EventParams &e) {
+-	g_Config.DismissUpgrade();
+-	upgradeBar_->SetVisibility(UI::V_GONE);
+-	return UI::EVENT_DONE;
+-}
+-
+ void MainScreen::sendMessage(const char *message, const char *value) {
+ 	// Always call the base class method first to handle the most common messages.
+ 	UIScreenWithBackground::sendMessage(message, value);
+@@ -1319,15 +1267,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) {
+ 	return UI::EVENT_DONE;
+ }
+ 
+-UI::EventReturn MainScreen::OnSupport(UI::EventParams &e) {
+-#ifdef __ANDROID__
+-	LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-#else
+-	LaunchBrowser("https://central.ppsspp.org/buygold");
+-#endif
+-	return UI::EVENT_DONE;
+-}
+-
+ UI::EventReturn MainScreen::OnPPSSPPOrg(UI::EventParams &e) {
+ 	LaunchBrowser("https://www.ppsspp.org");
+ 	return UI::EVENT_DONE;
+diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp
+index a6542c65d..f5f101594 100644
+--- a/UI/MiscScreens.cpp
++++ b/UI/MiscScreens.cpp
+@@ -498,11 +498,7 @@ void LogoScreen::render() {
+ 	char temp[256];
+ 	// Manually formatting UTF-8 is fun.  \xXX doesn't work everywhere.
+ 	snprintf(temp, sizeof(temp), "%s Henrik Rydg%c%crd", cr->T("created", "Created by"), 0xC3, 0xA5);
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		dc.Draw()->DrawImage(ImageID("I_ICONGOLD"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+-	} else {
+-		dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+-	}
++	dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+ 	dc.Draw()->DrawImage(ImageID("I_LOGO"), bounds.centerX() + 40, bounds.centerY() - 30, 1.5f, textColor, ALIGN_CENTER);
+ 	//dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", xres / 2, yres / 2 - 30, textColor, ALIGN_CENTER);
+ 	dc.SetFontScale(1.0f, 1.0f);
+@@ -538,10 +534,6 @@ void CreditsScreen::CreateViews() {
+ 	// Really need to redo this whole layout with some linear layouts...
+ 
+ 	int rightYOffset = 0;
+-	if (!System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		root_->Add(new Button(cr->T("Buy Gold"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, 84, false)))->OnClick.Handle(this, &CreditsScreen::OnSupport);
+-		rightYOffset = 74;
+-	}
+ 	root_->Add(new Button(cr->T("PPSSPP Forums"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 158, false)))->OnClick.Handle(this, &CreditsScreen::OnForums);
+ 	root_->Add(new Button(cr->T("Discord"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 232, false)))->OnClick.Handle(this, &CreditsScreen::OnDiscord);
+ 	root_->Add(new Button("www.ppsspp.org", new AnchorLayoutParams(260, 64, 10, NONE, NONE, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnPPSSPPOrg);
+@@ -550,20 +542,7 @@ void CreditsScreen::CreateViews() {
+ #if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS)
+ 	root_->Add(new Button(cr->T("Share PPSSPP"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, rightYOffset + 158, false)))->OnClick.Handle(this, &CreditsScreen::OnShare);
+ #endif
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		root_->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-	} else {
+-		root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-	}
+-}
+-
+-UI::EventReturn CreditsScreen::OnSupport(UI::EventParams &e) {
+-#ifdef __ANDROID__
+-	LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-#else
+-	LaunchBrowser("https://central.ppsspp.org/buygold");
+-#endif
+-	return UI::EVENT_DONE;
++	root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+ }
+ 
+ UI::EventReturn CreditsScreen::OnTwitter(UI::EventParams &e) {
+@@ -747,11 +726,7 @@ void CreditsScreen::render() {
+ 
+ 	// TODO: This is kinda ugly, done on every frame...
+ 	char temp[256];
+-	if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-		snprintf(temp, sizeof(temp), "PPSSPP Gold %s", PPSSPP_GIT_VERSION);
+-	} else {
+-		snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
+-	}
++	snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
+ 	credits[0] = (const char *)temp;
+ 
+ 	UIContext &dc = *screenManager()->getUIContext();
+diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp
+index 24f3b964d..1d66ba7ee 100644
+--- a/UWP/PPSSPP_UWPMain.cpp
++++ b/UWP/PPSSPP_UWPMain.cpp
+@@ -399,12 +399,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 		return false;
+ 	case SYSPROP_HAS_BACK_BUTTON:
+ 		return true;
+-	case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-		return true;
+-#else
+-		return false;
+-#endif
+ 	default:
+ 		return false;
+ 	}
+diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp
+index b5e1bb0eb..71b29b48a 100644
+--- a/Windows/MainWindowMenu.cpp
++++ b/Windows/MainWindowMenu.cpp
+@@ -1377,7 +1377,7 @@ namespace MainWindow {
+ 		{
+ 			W32Util::CenterWindow(hDlg);
+ 			HWND versionBox = GetDlgItem(hDlg, IDC_VERSION);
+-			std::string windowText = System_GetPropertyBool(SYSPROP_APP_GOLD) ? "PPSSPP Gold " : "PPSSPP ";
++			std::string windowText = "PPSSPP ";
+ 			windowText.append(PPSSPP_GIT_VERSION);
+ 			SetWindowText(versionBox, ConvertUTF8ToWString(windowText).c_str());
+ 		}
+diff --git a/Windows/main.cpp b/Windows/main.cpp
+index 3795597e2..fd98d0453 100644
+--- a/Windows/main.cpp
++++ b/Windows/main.cpp
+@@ -268,12 +268,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 		return true;
+ 	case SYSPROP_HAS_BACK_BUTTON:
+ 		return true;
+-	case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-		return true;
+-#else
+-		return false;
+-#endif
+ 	default:
+ 		return false;
+ 	}
+diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp
+index 086371085..0a340c0ae 100644
+--- a/android/jni/app-android.cpp
++++ b/android/jni/app-android.cpp
+@@ -372,12 +372,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+ 		return true;
+ 	case SYSPROP_HAS_IMAGE_BROWSER:
+ 		return true;
+-	case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-		return true;
+-#else
+-		return false;
+-#endif
+ 	default:
+ 		return false;
+ 	}
+-- 
+2.26.2
+
diff --git a/gnu/packages/patches/python-aionotify-0.2.0-py3.8.patch b/gnu/packages/patches/python-aionotify-0.2.0-py3.8.patch
new file mode 100644
index 0000000000..ebeef34720
--- /dev/null
+++ b/gnu/packages/patches/python-aionotify-0.2.0-py3.8.patch
@@ -0,0 +1,48 @@
+Compatibility with Python 3.8, see upstream issue
+https://github.com/rbarrois/aionotify/pull/15
+
+diff --git a/setup.py b/setup.py
+index 21a554f..094de64 100755
+--- a/setup.py
++++ b/setup.py
+@@ -40,7 +40,7 @@ setup(
+     setup_requires=[
+     ],
+     tests_require=[
+-        'asynctest',
++        'asynctest; python_version<"3.8"',
+     ],
+     classifiers=[
+         "Development Status :: 4 - Beta",
+diff --git a/tests/test_usage.py b/tests/test_usage.py
+index f156291..0476ff1 100644
+--- a/tests/test_usage.py
++++ b/tests/test_usage.py
+@@ -8,7 +8,11 @@ import os.path
+ import tempfile
+ import unittest
+ 
+-import asynctest
++try:
++    testBase = unittest.IsolatedAsyncioTestCase
++except AttributeError:
++    import asynctest
++    testBase = asynctest.TestCase
+ 
+ import aionotify
+ 
+@@ -25,11 +29,13 @@ if AIODEBUG:
+ TESTDIR = os.environ.get('AIOTESTDIR') or os.path.join(os.path.dirname(__file__), 'testevents')
+ 
+ 
+-class AIONotifyTestCase(asynctest.TestCase):
++class AIONotifyTestCase(testBase):
+     forbid_get_event_loop = True
+     timeout = 3
+ 
+     def setUp(self):
++        if not getattr (self, 'loop', None):
++            self.loop = asyncio.get_event_loop()
+         if AIODEBUG:
+             self.loop.set_debug(True)
+         self.watcher = aionotify.Watcher()
diff --git a/gnu/packages/patches/python-tinycss2-flake8-compat.patch b/gnu/packages/patches/python-tinycss2-flake8-compat.patch
new file mode 100644
index 0000000000..a66eb42fa1
--- /dev/null
+++ b/gnu/packages/patches/python-tinycss2-flake8-compat.patch
@@ -0,0 +1,36 @@
+Fix test failure that occurs with recent versions of Flake8.
+
+Taken from upstream:
+https://github.com/Kozea/tinycss2/commit/6556604fb98c2153412384d6f0f705db2da1aa60
+
+diff --git a/tinycss2/css-parsing-tests/make_color3_hsl.py b/tinycss2/css-parsing-tests/make_color3_hsl.py
+index d1fd3a6..56fda0c 100644
+--- a/tinycss2/css-parsing-tests/make_color3_hsl.py
++++ b/tinycss2/css-parsing-tests/make_color3_hsl.py
+@@ -8,16 +8,17 @@ def trim(s):
+ print('[')
+ print(',\n'.join(
+     '"hsl%s(%s, %s%%, %s%%%s)", [%s, %s, %s, %s]' % (
+-        ('a' if a is not None else '', h,
+-         trim(str(s / 10.)), trim(str(l / 10.)),
+-         ', %s' % a if a is not None else '') +
++        ('a' if alpha is not None else '', hue,
++         trim(str(saturation / 10.)), trim(str(light / 10.)),
++         ', %s' % alpha if alpha is not None else '') +
+         tuple(trim(str(round(v, 10)))
+-              for v in colorsys.hls_to_rgb(h / 360., l / 1000., s / 1000.)) +
+-        (a if a is not None else 1,)
++              for v in colorsys.hls_to_rgb(
++                hue / 360., light / 1000., saturation / 1000.)) +
++        (alpha if alpha is not None else 1,)
+     )
+-    for a in [None, 1, .2, 0]
+-    for l in range(0, 1001, 125)
+-    for s in range(0, 1001, 125)
+-    for h in range(0, 360, 30)
++    for alpha in [None, 1, .2, 0]
++    for light in range(0, 1001, 125)
++    for saturation in range(0, 1001, 125)
++    for hue in range(0, 360, 30)
+ ))
+ print(']')
diff --git a/gnu/packages/patches/qtbase-absolute-runpath.patch b/gnu/packages/patches/qtbase-absolute-runpath.patch
new file mode 100644
index 0000000000..cec4ddc0a3
--- /dev/null
+++ b/gnu/packages/patches/qtbase-absolute-runpath.patch
@@ -0,0 +1,17 @@
+Do not use $ORIGIN in RUNPATH so that executables can be copied elsewhere and
+still be expected to work (needed for python-pyside-2-tools).
+
+diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
+--- a/mkspecs/common/linux.conf
++++ b/mkspecs/common/linux.conf
+@@ -10,8 +10,8 @@ QMAKE_CFLAGS_THREAD    += -D_REENTRANT
+ QMAKE_CXXFLAGS_THREAD  += $$QMAKE_CFLAGS_THREAD
+ QMAKE_LFLAGS_GCSECTIONS = -Wl,--gc-sections
+ 
+-QMAKE_LFLAGS_REL_RPATH  = -Wl,-z,origin
+-QMAKE_REL_RPATH_BASE    = $ORIGIN
++QMAKE_LFLAGS_REL_RPATH  =
++QMAKE_REL_RPATH_BASE    =
+ 
+ QMAKE_INCDIR            =
+ QMAKE_LIBDIR            =
diff --git a/gnu/packages/patches/ruby-rubocop-break-dependency-cycle.patch b/gnu/packages/patches/ruby-rubocop-break-dependency-cycle.patch
new file mode 100644
index 0000000000..035a98fa33
--- /dev/null
+++ b/gnu/packages/patches/ruby-rubocop-break-dependency-cycle.patch
@@ -0,0 +1,101 @@
+From ff3f00b7f33332ebf1c3c05abc4a781684775b3c Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Tue, 14 Jul 2020 11:50:12 -0400
+Subject: [PATCH] config: Drop rubocop-performance, rubocop-rspec requirements.
+
+This patch removes Rubocop extensions from Rubocop's closure to break
+a dependency cycle with itself.
+
+* .rubocop.yml: Remove rubocop-performance and rubocop-rspec and their
+corresponding directives.
+* .rubocop_todo.yml: Likewise.
+---
+ .rubocop.yml      | 15 ---------------
+ .rubocop_todo.yml | 44 --------------------------------------------
+ 2 files changed, 59 deletions(-)
+
+diff --git a/.rubocop.yml b/.rubocop.yml
+index 4f05d5be2..f12ef7c06 100644
+--- a/.rubocop.yml
++++ b/.rubocop.yml
+@@ -3,8 +3,6 @@
+ inherit_from: .rubocop_todo.yml
+ require:
+   - rubocop/cop/internal_affairs
+-  - rubocop-performance
+-  - rubocop-rspec
+ 
+ AllCops:
+   NewCops: enable
+@@ -106,16 +104,3 @@ Metrics/ClassLength:
+ Metrics/ModuleLength:
+   Exclude:
+     - 'spec/**/*.rb'
+-
+-RSpec/FilePath:
+-  Exclude:
+-    - spec/rubocop/formatter/junit_formatter_spec.rb
+-
+-RSpec/PredicateMatcher:
+-  EnforcedStyle: explicit
+-
+-RSpec/MessageSpies:
+-  EnforcedStyle: receive
+-
+-RSpec/NestedGroups:
+-  Max: 7
+diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
+index 3f72042d1..fa637cd42 100644
+--- a/.rubocop_todo.yml
++++ b/.rubocop_todo.yml
+@@ -24,47 +24,3 @@ Metrics/MethodLength:
+ # Configuration parameters: CountComments.
+ Metrics/ModuleLength:
+   Max: 132
+-
+-# Offense count: 10
+-RSpec/AnyInstance:
+-  Exclude:
+-    - 'spec/rubocop/cli_spec.rb'
+-    - 'spec/rubocop/cop/lint/duplicate_methods_spec.rb'
+-    - 'spec/rubocop/cop/team_spec.rb'
+-    - 'spec/rubocop/target_finder_spec.rb'
+-
+-# Offense count: 981
+-# Configuration parameters: Prefixes.
+-# Prefixes: when, with, without
+-RSpec/ContextWording:
+-  Enabled: false
+-
+-# Offense count: 3810
+-# Configuration parameters: Max.
+-RSpec/ExampleLength:
+-  Enabled: false
+-
+-# Offense count: 38
+-RSpec/ExpectOutput:
+-  Exclude:
+-    - 'spec/rubocop/cli/cli_auto_gen_config_spec.rb'
+-    - 'spec/rubocop/cli/cli_options_spec.rb'
+-    - 'spec/rubocop/config_spec.rb'
+-    - 'spec/rubocop/cop/cop_spec.rb'
+-    - 'spec/rubocop/formatter/disabled_config_formatter_spec.rb'
+-    - 'spec/rubocop/formatter/formatter_set_spec.rb'
+-    - 'spec/rubocop/options_spec.rb'
+-    - 'spec/rubocop/rake_task_spec.rb'
+-    - 'spec/rubocop/result_cache_spec.rb'
+-    - 'spec/rubocop/target_finder_spec.rb'
+-
+-# Offense count: 434
+-RSpec/MultipleExpectations:
+-  Max: 25
+-
+-# Offense count: 5
+-RSpec/SubjectStub:
+-  Exclude:
+-    - 'spec/rubocop/config_spec.rb'
+-    - 'spec/rubocop/formatter/json_formatter_spec.rb'
+-    - 'spec/rubocop/formatter/progress_formatter_spec.rb'
+-- 
+2.27.0
+
diff --git a/gnu/packages/patches/rust-1.45-linker-locale.patch b/gnu/packages/patches/rust-1.45-linker-locale.patch
new file mode 100644
index 0000000000..40220e8e77
--- /dev/null
+++ b/gnu/packages/patches/rust-1.45-linker-locale.patch
@@ -0,0 +1,14 @@
+Patch will be included upstream in 1.47: https://github.com/rust-lang/rust/pull/74416
+diff --git a/src/librustc_codegen_ssa/back/linker.rs b/src/librustc_codegen_ssa/back/linker.rs
+index e64aafa599f..12575ac4358 100644
+--- a/src/librustc_codegen_ssa/back/linker.rs
++++ b/src/librustc_codegen_ssa/back/linker.rs
+@@ -28,7 +28,7 @@ use rustc_target::spec::{LinkOutputKind, LinkerFlavor, LldFlavor};
+ pub fn disable_localization(linker: &mut Command) {
+     // No harm in setting both env vars simultaneously.
+     // Unix-style linkers.
+-    linker.env("LC_ALL", "C");
++    linker.env("LC_ALL", "en_US.UTF-8");
+     // MSVC's `link.exe`.
+     linker.env("VSLANG", "1033");
+ }
diff --git a/gnu/packages/patches/sqlite-hurd.patch b/gnu/packages/patches/sqlite-hurd.patch
new file mode 100644
index 0000000000..d80a2c5be8
--- /dev/null
+++ b/gnu/packages/patches/sqlite-hurd.patch
@@ -0,0 +1,58 @@
+Adapted from Debian: https://sources.debian.org/patches/sqlite3/3.32.3-1/20-hurd-locking-style.patch
+Upstream status: Not upstreamed.
+
+This patch is needed to get offloading to work.
+
+Sqlite can use simple file locking mode, but that does not work for the Hurd;
+a second sqlite process fails with a "locking protocol" error.
+
+See also: https://bugs.debian.org/529734.
+
+diff -purN sqlite-autoconf-3310100/sqlite3.c sqlite-autoconf-3310100-/sqlite3.c
+--- sqlite-autoconf-3310100/sqlite3.c	2020-01-27 21:25:19.000000000 +0100
++++ sqlite-autoconf-3310100-/sqlite3.c	2020-07-01 11:50:13.768333806 +0200
+@@ -33189,7 +33189,7 @@ SQLITE_PRIVATE const char *sqlite3Opcode
+ # include <sys/mman.h>
+ #endif
+ 
+-#if SQLITE_ENABLE_LOCKING_STYLE
++#if SQLITE_ENABLE_LOCKING_STYLE || defined(__GNU__)
+ /* # include <sys/ioctl.h> */
+ # include <sys/file.h>
+ # include <sys/param.h>
+@@ -35676,7 +35676,7 @@ static int dotlockClose(sqlite3_file *id
+ **
+ ** Omit this section if SQLITE_ENABLE_LOCKING_STYLE is turned off
+ */
+-#if SQLITE_ENABLE_LOCKING_STYLE
++#if SQLITE_ENABLE_LOCKING_STYLE || defined(__GNU__)
+ 
+ /*
+ ** Retry flock() calls that fail with EINTR
+@@ -38586,7 +38586,7 @@ IOMETHODS(
+   0                         /* xShmMap method */
+ )
+ 
+-#if SQLITE_ENABLE_LOCKING_STYLE
++#if SQLITE_ENABLE_LOCKING_STYLE || defined(__GNU__)
+ IOMETHODS(
+   flockIoFinder,            /* Finder function name */
+   flockIoMethods,           /* sqlite3_io_methods object name */
+@@ -41142,6 +41142,8 @@ SQLITE_API int sqlite3_os_init(void){
+     UNIXVFS("unix",          autolockIoFinder ),
+ #elif OS_VXWORKS
+     UNIXVFS("unix",          vxworksIoFinder ),
++#elif defined(__GNU__)
++    UNIXVFS("unix",          flockIoFinder ),
+ #else
+     UNIXVFS("unix",          posixIoFinder ),
+ #endif
+@@ -41151,7 +41153,7 @@ SQLITE_API int sqlite3_os_init(void){
+ #if OS_VXWORKS
+     UNIXVFS("unix-namedsem", semIoFinder ),
+ #endif
+-#if SQLITE_ENABLE_LOCKING_STYLE || OS_VXWORKS
++#if SQLITE_ENABLE_LOCKING_STYLE || OS_VXWORKS || defined(__GNU__)
+     UNIXVFS("unix-posix",    posixIoFinder ),
+ #endif
+ #if SQLITE_ENABLE_LOCKING_STYLE
diff --git a/gnu/packages/patches/sssd-fix-samba.patch b/gnu/packages/patches/sssd-fix-samba.patch
new file mode 100644
index 0000000000..714968337a
--- /dev/null
+++ b/gnu/packages/patches/sssd-fix-samba.patch
@@ -0,0 +1,50 @@
+From bc56b10aea999284458dcc293b54cf65288e325d Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh@redhat.com>
+Date: Fri, 24 Jan 2020 15:17:39 +0100
+Subject: [PATCH] Fix build failure against samba 4.12.0rc1
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The ndr_pull_get_switch() function was dropped, but it was just a wrapper
+around the ndr_token_peek() function, so we can use this approach on both
+old and new versions of libndr.
+
+Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
+
+Reviewed-by: Pavel Březina <pbrezina@redhat.com>
+---
+ src/providers/ad/ad_gpo_ndr.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/providers/ad/ad_gpo_ndr.c b/src/providers/ad/ad_gpo_ndr.c
+index d573033494..8f405aa62b 100644
+--- a/src/providers/ad/ad_gpo_ndr.c
++++ b/src/providers/ad/ad_gpo_ndr.c
+@@ -105,7 +105,7 @@ ndr_pull_security_ace_object_type(struct ndr_pull *ndr,
+                                   union security_ace_object_type *r)
+ {
+     uint32_t level;
+-    level = ndr_pull_get_switch_value(ndr, r);
++    level = ndr_token_peek(&ndr->switch_list, r);
+     NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
+     if (ndr_flags & NDR_SCALARS) {
+         NDR_CHECK(ndr_pull_union_align(ndr, 4));
+@@ -135,7 +135,7 @@ ndr_pull_security_ace_object_inherited_type(struct ndr_pull *ndr,
+                                             union security_ace_object_inherited_type *r)
+ {
+     uint32_t level;
+-    level = ndr_pull_get_switch_value(ndr, r);
++    level = ndr_token_peek(&ndr->switch_list, r);
+     NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
+     if (ndr_flags & NDR_SCALARS) {
+         NDR_CHECK(ndr_pull_union_align(ndr, 4));
+@@ -198,7 +198,7 @@ ndr_pull_security_ace_object_ctr(struct ndr_pull *ndr,
+                                  union security_ace_object_ctr *r)
+ {
+     uint32_t level;
+-    level = ndr_pull_get_switch_value(ndr, r);
++    level = ndr_token_peek(&ndr->switch_list, r);
+     NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
+     if (ndr_flags & NDR_SCALARS) {
+         NDR_CHECK(ndr_pull_union_align(ndr, 4));
diff --git a/gnu/packages/patches/tao-add-missing-headers.patch b/gnu/packages/patches/tao-add-missing-headers.patch
new file mode 100644
index 0000000000..f117281993
--- /dev/null
+++ b/gnu/packages/patches/tao-add-missing-headers.patch
@@ -0,0 +1,102 @@
+Taken from Debian:
+https://salsa.debian.org/multimedia-team/taopm/-/raw/master/debian/patches/01-add-missing-headers.diff
+
+Description: Adding missing headers
+Author: Tiago Bortoletto Vaz <tiago@debian.org>
+Last-Update: 2013-04-17
+--- a/libtao/Tao.cc
++++ b/libtao/Tao.cc
+@@ -18,6 +18,7 @@
+ 
+ #include "Tao.h"
+ #include <iostream>
++#include <stdio.h>
+ 
+ extern Tao tao;
+ float &Time = tao.synthesisEngine.time;
+--- a/libtao/TaoDevice.cc
++++ b/libtao/TaoDevice.cc
+@@ -20,6 +20,7 @@
+ #include "Tao.h"
+ #include "TaoAccessPoint.h"
+ #include "TaoInstrument.h"
++#include <cstring>
+ 
+ TaoDevice::TaoDevice()
+     {
+--- a/libtao/TaoInstrument.cc
++++ b/libtao/TaoInstrument.cc
+@@ -23,6 +23,7 @@
+ //#include <sys/types.h>
+ #include <iostream>
+ #include <cmath>
++#include <cstring>
+ 
+ float TaoInstrument::defaultMass=3.5;		// Set to optimum value for
+                                                 // frequency response of
+--- a/libtao/TaoOutput.cc
++++ b/libtao/TaoOutput.cc
+@@ -24,6 +24,7 @@
+ #include <fstream>
+ #include "TaoOutput.h"
+ #include "Tao.h"
++#include <cstring>
+ 
+ extern Tao tao;
+ 
+--- a/libtao/TaoPitch.cc
++++ b/libtao/TaoPitch.cc
+@@ -30,6 +30,7 @@
+ #include "TaoPitch.h"
+ #include <iostream>

+ #include <cmath>
++#include <cstring>
+ 
+ // This class allows pitches and frequencies to be specified in a number of
+ // different formats including the following:
+--- a/taoparse/taoparser.yy
++++ b/taoparse/taoparser.yy
+@@ -19,7 +19,8 @@
+ 
+ #include <iostream>
+ #include <sstream>
+-#include <string>
++#include <cstring>
++#include <stdio.h>
+ #include "taoparserdefs.h"
+ 
+ int yyerror(char *s);
+--- a/libtao/TaoGraphicsEngine.cc
++++ b/libtao/TaoGraphicsEngine.cc
+@@ -27,7 +27,8 @@
+ #include "TaoInstrument.h"
+ #include "TaoAccessPoint.h"
+ #include "TaoDevice.h"
+-#include <string>
++#include <cstring>
++#include <stdio.h>
+     
+ extern Tao tao;
+ extern void taoMasterTick();
+--- a/tao2aiff/tao2aiff.cc
++++ b/tao2aiff/tao2aiff.cc
+@@ -25,6 +25,8 @@
+ #include <cmath>
+ #include "audiofile.h"
+ #include "tao2aiff.h"
++#include <cstdlib>
++#include <cstring>
+ 
+ 
+ main(int argc, char **argv)
+--- a/tao2wav/tao2wav.cc
++++ b/tao2wav/tao2wav.cc
+@@ -25,6 +25,8 @@
+ #include <cmath>
+ #include "audiofile.h"
+ #include "tao2wav.h"
++#include <cstdlib>
++#include <cstring>
+ 
+ main(int argc, char **argv)
+     {
diff --git a/gnu/packages/patches/tao-fix-parser-types.patch b/gnu/packages/patches/tao-fix-parser-types.patch
new file mode 100644
index 0000000000..5dcf3fc2ea
--- /dev/null
+++ b/gnu/packages/patches/tao-fix-parser-types.patch
@@ -0,0 +1,26 @@
+Taken from Debian:
+https://salsa.debian.org/multimedia-team/taopm/-/raw/master/debian/patches/02-fix-parser-yyerror.diff
+
+Description: Use a constant char, dummy comment.
+Author: Tiago Bortoletto Vaz <tiago@debian.org>
+Last-Update: 2013-04-17
+--- a/taoparse/taoparser.yy
++++ b/taoparse/taoparser.yy
+@@ -23,7 +23,7 @@
+ #include <stdio.h>
+ #include "taoparserdefs.h"
+ 
+-int yyerror(char *s);
++int yyerror(const char *s);
+ 
+ //#ifdef LINUX
+ int yylex(void);
+@@ -2924,7 +2924,7 @@
+     } 
+ 
+ 
+-int yyerror (char *s)
++int yyerror (const char *s)
+     {
+     parse_error(what_I_expected_here);
+     std::cout << "PARSE_FAILED";
diff --git a/gnu/packages/patches/transmission-CVE-2018-10756.patch b/gnu/packages/patches/transmission-CVE-2018-10756.patch
deleted file mode 100644
index f9bdcf60aa..0000000000
--- a/gnu/packages/patches/transmission-CVE-2018-10756.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-Fix CVE-2018-10756:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10756
-
-Patch copied from Fedora:
-
-https://src.fedoraproject.org/rpms/transmission/blob/master/f/2123adf8e5e1c2b48791f9d22fc8c747e974180e.patch
-
---- a/libtransmission/variant.c	2018-05-01 12:21:08.000000000 -0500
-+++ b/libtransmission/variant.c	2020-05-18 10:21:27.554214128 -0500
-@@ -820,7 +820,7 @@
- struct SaveNode
- {
-   const tr_variant * v;
--  tr_variant sorted;
-+  tr_variant* sorted;
-   size_t childIndex;
-   bool isVisited;
- };
-@@ -849,26 +849,33 @@
- 
-       qsort (tmp, n, sizeof (struct KeyIndex), compareKeyIndex);
- 
--      tr_variantInitDict (&node->sorted, n);
-+      node->sorted = tr_new(tr_variant, 1);
-+      tr_variantInitDict (node->sorted, n);
-       for (i=0; i<n; ++i)
--        node->sorted.val.l.vals[i] = *tmp[i].val;
-+        node->sorted->val.l.vals[i] = *tmp[i].val;
-       node->sorted.val.l.count = n;
- 
-       tr_free (tmp);
- 
--      node->v = &node->sorted;
-+      v = node->sorted;
-     }
-   else
-     {
--      node->v = v;
-+      node->sorted = NULL;
-     }
-+    
-+    node->v = v;
- }
- 
- static void
- nodeDestruct (struct SaveNode * node)
- {
--  if (node->v == &node->sorted)
--    tr_free (node->sorted.val.l.vals);
-+    //TR_ASSERT(node != NULL);
-+    if (node->sorted != NULL)
-+    {
-+        tr_free(node->sorted->val.l.vals);
-+        tr_free(node->sorted);    
-+    }
- }
- 
- /**
---- a/libtransmission/variant.c	2020-05-18 10:21:49.000000000 -0500
-+++ b/libtransmission/variant.c	2020-05-18 10:24:34.673648865 -0500
-@@ -853,7 +853,7 @@
-       tr_variantInitDict (node->sorted, n);
-       for (i=0; i<n; ++i)
-         node->sorted->val.l.vals[i] = *tmp[i].val;
--      node->sorted.val.l.count = n;
-+      node->sorted->val.l.count = n;
- 
-       tr_free (tmp);
- 
-
diff --git a/gnu/packages/patches/u-boot-DT-for-Pinebook-Pro.patch b/gnu/packages/patches/u-boot-DT-for-Pinebook-Pro.patch
deleted file mode 100644
index f88d12f1e2..0000000000
--- a/gnu/packages/patches/u-boot-DT-for-Pinebook-Pro.patch
+++ /dev/null
@@ -1,1132 +0,0 @@
-From b128c2e0b480ee992fabe554d19cd471efb11095 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 20:27:35 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420192736.962307-5-pbrobinson@gmail.com/
-Subject: [PATCH 4/5] arm: dts: rockchip: Add initial DT for Pinebook Pro
-
-Sync initial support for Pinebook Pro device tree from Linux 5.7-rc1.
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- arch/arm/dts/Makefile                |    1 +
- arch/arm/dts/rk3399-pinebook-pro.dts | 1096 ++++++++++++++++++++++++++
- 2 files changed, 1097 insertions(+)
- create mode 100644 arch/arm/dts/rk3399-pinebook-pro.dts
-
-diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
-index 820ee9733a..885bf0ef58 100644
---- a/arch/arm/dts/Makefile
-+++ b/arch/arm/dts/Makefile
-@@ -125,6 +125,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
- 	rk3399-nanopi-m4.dtb \
- 	rk3399-nanopi-neo4.dtb \
- 	rk3399-orangepi.dtb \
-+	rk3399-pinebook-pro.dtb \
- 	rk3399-puma-ddr1333.dtb \
- 	rk3399-puma-ddr1600.dtb \
- 	rk3399-puma-ddr1866.dtb \
-diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts
-new file mode 100644
-index 0000000000..294d21bf45
---- /dev/null
-+++ b/arch/arm/dts/rk3399-pinebook-pro.dts
-@@ -0,0 +1,1096 @@
-+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-+/*
-+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
-+ * Copyright (c) 2018 Akash Gajjar <Akash_Gajjar@mentor.com>
-+ * Copyright (c) 2020 Tobias Schramm <t.schramm@manjaro.org>
-+ */
-+
-+/dts-v1/;
-+#include <dt-bindings/input/gpio-keys.h>
-+#include <dt-bindings/input/linux-event-codes.h>
-+#include <dt-bindings/pwm/pwm.h>
-+#include <dt-bindings/usb/pd.h>
-+#include <dt-bindings/leds/common.h>
-+#include "rk3399.dtsi"
-+#include "rk3399-opp.dtsi"
-+
-+/ {
-+	model = "Pine64 Pinebook Pro";
-+	compatible = "pine64,pinebook-pro", "rockchip,rk3399";
-+
-+	chosen {
-+		stdout-path = "serial2:1500000n8";
-+	};
-+
-+	backlight: edp-backlight {
-+		compatible = "pwm-backlight";
-+		power-supply = <&vcc_12v>;
-+		pwms = <&pwm0 0 740740 0>;
-+	};
-+
-+	edp_panel: edp-panel {
-+		compatible = "boe,nv140fhmn49";
-+		backlight = <&backlight>;
-+		enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&panel_en_gpio>;
-+		power-supply = <&vcc3v3_panel>;
-+
-+		ports {
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+
-+			port@0 {
-+				reg = <0>;
-+				#address-cells = <1>;
-+				#size-cells = <0>;
-+
-+				panel_in_edp: endpoint@0 {
-+					reg = <0>;
-+					remote-endpoint = <&edp_out_panel>;
-+				};
-+			};
-+		};
-+	};
-+
-+	/*
-+	 * Use separate nodes for gpio-keys to allow for selective deactivation
-+	 * of wakeup sources via sysfs without disabling the whole key
-+	 */
-+	gpio-key-lid {
-+		compatible = "gpio-keys";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&lidbtn_gpio>;
-+
-+		lid {
-+			debounce-interval = <20>;
-+			gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>;
-+			label = "Lid";
-+			linux,code = <SW_LID>;
-+			linux,input-type = <EV_SW>;
-+			wakeup-event-action = <EV_ACT_DEASSERTED>;
-+			wakeup-source;
-+		};
-+	};
-+
-+	gpio-key-power {
-+		compatible = "gpio-keys";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&pwrbtn_gpio>;
-+
-+		power {
-+			debounce-interval = <20>;
-+			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
-+			label = "Power";
-+			linux,code = <KEY_POWER>;
-+			wakeup-source;
-+		};
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&pwrled_gpio &slpled_gpio>;
-+
-+		green-led {
-+			color = <LED_COLOR_ID_GREEN>;
-+			default-state = "on";
-+			function = LED_FUNCTION_POWER;
-+			gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
-+			label = "green:power";
-+		};
-+
-+		red-led {
-+			color = <LED_COLOR_ID_RED>;
-+			default-state = "off";
-+			function = LED_FUNCTION_STANDBY;
-+			gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
-+			label = "red:standby";
-+			panic-indicator;
-+			retain-state-suspended;
-+		};
-+	};
-+
-+	/* Power sequence for SDIO WiFi module */
-+	sdio_pwrseq: sdio-pwrseq {
-+		compatible = "mmc-pwrseq-simple";
-+		clocks = <&rk808 1>;
-+		clock-names = "ext_clock";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&wifi_enable_h_gpio>;
-+		post-power-on-delay-ms = <100>;
-+		power-off-delay-us = <500000>;
-+
-+		/* WL_REG_ON on module */
-+		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
-+	};
-+
-+	/* Audio components */
-+	es8316-sound {
-+		compatible = "simple-audio-card";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&hp_det_gpio>;
-+		simple-audio-card,name = "rockchip,es8316-codec";
-+		simple-audio-card,format = "i2s";
-+		simple-audio-card,mclk-fs = <256>;
-+
-+		simple-audio-card,widgets =
-+			"Microphone", "Mic Jack",
-+			"Headphone", "Headphones",
-+			"Speaker", "Speaker";
-+		simple-audio-card,routing =
-+			"MIC1", "Mic Jack",
-+			"Headphones", "HPOL",
-+			"Headphones", "HPOR",
-+			"Speaker Amplifier INL", "HPOL",
-+			"Speaker Amplifier INR", "HPOR",
-+			"Speaker", "Speaker Amplifier OUTL",
-+			"Speaker", "Speaker Amplifier OUTR";
-+
-+		simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
-+		simple-audio-card,aux-devs = <&speaker_amp>;
-+		simple-audio-card,pin-switches = "Speaker";
-+
-+		simple-audio-card,cpu {
-+			sound-dai = <&i2s1>;
-+		};
-+
-+		simple-audio-card,codec {
-+			sound-dai = <&es8316>;
-+		};
-+	};
-+
-+	speaker_amp: speaker-amplifier {
-+		compatible = "simple-audio-amplifier";
-+		enable-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
-+		sound-name-prefix = "Speaker Amplifier";
-+		VCC-supply = <&pa_5v>;
-+	};
-+
-+	/* Power tree */
-+	/* Root power source */
-+	vcc_sysin: vcc-sysin {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc_sysin";
-+		regulator-always-on;
-+		regulator-boot-on;
-+	};
-+
-+	/* Regulators supplied by vcc_sysin */
-+	/* LCD backlight supply */
-+	vcc_12v: vcc-12v {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc_12v";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <12000000>;
-+		regulator-max-microvolt = <12000000>;
-+		vin-supply = <&vcc_sysin>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* Main 3.3 V supply */
-+	vcc3v3_sys: wifi_bat: vcc3v3-sys {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc3v3_sys";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <3300000>;
-+		regulator-max-microvolt = <3300000>;
-+		vin-supply = <&vcc_sysin>;
-+
-+		regulator-state-mem {
-+			regulator-on-in-suspend;
-+		};
-+	};
-+
-+	/* 5 V USB power supply */
-+	vcc5v0_usb: pa_5v: vcc5v0-usb-regulator {
-+		compatible = "regulator-fixed";
-+		enable-active-high;
-+		gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&pwr_5v_gpio>;
-+		regulator-name = "vcc5v0_usb";
-+		regulator-always-on;
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		vin-supply = <&vcc_sysin>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* RK3399 logic supply */
-+	vdd_log: vdd-log {
-+		compatible = "pwm-regulator";
-+		pwms = <&pwm2 0 25000 1>;
-+		regulator-name = "vdd_log";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <800000>;
-+		regulator-max-microvolt = <1400000>;
-+		vin-supply = <&vcc_sysin>;
-+
-+		regulator-state-mem {
-+			regulator-on-in-suspend;
-+		};
-+	};
-+
-+	/* Regulators supplied by vcc3v3_sys */
-+	/* 0.9 V supply, always on */
-+	vcc_0v9: vcc-0v9 {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc_0v9";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <900000>;
-+		regulator-max-microvolt = <900000>;
-+		vin-supply = <&vcc3v3_sys>;
-+	};
-+
-+	/* S3 1.8 V supply, switched by vcc1v8_s3 */
-+	vcca1v8_s3: vcc1v8-s3 {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcca1v8_s3";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <1800000>;
-+		regulator-max-microvolt = <1800000>;
-+		vin-supply = <&vcc3v3_sys>;
-+	};
-+
-+	/* micro SD card power */
-+	vcc3v0_sd: vcc3v0-sd {
-+		compatible = "regulator-fixed";
-+		enable-active-high;
-+		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&sdmmc0_pwr_h_gpio>;
-+		regulator-name = "vcc3v0_sd";
-+		regulator-always-on;
-+		regulator-min-microvolt = <3000000>;
-+		regulator-max-microvolt = <3000000>;
-+		vin-supply = <&vcc3v3_sys>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* LCD panel power, called VCC3V3_S0 in schematic */
-+	vcc3v3_panel: vcc3v3-panel {
-+		compatible = "regulator-fixed";
-+		enable-active-high;
-+		gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&lcdvcc_en_gpio>;
-+		regulator-name = "vcc3v3_panel";
-+		regulator-always-on;
-+		regulator-min-microvolt = <3300000>;
-+		regulator-max-microvolt = <3300000>;
-+		regulator-enable-ramp-delay = <100000>;
-+		vin-supply = <&vcc3v3_sys>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* M.2 adapter power, switched by vcc1v8_s3 */
-+	vcc3v3_ssd: vcc3v3-ssd {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc3v3_ssd";
-+		regulator-min-microvolt = <3300000>;
-+		regulator-max-microvolt = <3300000>;
-+		vin-supply = <&vcc3v3_sys>;
-+	};
-+
-+	/* Regulators supplied by vcc5v0_usb */
-+	/* USB 3 port power supply regulator  */
-+	vcc5v0_otg: vcc5v0-otg {
-+		compatible = "regulator-fixed";
-+		enable-active-high;
-+		gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&vcc5v0_host_en_gpio>;
-+		regulator-name = "vcc5v0_otg";
-+		regulator-always-on;
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		vin-supply = <&vcc5v0_usb>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* Regulators supplied by vcc5v0_usb */
-+	/* Type C port power supply regulator */
-+	vbus_5vout: vbus_typec: vbus-5vout {
-+		compatible = "regulator-fixed";
-+		enable-active-high;
-+		gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&vcc5v0_typec0_en_gpio>;
-+		regulator-name = "vbus_5vout";
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		vin-supply = <&vcc5v0_usb>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	/* Regulators supplied by vcc_1v8 */
-+	/* Primary 0.9 V LDO */
-+	vcca0v9_s3: vcca0v9-s3 {
-+		compatible = "regulator-fixed";
-+		regulator-name = "vcc0v9_s3";
-+		regulator-min-microvolt = <5000000>;
-+		regulator-max-microvolt = <5000000>;
-+		vin-supply = <&vcc_1v8>;
-+
-+		regulator-state-mem {
-+			regulator-on-in-suspend;
-+		};
-+	};
-+
-+	mains_charger: dc-charger {
-+		compatible = "gpio-charger";
-+		charger-type = "mains";
-+		gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>;
-+
-+		/* Also triggered by USB charger */
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&dc_det_gpio>;
-+	};
-+};
-+
-+&cdn_dp {
-+	status = "okay";
-+};
-+
-+&cpu_b0 {
-+	cpu-supply = <&vdd_cpu_b>;
-+};
-+
-+&cpu_b1 {
-+	cpu-supply = <&vdd_cpu_b>;
-+};
-+
-+&cpu_l0 {
-+	cpu-supply = <&vdd_cpu_l>;
-+};
-+
-+&cpu_l1 {
-+	cpu-supply = <&vdd_cpu_l>;
-+};
-+
-+&cpu_l2 {
-+	cpu-supply = <&vdd_cpu_l>;
-+};
-+
-+&cpu_l3 {
-+	cpu-supply = <&vdd_cpu_l>;
-+};
-+
-+&edp {
-+	force-hpd;
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&edp_hpd>;
-+	status = "okay";
-+
-+	ports {
-+		edp_out: port@1 {
-+			reg = <1>;
-+			#address-cells = <1>;
-+			#size-cells = <0>;
-+
-+			edp_out_panel: endpoint@0 {
-+				reg = <0>;
-+				remote-endpoint = <&panel_in_edp>;
-+			};
-+		};
-+	};
-+};
-+
-+&emmc_phy {
-+	status = "okay";
-+};
-+
-+&gpu {
-+	mali-supply = <&vdd_gpu>;
-+	status = "okay";
-+};
-+
-+&hdmi_sound {
-+	status = "okay";
-+};
-+
-+&i2c0 {
-+	clock-frequency = <400000>;
-+	i2c-scl-falling-time-ns = <4>;
-+	i2c-scl-rising-time-ns = <168>;
-+	status = "okay";
-+
-+	rk808: pmic@1b {
-+		compatible = "rockchip,rk808";
-+		reg = <0x1b>;
-+		#clock-cells = <1>;
-+		clock-output-names = "xin32k", "rk808-clkout2";
-+		interrupt-parent = <&gpio3>;
-+		interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&pmic_int_l_gpio>;
-+		rockchip,system-power-controller;
-+		wakeup-source;
-+
-+		vcc1-supply = <&vcc_sysin>;
-+		vcc2-supply = <&vcc_sysin>;
-+		vcc3-supply = <&vcc_sysin>;
-+		vcc4-supply = <&vcc_sysin>;
-+		vcc6-supply = <&vcc_sysin>;
-+		vcc7-supply = <&vcc_sysin>;
-+		vcc8-supply = <&vcc3v3_sys>;
-+		vcc9-supply = <&vcc_sysin>;
-+		vcc10-supply = <&vcc_sysin>;
-+		vcc11-supply = <&vcc_sysin>;
-+		vcc12-supply = <&vcc3v3_sys>;
-+		vcc13-supply = <&vcc_sysin>;
-+		vcc14-supply = <&vcc_sysin>;
-+
-+		regulators {
-+			/* rk3399 center logic supply */
-+			vdd_center: DCDC_REG1 {
-+				regulator-name = "vdd_center";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <750000>;
-+				regulator-max-microvolt = <1350000>;
-+				regulator-ramp-delay = <6001>;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+
-+			vdd_cpu_l: DCDC_REG2 {
-+				regulator-name = "vdd_cpu_l";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <750000>;
-+				regulator-max-microvolt = <1350000>;
-+				regulator-ramp-delay = <6001>;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+
-+			vcc_ddr: DCDC_REG3 {
-+				regulator-name = "vcc_ddr";
-+				regulator-always-on;
-+				regulator-boot-on;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+				};
-+			};
-+
-+			vcc_1v8: vcc_wl: DCDC_REG4 {
-+				regulator-name = "vcc_1v8";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <1800000>;
-+				regulator-max-microvolt = <1800000>;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+					regulator-suspend-microvolt = <1800000>;
-+				};
-+			};
-+
-+			/* not used */
-+			LDO_REG1 {
-+			};
-+
-+			/* not used */
-+			LDO_REG2 {
-+			};
-+
-+			vcc1v8_pmupll: LDO_REG3 {
-+				regulator-name = "vcc1v8_pmupll";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <1800000>;
-+				regulator-max-microvolt = <1800000>;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+					regulator-suspend-microvolt = <1800000>;
-+				};
-+			};
-+
-+			vcc_sdio: LDO_REG4 {
-+				regulator-name = "vcc_sdio";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <1800000>;
-+				regulator-max-microvolt = <3000000>;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+					regulator-suspend-microvolt = <3000000>;
-+				};
-+			};
-+
-+			vcca3v0_codec: LDO_REG5 {
-+				regulator-name = "vcca3v0_codec";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <3000000>;
-+				regulator-max-microvolt = <3000000>;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+
-+			vcc_1v5: LDO_REG6 {
-+				regulator-name = "vcc_1v5";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <1500000>;
-+				regulator-max-microvolt = <1500000>;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+					regulator-suspend-microvolt = <1500000>;
-+				};
-+			};
-+
-+			vcca1v8_codec: LDO_REG7 {
-+				regulator-name = "vcca1v8_codec";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <1800000>;
-+				regulator-max-microvolt = <1800000>;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+
-+			vcc_3v0: LDO_REG8 {
-+				regulator-name = "vcc_3v0";
-+				regulator-always-on;
-+				regulator-boot-on;
-+				regulator-min-microvolt = <3000000>;
-+				regulator-max-microvolt = <3000000>;
-+
-+				regulator-state-mem {
-+					regulator-on-in-suspend;
-+					regulator-suspend-microvolt = <3000000>;
-+				};
-+			};
-+
-+			vcc3v3_s3: SWITCH_REG1 {
-+				regulator-name = "vcc3v3_s3";
-+				regulator-always-on;
-+				regulator-boot-on;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+
-+			vcc3v3_s0: SWITCH_REG2 {
-+				regulator-name = "vcc3v3_s0";
-+				regulator-always-on;
-+				regulator-boot-on;
-+
-+				regulator-state-mem {
-+					regulator-off-in-suspend;
-+				};
-+			};
-+		};
-+	};
-+
-+	vdd_cpu_b: regulator@40 {
-+		compatible = "silergy,syr827";
-+		reg = <0x40>;
-+		fcs,suspend-voltage-selector = <1>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&vsel1_gpio>;
-+		regulator-name = "vdd_cpu_b";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <712500>;
-+		regulator-max-microvolt = <1500000>;
-+		regulator-ramp-delay = <1000>;
-+		vin-supply = <&vcc_1v8>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+
-+	vdd_gpu: regulator@41 {
-+		compatible = "silergy,syr828";
-+		reg = <0x41>;
-+		fcs,suspend-voltage-selector = <1>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&vsel2_gpio>;
-+		regulator-name = "vdd_gpu";
-+		regulator-always-on;
-+		regulator-boot-on;
-+		regulator-min-microvolt = <712500>;
-+		regulator-max-microvolt = <1500000>;
-+		regulator-ramp-delay = <1000>;
-+		vin-supply = <&vcc_1v8>;
-+
-+		regulator-state-mem {
-+			regulator-off-in-suspend;
-+		};
-+	};
-+};
-+
-+&i2c1 {
-+	clock-frequency = <100000>;
-+	i2c-scl-falling-time-ns = <4>;
-+	i2c-scl-rising-time-ns = <168>;
-+	status = "okay";
-+
-+	es8316: es8316@11 {
-+		compatible = "everest,es8316";
-+		reg = <0x11>;
-+		clocks = <&cru SCLK_I2S_8CH_OUT>;
-+		clock-names = "mclk";
-+		#sound-dai-cells = <0>;
-+	};
-+};
-+
-+&i2c3 {
-+	i2c-scl-falling-time-ns = <15>;
-+	i2c-scl-rising-time-ns = <450>;
-+	status = "okay";
-+};
-+
-+&i2c4 {
-+	i2c-scl-falling-time-ns = <20>;
-+	i2c-scl-rising-time-ns = <600>;
-+	status = "okay";
-+
-+	fusb0: fusb30x@22 {
-+		compatible = "fcs,fusb302";
-+		reg = <0x22>;
-+		fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&fusb0_int_gpio>;
-+		vbus-supply = <&vbus_typec>;
-+
-+		connector {
-+			compatible = "usb-c-connector";
-+			data-role = "host";
-+			label = "USB-C";
-+			op-sink-microwatt = <1000000>;
-+			power-role = "dual";
-+			sink-pdos =
-+				<PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>;
-+			source-pdos =
-+				<PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
-+			try-power-role = "sink";
-+
-+			ports {
-+				#address-cells = <1>;
-+				#size-cells = <0>;
-+
-+				port@0 {
-+					reg = <0>;
-+
-+					usbc_hs: endpoint {
-+						remote-endpoint =
-+							<&u2phy0_typec_hs>;
-+					};
-+				};
-+
-+				port@1 {
-+					reg = <1>;
-+
-+					usbc_ss: endpoint {
-+						remote-endpoint =
-+							<&tcphy0_typec_ss>;
-+					};
-+				};
-+
-+				port@2 {
-+					reg = <2>;
-+
-+					usbc_dp: endpoint {
-+						remote-endpoint =
-+							<&tcphy0_typec_dp>;
-+					};
-+				};
-+			};
-+		};
-+	};
-+};
-+
-+&i2s1 {
-+	#sound-dai-cells = <0>;
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>;
-+	rockchip,capture-channels = <8>;
-+	rockchip,playback-channels = <8>;
-+	status = "okay";
-+};
-+
-+&io_domains {
-+	audio-supply = <&vcc_3v0>;
-+	gpio1830-supply = <&vcc_3v0>;
-+	sdmmc-supply = <&vcc_sdio>;
-+	status = "okay";
-+};
-+
-+&pcie_phy {
-+	status = "okay";
-+};
-+
-+&pcie0 {
-+	bus-scan-delay-ms = <1000>;
-+	ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
-+	max-link-speed = <2>;
-+	num-lanes = <4>;
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&pcie_clkreqn_cpm>;
-+	vpcie0v9-supply = <&vcca0v9_s3>;
-+	vpcie1v8-supply = <&vcca1v8_s3>;
-+	vpcie3v3-supply = <&vcc3v3_ssd>;
-+	status = "okay";
-+};
-+
-+&pinctrl {
-+	buttons {
-+		pwrbtn_gpio: pwrbtn-gpio {
-+			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+
-+		lidbtn_gpio: lidbtn-gpio {
-+			rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	dc-charger {
-+		dc_det_gpio: dc-det-gpio {
-+			rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	es8316 {
-+		hp_det_gpio: hp-det-gpio {
-+			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	fusb302x {
-+		fusb0_int_gpio: fusb0-int-gpio {
-+			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	i2s1 {
-+		i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio {
-+			rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>;
-+		};
-+	};
-+
-+	lcd-panel {
-+		lcdvcc_en_gpio: lcdvcc-en-gpio {
-+			rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		panel_en_gpio: panel-en-gpio {
-+			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		lcd_panel_reset_gpio: lcd-panel-reset-gpio {
-+			rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	leds {
-+		pwrled_gpio: pwrled_gpio {
-+			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		slpled_gpio: slpled_gpio {
-+			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+	};
-+
-+	pmic {
-+		pmic_int_l_gpio: pmic-int-l-gpio {
-+			rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+
-+		vsel1_gpio: vsel1-gpio {
-+			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
-+		};
-+
-+		vsel2_gpio: vsel2-gpio {
-+			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
-+		};
-+	};
-+
-+	sdcard {
-+		sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio {
-+			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+	};
-+
-+	sdio-pwrseq {
-+		wifi_enable_h_gpio: wifi-enable-h-gpio {
-+			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+	};
-+
-+	usb-typec {
-+		vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio {
-+			rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
-+		};
-+	};
-+
-+	usb2 {
-+		pwr_5v_gpio: pwr-5v-gpio {
-+			rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		vcc5v0_host_en_gpio: vcc5v0-host-en-gpio {
-+			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+	};
-+
-+	wireless-bluetooth {
-+		bt_wake_gpio: bt-wake-gpio {
-+			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		bt_host_wake_gpio: bt-host-wake-gpio {
-+			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+
-+		bt_reset_gpio: bt-reset-gpio {
-+			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
-+		};
-+	};
-+};
-+
-+&pmu_io_domains {
-+	pmu1830-supply = <&vcc_3v0>;
-+	status = "okay";
-+};
-+
-+&pwm0 {
-+	status = "okay";
-+};
-+
-+&pwm2 {
-+	status = "okay";
-+};
-+
-+&saradc {
-+	vref-supply = <&vcca1v8_s3>;
-+	status = "okay";
-+};
-+
-+&sdmmc {
-+	bus-width = <4>;
-+	cap-mmc-highspeed;
-+	cap-sd-highspeed;
-+	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
-+	disable-wp;
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
-+	sd-uhs-sdr104;
-+	vmmc-supply = <&vcc3v0_sd>;
-+	vqmmc-supply = <&vcc_sdio>;
-+	status = "okay";
-+};
-+
-+&sdio0 {
-+	bus-width = <4>;
-+	cap-sd-highspeed;
-+	cap-sdio-irq;
-+	keep-power-in-suspend;
-+	mmc-pwrseq = <&sdio_pwrseq>;
-+	non-removable;
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
-+	sd-uhs-sdr104;
-+	status = "okay";
-+};
-+
-+&sdhci {
-+	bus-width = <8>;
-+	mmc-hs200-1_8v;
-+	non-removable;
-+	status = "okay";
-+};
-+
-+&spi1 {
-+	max-freq = <10000000>;
-+	status = "okay";
-+
-+	spiflash: flash@0 {
-+		compatible = "jedec,spi-nor";
-+		reg = <0>;
-+		m25p,fast-read;
-+		spi-max-frequency = <10000000>;
-+	};
-+};
-+
-+&tcphy0 {
-+	status = "okay";
-+};
-+
-+&tcphy0_dp {
-+	port {
-+		tcphy0_typec_dp: endpoint {
-+			remote-endpoint = <&usbc_dp>;
-+		};
-+	};
-+};
-+
-+&tcphy0_usb3 {
-+	port {
-+		tcphy0_typec_ss: endpoint {
-+			remote-endpoint = <&usbc_ss>;
-+		};
-+	};
-+};
-+
-+&tcphy1 {
-+	status = "okay";
-+};
-+
-+&tsadc {
-+	/* tshut mode 0:CRU 1:GPIO */
-+	rockchip,hw-tshut-mode = <1>;
-+	/* tshut polarity 0:LOW 1:HIGH */
-+	rockchip,hw-tshut-polarity = <1>;
-+	status = "okay";
-+};
-+
-+&u2phy0 {
-+	status = "okay";
-+
-+	u2phy0_otg: otg-port {
-+		status = "okay";
-+	};
-+
-+	u2phy0_host: host-port {
-+		phy-supply = <&vcc5v0_otg>;
-+		status = "okay";
-+	};
-+
-+	port {
-+		u2phy0_typec_hs: endpoint {
-+			remote-endpoint = <&usbc_hs>;
-+		};
-+	};
-+};
-+
-+&u2phy1 {
-+	status = "okay";
-+
-+	u2phy1_otg: otg-port {
-+		status = "okay";
-+	};
-+
-+	u2phy1_host: host-port {
-+		phy-supply = <&vcc5v0_otg>;
-+		status = "okay";
-+	};
-+};
-+
-+&uart0 {
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
-+	uart-has-rtscts;
-+	status = "okay";
-+
-+	bluetooth {
-+		compatible = "brcm,bcm4345c5";
-+		clocks = <&rk808 1>;
-+		clock-names = "lpo";
-+		device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
-+		host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
-+		max-speed = <1500000>;
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>;
-+		shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
-+		vbat-supply = <&wifi_bat>;
-+		vddio-supply = <&vcc_wl>;
-+	};
-+};
-+
-+&uart2 {
-+	status = "okay";
-+};
-+
-+&usb_host0_ehci {
-+	status = "okay";
-+};
-+
-+&usb_host0_ohci {
-+	status = "okay";
-+};
-+
-+&usb_host1_ehci {
-+	status = "okay";
-+};
-+
-+&usb_host1_ohci {
-+	status = "okay";
-+};
-+
-+&usbdrd3_0 {
-+	status = "okay";
-+};
-+
-+&usbdrd_dwc3_0 {
-+	dr_mode = "host";
-+	status = "okay";
-+};
-+
-+&usbdrd3_1 {
-+	status = "okay";
-+};
-+
-+&usbdrd_dwc3_1 {
-+	dr_mode = "host";
-+	status = "okay";
-+};
-+
-+&vopb {
-+	status = "okay";
-+};
-+
-+&vopb_mmu {
-+	status = "okay";
-+};
-+
-+&vopl {
-+	status = "okay";
-+};
-+
-+&vopl_mmu {
-+	status = "okay";
-+};
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch b/gnu/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch
deleted file mode 100644
index c359522967..0000000000
--- a/gnu/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 00978950fed39b6104b6b4f141450a66cc3400fa Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 20:27:32 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420192736.962307-2-pbrobinson@gmail.com/
-Subject: [PATCH 1/5] video: simple_panel: add boe,nv140fhmn49 display
-
-add "boe,nv140fhmn49" display to compatible node.
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
-Cc: Anatolij Gustschin <agust@denx.de>
----
- drivers/video/simple_panel.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/video/simple_panel.c b/drivers/video/simple_panel.c
-index c3c0e84732..5722811117 100644
---- a/drivers/video/simple_panel.c
-+++ b/drivers/video/simple_panel.c
-@@ -105,6 +105,7 @@ static const struct udevice_id simple_panel_ids[] = {
- 	{ .compatible = "auo,b133xtn01" },
- 	{ .compatible = "auo,b116xw03" },
- 	{ .compatible = "auo,b133htn01" },
-+	{ .compatible = "boe,nv140fhmn49" },
- 	{ .compatible = "lg,lb070wv8" },
- 	{ }
- };
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/u-boot-gpio-keys-binding-cons.patch b/gnu/packages/patches/u-boot-gpio-keys-binding-cons.patch
deleted file mode 100644
index aec33a7023..0000000000
--- a/gnu/packages/patches/u-boot-gpio-keys-binding-cons.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 451bd72bf966df7518682cb748a804634ea19424 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 20:27:33 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420192736.962307-3-pbrobinson@gmail.com/
-Subject: [PATCH 2/5] dt-bindings: input: adopt Linux gpio-keys binding
- constants
-
-Sync the gpio-keys input bindings from linux 5.7-rc1.
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- include/dt-bindings/input/gpio-keys.h | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
- create mode 100644 include/dt-bindings/input/gpio-keys.h
-
-diff --git a/include/dt-bindings/input/gpio-keys.h b/include/dt-bindings/input/gpio-keys.h
-new file mode 100644
-index 0000000000..8962df79e7
---- /dev/null
-+++ b/include/dt-bindings/input/gpio-keys.h
-@@ -0,0 +1,13 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+/*
-+ * This header provides constants for gpio keys bindings.
-+ */
-+
-+#ifndef _DT_BINDINGS_GPIO_KEYS_H
-+#define _DT_BINDINGS_GPIO_KEYS_H
-+
-+#define EV_ACT_ANY		0x00	/* asserted or deasserted */
-+#define EV_ACT_ASSERTED		0x01	/* asserted */
-+#define EV_ACT_DEASSERTED	0x02	/* deasserted */
-+
-+#endif /* _DT_BINDINGS_GPIO_KEYS_H */
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/u-boot-leds-common-binding-con.patch b/gnu/packages/patches/u-boot-leds-common-binding-con.patch
deleted file mode 100644
index 837408120b..0000000000
--- a/gnu/packages/patches/u-boot-leds-common-binding-con.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 282b6ca04abbe1302d04caa05be5fc5afb127141 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 20:27:34 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420192736.962307-4-pbrobinson@gmail.com/
-Subject: [PATCH 3/5] dt-bindings: leds: adopt Linux leds common binding
- constants
-
-Sync the common leds bindings from linux 5.7-rc1.
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- include/dt-bindings/leds/common.h | 91 +++++++++++++++++++++++++++++++
- 1 file changed, 91 insertions(+)
- create mode 100644 include/dt-bindings/leds/common.h
-
-diff --git a/include/dt-bindings/leds/common.h b/include/dt-bindings/leds/common.h
-new file mode 100644
-index 0000000000..0ce7dfc00d
---- /dev/null
-+++ b/include/dt-bindings/leds/common.h
-@@ -0,0 +1,91 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+/*
-+ * This header provides macros for the common LEDs device tree bindings.
-+ *
-+ * Copyright (C) 2015, Samsung Electronics Co., Ltd.
-+ * Author: Jacek Anaszewski <j.anaszewski@samsung.com>
-+ *
-+ * Copyright (C) 2019 Jacek Anaszewski <jacek.anaszewski@gmail.com>
-+ * Copyright (C) 2020 Pavel Machek <pavel@ucw.cz>
-+ */
-+
-+#ifndef __DT_BINDINGS_LEDS_H
-+#define __DT_BINDINGS_LEDS_H
-+
-+/* External trigger type */
-+#define LEDS_TRIG_TYPE_EDGE	0
-+#define LEDS_TRIG_TYPE_LEVEL	1
-+
-+/* Boost modes */
-+#define LEDS_BOOST_OFF		0
-+#define LEDS_BOOST_ADAPTIVE	1
-+#define LEDS_BOOST_FIXED	2
-+
-+/* Standard LED colors */
-+#define LED_COLOR_ID_WHITE	0
-+#define LED_COLOR_ID_RED	1
-+#define LED_COLOR_ID_GREEN	2
-+#define LED_COLOR_ID_BLUE	3
-+#define LED_COLOR_ID_AMBER	4
-+#define LED_COLOR_ID_VIOLET	5
-+#define LED_COLOR_ID_YELLOW	6
-+#define LED_COLOR_ID_IR		7
-+#define LED_COLOR_ID_MAX	8
-+
-+/* Standard LED functions */
-+/* Keyboard LEDs, usually it would be input4::capslock etc. */
-+/*   Obsolete equivalent: "shift-key-light" */
-+#define LED_FUNCTION_CAPSLOCK "capslock"
-+#define LED_FUNCTION_SCROLLLOCK "scrolllock"
-+#define LED_FUNCTION_NUMLOCK "numlock"
-+/*   Obsolete equivalents: "tpacpi::thinklight" (IBM/Lenovo Thinkpads),
-+     "lp5523:kb{1,2,3,4,5,6}" (Nokia N900) */
-+#define LED_FUNCTION_KBD_BACKLIGHT "kbd_backlight"
-+
-+/* System LEDs, usually found on system body.
-+   platform::mute (etc) is sometimes seen, :mute would be better */
-+#define LED_FUNCTION_POWER "power"
-+#define LED_FUNCTION_DISK "disk"
-+
-+/*   Obsolete: "platform:*:charging" (allwinner sun50i) */
-+#define LED_FUNCTION_CHARGING "charging"
-+/*   Used RGB notification LEDs common on phones.
-+     Obsolete equivalents: "status-led:{red,green,blue}" (Motorola Droid 4),
-+     "lp5523:{r,g,b}" (Nokia N900) */
-+#define LED_FUNCTION_STATUS "status"
-+
-+#define LED_FUNCTION_MICMUTE "micmute"
-+#define LED_FUNCTION_MUTE "mute"
-+
-+/* Miscelleaus functions. Use functions above if you can. */
-+#define LED_FUNCTION_ACTIVITY "activity"
-+#define LED_FUNCTION_ALARM "alarm"
-+#define LED_FUNCTION_BACKLIGHT "backlight"
-+#define LED_FUNCTION_BLUETOOTH "bluetooth"
-+#define LED_FUNCTION_BOOT "boot"
-+#define LED_FUNCTION_CPU "cpu"
-+#define LED_FUNCTION_DEBUG "debug"
-+#define LED_FUNCTION_DISK_ACTIVITY "disk-activity"
-+#define LED_FUNCTION_DISK_ERR "disk-err"
-+#define LED_FUNCTION_DISK_READ "disk-read"
-+#define LED_FUNCTION_DISK_WRITE "disk-write"
-+#define LED_FUNCTION_FAULT "fault"
-+#define LED_FUNCTION_FLASH "flash"
-+#define LED_FUNCTION_HEARTBEAT "heartbeat"
-+#define LED_FUNCTION_INDICATOR "indicator"
-+#define LED_FUNCTION_LAN "lan"
-+#define LED_FUNCTION_MAIL "mail"
-+#define LED_FUNCTION_MTD "mtd"
-+#define LED_FUNCTION_PANIC "panic"
-+#define LED_FUNCTION_PROGRAMMING "programming"
-+#define LED_FUNCTION_RX "rx"
-+#define LED_FUNCTION_SD "sd"
-+#define LED_FUNCTION_STANDBY "standby"
-+#define LED_FUNCTION_TORCH "torch"
-+#define LED_FUNCTION_TX "tx"
-+#define LED_FUNCTION_USB "usb"
-+#define LED_FUNCTION_WAN "wan"
-+#define LED_FUNCTION_WLAN "wlan"
-+#define LED_FUNCTION_WPS "wps"
-+
-+#endif /* __DT_BINDINGS_LEDS_H */
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
index 3feeb1dc5e..29dec4f5e9 100644
--- a/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
+++ b/gnu/packages/patches/u-boot-riscv64-fix-extlinux.patch
@@ -16,7 +16,6 @@ Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
 ---
  configs/qemu-riscv64_smode_defconfig | 2 ++
  configs/sifive_fu540_defconfig       | 2 ++
- include/configs/sifive-fu540.h       | 4 ----
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 Index: u-boot/configs/qemu-riscv64_smode_defconfig
@@ -39,16 +38,3 @@ Index: u-boot/configs/sifive_fu540_defconfig
  CONFIG_DM_MTD=y
 +CONFIG_USE_PREBOOT=y
 +CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
-Index: u-boot/include/configs/sifive-fu540.h
-===================================================================
---- u-boot.orig/include/configs/sifive-fu540.h
-+++ u-boot/include/configs/sifive-fu540.h
-@@ -40,8 +40,4 @@
- 	"ramdisk_addr_r=0x88300000\0" \
- 	BOOTENV
- 
--#define CONFIG_PREBOOT \
--	"setenv fdt_addr ${fdtcontroladdr};" \
--	"fdt addr ${fdtcontroladdr};"
--
- #endif /* __CONFIG_H */
diff --git a/gnu/packages/patches/u-boot-support-Pinebook-Pro-laptop.patch b/gnu/packages/patches/u-boot-support-Pinebook-Pro-laptop.patch
deleted file mode 100644
index c6f91fa65a..0000000000
--- a/gnu/packages/patches/u-boot-support-Pinebook-Pro-laptop.patch
+++ /dev/null
@@ -1,367 +0,0 @@
-From 60381e4add64dddbd07e78248b2b0f819eb2776e Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 20:27:36 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420192736.962307-6-pbrobinson@gmail.com/
-Subject: [PATCH 5/5] Add initial support for the Pinebook Pro laptop from
- Pine64.
-
-Specification:
-- Rockchip RK3399
-- 4GB Dual-Channel LPDDR4
-- eMMC socket
-- mSD card slot
-- 128Mbit (16Mb) SPI Flash
-- AP6256 for 11AC WiFi + BT5
-- 14 inch 1920*1080 eDP MiPi display
-- Camera
-- USB 3.0, 2.0 ports
-- Type-C port with alt-mode display (DP 1.2) and 15W charge
-- DC 5V/3A
-- optional PCIe slot for NVMe SSD drive
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
----
- arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi  | 43 ++++++++++
- arch/arm/mach-rockchip/rk3399/Kconfig         |  8 ++
- board/pine64/pinebook-pro-rk3399/Kconfig      | 15 ++++
- board/pine64/pinebook-pro-rk3399/MAINTAINERS  |  8 ++
- board/pine64/pinebook-pro-rk3399/Makefile     |  1 +
- .../pinebook-pro-rk3399/pinebook-pro-rk3399.c | 76 +++++++++++++++++
- configs/pinebook-pro-rk3399_defconfig         | 84 +++++++++++++++++++
- include/configs/pinebook-pro-rk3399.h         | 29 +++++++
- 8 files changed, 264 insertions(+)
- create mode 100644 arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
- create mode 100644 board/pine64/pinebook-pro-rk3399/Kconfig
- create mode 100644 board/pine64/pinebook-pro-rk3399/MAINTAINERS
- create mode 100644 board/pine64/pinebook-pro-rk3399/Makefile
- create mode 100644 board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c
- create mode 100644 configs/pinebook-pro-rk3399_defconfig
- create mode 100644 include/configs/pinebook-pro-rk3399.h
-
-diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
-new file mode 100644
-index 0000000000..1a2e24d3ef
---- /dev/null
-+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
-@@ -0,0 +1,43 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * Copyright (C) 2019 Peter Robinson <pbrobinson at gmail.com>
-+ */
-+
-+#include "rk3399-u-boot.dtsi"
-+#include "rk3399-sdram-lpddr4-100.dtsi"
-+
-+/ {
-+	aliases {
-+		spi0 = &spi1;
-+	};
-+
-+	chosen {
-+		u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc;
-+	};
-+};
-+
-+&i2c0 {
-+	u-boot,dm-pre-reloc;
-+};
-+
-+&rk808 {
-+	u-boot,dm-pre-reloc;
-+};
-+
-+&sdhci {
-+	max-frequency = <25000000>;
-+	u-boot,dm-pre-reloc;
-+};
-+
-+&sdmmc {
-+	max-frequency = <20000000>;
-+	u-boot,dm-pre-reloc;
-+};
-+
-+&spiflash {
-+	u-boot,dm-pre-reloc;
-+};
-+
-+&vdd_log {
-+	regulator-init-microvolt = <950000>;
-+};
-diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig
-index 927bb62a9f..254b9c5b4d 100644
---- a/arch/arm/mach-rockchip/rk3399/Kconfig
-+++ b/arch/arm/mach-rockchip/rk3399/Kconfig
-@@ -19,6 +19,13 @@ config TARGET_EVB_RK3399
- 	  with full function and physical connectors support like Type-C ports,
- 	  USB.0 host ports, LVDS, JTAG, MAC, SD card, HDMI, USB-to-serial...
- 
-+config TARGET_PINEBOOK_PRO_RK3399
-+	bool "Pinebook Pro"
-+	help
-+	  Pinebook Pro is a laptop based on the Rockchip rk3399 SoC
-+	  with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port,
-+	  1920*1080 screen and all the usual laptop features.
-+
- config TARGET_PUMA_RK3399
- 	bool "Theobroma Systems RK3399-Q7 (Puma)"
- 	help
-@@ -144,6 +151,7 @@ endif # BOOTCOUNT_LIMIT
- 
- source "board/firefly/roc-pc-rk3399/Kconfig"
- source "board/google/gru/Kconfig"
-+source "board/pine64/pinebook-pro-rk3399/Kconfig"
- source "board/pine64/rockpro64_rk3399/Kconfig"
- source "board/rockchip/evb_rk3399/Kconfig"
- source "board/theobroma-systems/puma_rk3399/Kconfig"
-diff --git a/board/pine64/pinebook-pro-rk3399/Kconfig b/board/pine64/pinebook-pro-rk3399/Kconfig
-new file mode 100644
-index 0000000000..3bb7ca448e
---- /dev/null
-+++ b/board/pine64/pinebook-pro-rk3399/Kconfig
-@@ -0,0 +1,15 @@
-+if TARGET_PINEBOOK_PRO_RK3399
-+
-+config SYS_BOARD
-+	default "pinebook-pro-rk3399"
-+
-+config SYS_VENDOR
-+	default "pine64"
-+
-+config SYS_CONFIG_NAME
-+	default "pinebook-pro-rk3399"
-+
-+config BOARD_SPECIFIC_OPTIONS
-+	def_bool y
-+
-+endif
-diff --git a/board/pine64/pinebook-pro-rk3399/MAINTAINERS b/board/pine64/pinebook-pro-rk3399/MAINTAINERS
-new file mode 100644
-index 0000000000..7153eaf2e0
---- /dev/null
-+++ b/board/pine64/pinebook-pro-rk3399/MAINTAINERS
-@@ -0,0 +1,8 @@
-+PINEBOOK_PRO
-+M:	Peter Robinson <pbrobinson at gmail.com>
-+S:	Maintained
-+F:	board/pine64/rk3399-pinebook-pro/
-+F:	include/configs/rk3399-pinebook-pro.h
-+F:	arch/arm/dts/rk3399-pinebook-pro.dts
-+F:	arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
-+F:	configs/pinebook-pro-rk3399_defconfig
-diff --git a/board/pine64/pinebook-pro-rk3399/Makefile b/board/pine64/pinebook-pro-rk3399/Makefile
-new file mode 100644
-index 0000000000..2f692a12a6
---- /dev/null
-+++ b/board/pine64/pinebook-pro-rk3399/Makefile
-@@ -0,0 +1 @@
-+obj-y	+= pinebook-pro-rk3399.o
-diff --git a/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c
-new file mode 100644
-index 0000000000..01421cbac2
---- /dev/null
-+++ b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c
-@@ -0,0 +1,76 @@
-+/*
-+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd
-+ * (C) Copyright 2020 Peter Robinson <pbrobinson at gmail.com>
-+ *
-+ * SPDX-License-Identifier:     GPL-2.0+
-+ */
-+
-+#include <common.h>
-+#include <dm.h>
-+#include <syscon.h>
-+#include <asm/io.h>
-+#include <asm/arch-rockchip/clock.h>
-+#include <asm/arch-rockchip/grf_rk3399.h>
-+#include <asm/arch-rockchip/hardware.h>
-+#include <asm/arch-rockchip/misc.h>
-+#include <power/regulator.h>
-+
-+#define GRF_IO_VSEL_BT565_SHIFT 0
-+#define PMUGRF_CON0_VSEL_SHIFT 8
-+
-+#ifndef CONFIG_SPL_BUILD
-+int board_early_init_f(void)
-+{
-+	struct udevice *regulator;
-+	int ret;
-+
-+	ret = regulator_get_by_platname("vcc5v0_usb", &regulator);
-+	if (ret) {
-+		debug("%s vcc5v0_usb init fail! ret %d\n", __func__, ret);
-+		goto out;
-+	}
-+
-+	ret = regulator_set_enable(regulator, true);
-+	if (ret)
-+		debug("%s vcc5v0-host-en-gpio set fail! ret %d\n", __func__, ret);
-+
-+out:
-+	return 0;
-+}
-+#endif
-+
-+#ifdef CONFIG_MISC_INIT_R
-+static void setup_iodomain(void)
-+{
-+	struct rk3399_grf_regs *grf =
-+	   syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
-+	struct rk3399_pmugrf_regs *pmugrf =
-+	   syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
-+
-+	/* BT565 is in 1.8v domain */
-+	rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT);
-+
-+	/* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */
-+	rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT);
-+}
-+
-+int misc_init_r(void)
-+{
-+	const u32 cpuid_offset = 0x7;
-+	const u32 cpuid_length = 0x10;
-+	u8 cpuid[cpuid_length];
-+	int ret;
-+
-+	setup_iodomain();
-+
-+	ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
-+	if (ret)
-+		return ret;
-+
-+	ret = rockchip_cpuid_set(cpuid, cpuid_length);
-+	if (ret)
-+		return ret;
-+
-+	return ret;
-+}
-+#endif
-diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig
-new file mode 100644
-index 0000000000..0e9f0ec250
---- /dev/null
-+++ b/configs/pinebook-pro-rk3399_defconfig
-@@ -0,0 +1,84 @@
-+CONFIG_ARM=y
-+CONFIG_ARCH_ROCKCHIP=y
-+CONFIG_SYS_TEXT_BASE=0x00200000
-+CONFIG_ENV_OFFSET=0x3F8000
-+CONFIG_ROCKCHIP_RK3399=y
-+CONFIG_RAM_RK3399_LPDDR4=y
-+CONFIG_NR_DRAM_BANKS=1
-+CONFIG_TARGET_PINEBOOK_PRO_RK3399=y
-+CONFIG_BAUDRATE=1500000
-+CONFIG_DEBUG_UART=y
-+CONFIG_DEBUG_UART_SHIFT=2
-+CONFIG_DEBUG_UART_BASE=0xFF1A0000
-+CONFIG_DEBUG_UART_CLOCK=24000000
-+CONFIG_SPL_SPI_SUPPORT=y
-+CONFIG_SPL_SPI_FLASH_SUPPORT=y
-+CONFIG_SPL_MTD_SUPPORT=y
-+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb"
-+CONFIG_MISC_INIT_R=y
-+CONFIG_DISPLAY_BOARDINFO_LATE=y
-+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
-+CONFIG_SPL_STACK_R=y
-+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
-+CONFIG_TPL=y
-+CONFIG_SPL_OF_CONTROL=y
-+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro"
-+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
-+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-+CONFIG_CMD_BOOTZ=y
-+CONFIG_CMD_GPIO=y
-+CONFIG_CMD_GPT=y
-+CONFIG_CMD_I2C=y
-+CONFIG_CMD_MMC=y
-+CONFIG_CMD_MTDPARTS=y
-+CONFIG_CMD_PMIC=y
-+CONFIG_CMD_REGULATOR=y
-+# CONFIG_CMD_SETEXPR is not set
-+CONFIG_CMD_SF=y
-+CONFIG_CMD_TIME=y
-+CONFIG_CMD_USB=y
-+CONFIG_ROCKCHIP_GPIO=y
-+CONFIG_SYS_I2C_ROCKCHIP=y
-+CONFIG_BOOTDELAY=3
-+CONFIG_LED=y
-+CONFIG_LED_GPIO=y
-+CONFIG_MISC=y
-+CONFIG_ROCKCHIP_EFUSE=y
-+CONFIG_MMC_DW=y
-+CONFIG_MMC_DW_ROCKCHIP=y
-+CONFIG_MMC_SDHCI=y
-+CONFIG_MMC_SDHCI_SDMA=y
-+CONFIG_MMC_SDHCI_ROCKCHIP=y
-+CONFIG_ROCKCHIP_SPI=y
-+CONFIG_SF_DEFAULT_SPEED=20000000
-+CONFIG_SPI_FLASH=y
-+CONFIG_SPI_FLASH_GIGADEVICE=y
-+CONFIG_SPI_FLASH_WINBOND=y
-+CONFIG_DM_ETH=y
-+CONFIG_PMIC_RK8XX=y
-+CONFIG_DM_PMIC_FAN53555=y
-+CONFIG_REGULATOR_PWM=y
-+CONFIG_REGULATOR_RK8XX=y
-+CONFIG_PWM_ROCKCHIP=y
-+CONFIG_SYSRESET=y
-+CONFIG_USB=y
-+CONFIG_USB_XHCI_HCD=y
-+CONFIG_USB_XHCI_DWC3=y
-+# CONFIG_USB_XHCI_ROCKCHIP is not set
-+CONFIG_USB_EHCI_HCD=y
-+CONFIG_USB_EHCI_GENERIC=y
-+CONFIG_USB_DWC3=y
-+CONFIG_ROCKCHIP_USB2_PHY=y
-+CONFIG_USB_HOST_ETHER=y
-+CONFIG_USB_ETHER_ASIX=y
-+CONFIG_USB_ETHER_RTL8152=y
-+CONFIG_USB_KEYBOARD=y
-+CONFIG_USE_TINY_PRINTF=y
-+CONFIG_SPL_TINY_MEMSET=y
-+CONFIG_ERRNO_STR=y
-+CONFIG_DM_VIDEO=y
-+CONFIG_VIDEO_BPP16=y
-+CONFIG_VIDEO_BPP32=y
-+CONFIG_DISPLAY=y
-+CONFIG_VIDEO_ROCKCHIP=y
-+CONFIG_DISPLAY_ROCKCHIP_EDP=y
-diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h
-new file mode 100644
-index 0000000000..423d742a79
---- /dev/null
-+++ b/include/configs/pinebook-pro-rk3399.h
-@@ -0,0 +1,29 @@
-+/*
-+ * Copyright (C) 2016 Rockchip Electronics Co., Ltd
-+ * Copyright (C) 2020 Peter Robinson <pbrobinson at gmail.com>
-+ *
-+ * SPDX-License-Identifier:     GPL-2.0+
-+ */
-+
-+#ifndef __PINEBOOK_PRO_RK3399_H
-+#define __PINEBOOK_PRO_RK3399_H
-+
-+#define ROCKCHIP_DEVICE_SETTINGS \
-+		"stdin=serial,usbkbd\0" \
-+		"stdout=serial,vidconsole\0" \
-+		"stderr=serial,vidconsole\0"
-+
-+#include <configs/rk3399_common.h>
-+
-+#if defined(CONFIG_ENV_IS_IN_MMC)
-+#define CONFIG_SYS_MMC_ENV_DEV 0
-+#elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
-+#define CONFIG_ENV_SECT_SIZE		(8 * 1024)
-+#endif
-+
-+#undef CONFIG_SYS_SPI_U_BOOT_OFFS
-+#define CONFIG_SYS_SPI_U_BOOT_OFFS	1024 * 512
-+
-+#define SDRAM_BANK_SIZE			(2UL << 30)
-+
-+#endif
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/u-boot-video-rockchip-fix-build.patch b/gnu/packages/patches/u-boot-video-rockchip-fix-build.patch
deleted file mode 100644
index ca2be8dc22..0000000000
--- a/gnu/packages/patches/u-boot-video-rockchip-fix-build.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From ecc69ec25df07e1ce63d7add6b235b37673ed608 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Mon, 20 Apr 2020 19:18:25 +0100
-Origin: https://patchwork.ozlabs.org/project/uboot/patch/20200420181825.935797-1-pbrobinson@gmail.com/
-Subject: [PATCH 6/6] drivers: video: rockchip: fix building eDP and LVDS
- drivers
-
-The rk_edp.c and rk_lvds.c files reference rk_setreg which is declared in
-hardware.h so include it so the drivers build. Adjust rk_lvds.c so
-includes are in alphabetical order while updating.
-
-Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
-Reviewed-by: Anatolij Gustschin <agust@denx.de>
----
- drivers/video/rockchip/rk_edp.c  | 1 +
- drivers/video/rockchip/rk_lvds.c | 3 ++-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c
-index 8703df0ec0..cf84b886e7 100644
---- a/drivers/video/rockchip/rk_edp.c
-+++ b/drivers/video/rockchip/rk_edp.c
-@@ -18,6 +18,7 @@
- #include <asm/arch-rockchip/clock.h>
- #include <asm/arch-rockchip/edp_rk3288.h>
- #include <asm/arch-rockchip/grf_rk3288.h>
-+#include <asm/arch-rockchip/hardware.h>
- #include <dt-bindings/clock/rk3288-cru.h>
- 
- #define MAX_CR_LOOP 5
-diff --git a/drivers/video/rockchip/rk_lvds.c b/drivers/video/rockchip/rk_lvds.c
-index cf5c0439b1..79e24baf53 100644
---- a/drivers/video/rockchip/rk_lvds.c
-+++ b/drivers/video/rockchip/rk_lvds.c
-@@ -13,8 +13,9 @@
- #include <asm/gpio.h>
- #include <asm/io.h>
- #include <asm/arch-rockchip/clock.h>
--#include <asm/arch-rockchip/lvds_rk3288.h>
- #include <asm/arch-rockchip/grf_rk3288.h>
-+#include <asm/arch-rockchip/hardware.h>
-+#include <asm/arch-rockchip/lvds_rk3288.h>
- #include <dt-bindings/clock/rk3288-cru.h>
- #include <dt-bindings/video/rk3288.h>
- 
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/ungoogled-chromium-system-nspr.patch b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
new file mode 100644
index 0000000000..6fbc0a56a7
--- /dev/null
+++ b/gnu/packages/patches/ungoogled-chromium-system-nspr.patch
@@ -0,0 +1,120 @@
+Build with the system nspr library.
+
+Originally based on a Debian patch:
+https://salsa.debian.org/chromium-team/chromium/-/blob/master/debian/patches/system/nspr.patch
+
+--- a/base/time/pr_time_unittest.cc
++++ b/base/time/pr_time_unittest.cc
+@@ -7,7 +7,7 @@
+ 
+ #include "base/compiler_specific.h"
+ #include "base/stl_util.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr/prtime.h>
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+--- a/base/time/time.cc
++++ b/base/time/time.cc
+@@ -14,7 +14,7 @@
+ #include "base/macros.h"
+ #include "base/no_destructor.h"
+ #include "base/strings/stringprintf.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr/prtime.h>
+ #include "base/time/time_override.h"
+ #include "build/build_config.h"
+ 
+--- a/base/BUILD.gn
++++ b/base/BUILD.gn
+@@ -107,6 +107,9 @@ config("base_flags") {
+       "-Wglobal-constructors",
+     ]
+   }
++  ldflags = [
++    "-lnspr4",
++  ]
+ }
+ 
+ config("base_implementation") {
+@@ -712,8 +715,6 @@ jumbo_component("base") {
+     "third_party/cityhash_v103/src/city_v103.h",
+     "third_party/icu/icu_utf.cc",
+     "third_party/icu/icu_utf.h",
+-    "third_party/nspr/prtime.cc",
+-    "third_party/nspr/prtime.h",
+     "third_party/superfasthash/superfasthash.c",
+     "thread_annotations.h",
+     "threading/hang_watcher.cc",
+--- a/tools/gn/build/gen.py
++++ b/tools/gn/build/gen.py
+@@ -339,6 +339,9 @@ def WriteGNNinja(path, platform, host, o
+       if not options.no_static_libstdcpp:
+         ldflags.append('-static-libstdc++')
+ 
++      # Additional system libraries that are used.
++      libs.append('-lnspr4')
++
+       # This is needed by libc++.
+       if not platform.is_mingw():
+         libs.append('-ldl')
+--- a/third_party/blink/renderer/platform/BUILD.gn
++++ b/third_party/blink/renderer/platform/BUILD.gn
+@@ -103,6 +103,9 @@
+     "//build/win:default_exe_manifest",
+     "//third_party/icu",
+   ]
++  ldflags = [
++    "-lnspr4"
++  ]
+ }
+ 
+ # This isn't strictly necessary since we can just add the deps to "platform",
+--- a/third_party/crashpad/crashpad/handler/BUILD.gn
++++ b/third_party/crashpad/crashpad/handler/BUILD.gn
+@@ -140,6 +140,9 @@
+       "../third_party/mini_chromium:base",
+       "../tools:tool_support",
+     ]
++    ldflags = [
++      "-lnspr4"
++    ]
+ 
+     if (crashpad_is_win) {
+       if (crashpad_is_in_chromium || crashpad_is_in_dart) {
+--- a/chrome/common/search/BUILD.gn
++++ b/chrome/common/search/BUILD.gn
+@@ -20,6 +20,9 @@
+     "//chrome/common/themes:autogenerated_theme_util",
+     "//skia",
+   ]
++  ldflags = [
++    "-lnspr4"
++  ]
+ }
+ 
+ compiled_action("generate_chrome_colors_info") {
+--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
++++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
+@@ -31,6 +31,9 @@
+     "//net/tools/huffman_trie:huffman_trie_generator_sources",
+     "//url:url",
+   ]
++  ldflags = [
++    "-lnspr4",
++  ]
+   if (is_ios) {
+     libs = [ "UIKit.framework" ]
+   }
+--- a/components/schema_org/BUILD.gn
++++ b/components/schema_org/BUILD.gn
+@@ -33,6 +33,9 @@
+     "//base",
+     "//url",
+   ]
++  ldflags = [
++    "-lnspr4",
++  ]
+ }
+ 
+ compiled_action("schema_org_name_data") {
diff --git a/gnu/packages/patches/widelands-system-wide_minizip.patch b/gnu/packages/patches/widelands-system-wide_minizip.patch
new file mode 100644
index 0000000000..1fac0d5396
--- /dev/null
+++ b/gnu/packages/patches/widelands-system-wide_minizip.patch
@@ -0,0 +1,153 @@
+Description: use the system-wide minizip instead of the embeeded one if found.
+Forwarded-Upstream: It was provided by upstream: http://bazaar.launchpad.net/~widelands-dev/widelands/b19-debian/revision/8147
+ .
+ Thanks to Fòram na Gàidhlig for the patch.
+ 
+I just added this line to make its use easier:
+  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
+
+=== modified file 'CMakeLists.txt'
+---
+ CMakeLists.txt                     |    3 +++
+ Modules/FindMinizip.cmake          |   37 +++++++++++++++++++++++++++++++++++++
+ cmake/WlFunctions.cmake            |    7 +++++++
+ src/io/CMakeLists.txt              |    2 +-
+ src/third_party/CMakeLists.txt     |   20 +++++++++++---------
+ src/third_party/minizip/README.txt |    4 ++++
+ 6 files changed, 63 insertions(+), 10 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -43,6 +43,7 @@
+ endif(POLICY CMP0074)
+ 
+ include("${CMAKE_SOURCE_DIR}/cmake/WlFunctions.cmake")
++set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_HOME_DIRECTORY}/Modules)
+ 
+ option(OPTION_USE_GLBINDING "Use glbinding instead of GLEW" OFF)
+ option(OPTION_GLEW_STATIC "Use static GLEW Library" OFF)
+@@ -105,6 +106,8 @@
+ find_package(SDL2_ttf REQUIRED)
+ find_package(ZLIB REQUIRED)
+ find_package(ICU REQUIRED)
++find_package(Minizip)
++
+ if(OPTION_USE_GLBINDING)
+   find_package(glbinding REQUIRED)
+ else()
+--- /dev/null
++++ b/Modules/FindMinizip.cmake
+@@ -0,0 +1,37 @@
++# - Try to find Minizip
++# Once done this will define
++#  
++#  MINIZIP_FOUND        - system has MINIZIP
++#  MINIZIP_INCLUDE_DIR  - the MINIZIP include directory
++#  MINIZIP_LIBRARY_DIR  - where the libraries are
++#  MINIZIP_LIBRARY      - Link these to use MINIZIP
++#   
++
++IF (MINIZIP_INCLUDE_DIR)
++  # Already in cache, be silent
++  SET(MINIZIP_FIND_QUIETLY TRUE)
++ENDIF (MINIZIP_INCLUDE_DIR)
++
++FIND_PATH( MINIZIP_INCLUDE_DIR 
++	  NAMES zip.h unzip.h ioapi.h
++	  PATHS /usr/local/include /usr/include
++	  PATH_SUFFIXES minizip/ )
++SET( MINIZIP_NAMES minizip MINIZIP )
++FIND_LIBRARY( MINIZIP_LIBRARY
++	      NAMES ${MINIZIP_NAMES}
++	      PATHS /usr/lib /usr/local/lib )
++
++GET_FILENAME_COMPONENT( MINIZIP_LIBRARY_DIR ${MINIZIP_LIBRARY} PATH )
++
++IF (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
++   SET(MINIZIP_FOUND TRUE)
++   SET(MINIZIP_LIBRARY_DIR ${MINIZIP_LIBRARY} )
++   IF (NOT MINIZIP_FIND_QUIETLY)
++     MESSAGE (STATUS "Found Minizip: ${MINIZIP_LIBRARY} ${MINIZIP_INCLUDE_DIR}")
++   ENDIF (NOT MINIZIP_FIND_QUIETLY)
++ELSE (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
++   SET( MINIZIP_FOUND FALSE )
++   SET( MINIZIP_LIBRARY_DIR )
++   SET( MINIZIP_EXTRA_DEFINITIONS )
++ENDIF (MINIZIP_INCLUDE_DIR AND MINIZIP_LIBRARY)
++
+--- a/cmake/WlFunctions.cmake
++++ b/cmake/WlFunctions.cmake
+@@ -81,6 +81,14 @@
+   if(ARG_USES_ZLIB)
+     wl_include_system_directories(${NAME} ${ZLIB_INCLUDE_DIRS})
+     target_link_libraries(${NAME} ${ZLIB_LIBRARY})
++    if (MINIZIP_FOUND)
++      wl_include_system_directories(${NAME}  ${MINIZIP_INCLUDE_DIR})
++      target_link_libraries(${NAME}  ${MINIZIP_LIBRARY})
++      target_compile_definitions(${NAME} PUBLIC -DHAVE_SYSTEM_MINIZIP)
++    else(MINIZIP_FOUND)
++      target_link_libraries(${NAME}  third_party_minizip)
++      message(FATAL_ERROR "You are using widelands-bundled minizip sources. Please install your distribution's minizip dev library or urge your distribution maintainer to include the minizip library in your package repository. Thank you.")
++    endif(MINIZIP_FOUND)
+   endif()
+ 
+   # OpenGL and GLEW are one thing for us. If you use the one, you also use the
+--- a/src/third_party/CMakeLists.txt
++++ b/src/third_party/CMakeLists.txt
+@@ -1,12 +1,14 @@
+-wl_library(third_party_minizip
+-  THIRD_PARTY
+-  SRCS
+-    minizip/ioapi.h
+-    minizip/unzip.cc
+-    minizip/unzip.h
+-    minizip/zip.h
+-  USES_ZLIB
+-)
++if(NOT MINIZIP_FOUND)
++  wl_library(third_party_minizip
++    THIRD_PARTY
++    SRCS
++      ioapi.h
++      unzip.cc
++      unzip.h
++      zip.h
++    USES_ZLIB
++  )
++endif(NOT MINIZIP_FOUND)
+ 
+ wl_library(third_party_eris
+   THIRD_PARTY
+--- a/src/io/filesystem/CMakeLists.txt
++++ b/src/io/filesystem/CMakeLists.txt
+@@ -12,6 +12,7 @@
+     zip_exceptions.h
+     zip_filesystem.cc
+     zip_filesystem.h
++  USES_ZLIB
+   DEPENDS
+     base_exceptions
+     base_i18n
+@@ -19,5 +20,4 @@
+     base_macros
+     graphic_text_layout
+     io_stream
+-    third_party_minizip
+ )
+--- a/src/io/filesystem/zip_filesystem.h
++++ b/src/io/filesystem/zip_filesystem.h
+@@ -28,8 +28,14 @@
+ #include "io/filesystem/filesystem.h"
+ #include "io/streamread.h"
+ #include "io/streamwrite.h"
++
++#ifndef HAVE_SYSTEM_MINIZIP
+ #include "third_party/minizip/unzip.h"
+ #include "third_party/minizip/zip.h"
++#else
++#include <minizip/unzip.h>
++#include <minizip/zip.h>
++#endif
+ 
+ class ZipFilesystem : public FileSystem {
+ public:
diff --git a/gnu/packages/patches/x265-arm-flags.patch b/gnu/packages/patches/x265-arm-flags.patch
index f17e26f6f1..342e13270b 100644
--- a/gnu/packages/patches/x265-arm-flags.patch
+++ b/gnu/packages/patches/x265-arm-flags.patch
@@ -1,4 +1,7 @@
-https://sources.debian.org/src/x265/2.9-3/debian/patches/0001-Fix-arm-flags.patch/
+Fix build flags for ARMv7.
+
+Taken from Debian:
+https://salsa.debian.org/multimedia-team/x265/-/blob/master/debian/patches/0001-Fix-arm-flags.patch
 
 From: Sebastian Ramacher <sramacher@debian.org>
 Date: Wed, 26 Apr 2017 22:05:06 +0200
@@ -9,28 +12,25 @@ Subject: Fix arm* flags
  1 file changed, 1 insertion(+), 5 deletions(-)
 
 diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
-index 33b6523..25aecbb 100644
 --- a/source/CMakeLists.txt
 +++ b/source/CMakeLists.txt
-@@ -72,7 +72,7 @@ elseif(ARMMATCH GREATER "-1")
+@@ -77,7 +77,7 @@ elseif(ARMMATCH GREATER "-1")
+         add_definitions(-DX265_ARCH_ARM=1 -DX265_ARCH_ARM64=1 -DHAVE_ARMV6=0)
+     else()
+         message(STATUS "Detected ARM target processor")
+-        add_definitions(-DX265_ARCH_ARM=1 -DX265_ARCH_ARM64=0 -DHAVE_ARMV6=1)
++        add_definitions(-DX265_ARCH_ARM=1)
      endif()
-     message(STATUS "Detected ARM target processor")
-     set(ARM 1)
--    add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
-+    # add_definitions(-DX265_ARCH_ARM=1 -DHAVE_ARMV6=1)
  else()
      message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
-     message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
-@@ -230,12 +230,8 @@ if(GCC)
-     if(ARM AND CROSS_COMPILE_ARM)
-         set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC)
-     elseif(ARM)
--        find_package(Neon)
-         if(CPU_HAS_NEON)
--            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)
-             add_definitions(-DHAVE_NEON)
--        else()
--            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
+@@ -252,10 +252,7 @@ if(GCC)
+         else()
+             find_package(Neon)
+             if(CPU_HAS_NEON)
+-                set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)
+                 add_definitions(-DHAVE_NEON)
+-            else()
+-                set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
+             endif()
          endif()
      endif()
-     add_definitions(${ARM_ARGS})
diff --git a/gnu/packages/patches/xpra-4.0.1-systemd-run.patch b/gnu/packages/patches/xpra-4.0.1-systemd-run.patch
new file mode 100644
index 0000000000..1ea11830a5
--- /dev/null
+++ b/gnu/packages/patches/xpra-4.0.1-systemd-run.patch
@@ -0,0 +1,34 @@
+Disable systemd-run if the command is not found.
+
+diff -Naur xpra-4.0.1/xpra/scripts/main.py xpra-4.0.1.patched/xpra/scripts/main.py
+--- xpra-4.0.1/xpra/scripts/main.py	2020-05-17 18:12:15.000000000 +0200
++++ xpra-4.0.1.patched/xpra/scripts/main.py	2020-06-01 12:12:18.500257507 +0200
+@@ -312,16 +312,18 @@
+     if not is_systemd_pid1():
+         return False
+     #test it:
+-    cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
+-    proc = Popen(cmd, stdin=None, stdout=None, stderr=None, shell=False)
+-    r = pollwait(proc, timeout=1)
+-    if r is None:
+-        try:
+-            proc.terminate()
+-        except Exception:
+-            pass
+-    return r==0
+-
++    try:
++        cmd = ["systemd-run", "--quiet", "--user", "--scope", "--", "true"]
++        proc = Popen(cmd, stdin=None, stdout=None, stderr=None, shell=False)
++        r = pollwait(proc, timeout=1)
++        if r is None:
++            try:
++                proc.terminate()
++            except Exception:
++                pass
++        return r==0
++    except FileNotFoundError:
++        return False
+ 
+ def run_mode(script_file, error_cb, options, args, mode, defaults):
+     #configure default logging handler:
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index 0d58c21eee..c26977be1f 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -325,7 +325,7 @@ you to figure out what is going on in that merge you keep avoiding.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/getpatchwork/patchwork.git")
+                    (url "https://github.com/getpatchwork/patchwork")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 0ad1263812..5cf93ad724 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -312,7 +312,7 @@ Poppler PDF rendering library.")
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/libharu/libharu.git")
+                   (url "https://github.com/libharu/libharu")
                    (commit (string-append
                             "RELEASE_"
                             (string-join (string-split version #\.) "_")))))
@@ -827,7 +827,7 @@ using a stylus.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/xournalpp/xournalpp.git")
+             (url "https://github.com/xournalpp/xournalpp")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1064,7 +1064,7 @@ the framebuffer.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dawbarton/pdf2svg.git")
+                    (url "https://github.com/dawbarton/pdf2svg")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1161,7 +1161,7 @@ python-pypdf2 instead.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jeromerobert/pdfarranger.git")
+             (url "https://github.com/jeromerobert/pdfarranger")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1261,7 +1261,7 @@ multiple files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pdfpc/pdfpc.git")
+             (url "https://github.com/pdfpc/pdfpc")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index 04e37a3b85..e02dd757e5 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -268,7 +268,7 @@ prompt.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/perlpilot/Grammar-Profiler-Simple.git")
+                 (url "https://github.com/perlpilot/Grammar-Profiler-Simple")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -315,7 +315,7 @@ deserializing JSON.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/jonathanstowe/JSON-Class.git")
+               (url "https://github.com/jonathanstowe/JSON-Class")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -347,7 +347,7 @@ respectively.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/timo/json_fast.git")
+               (url "https://github.com/timo/json_fast")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -370,7 +370,7 @@ but it offers a few extra features.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/jonathanstowe/JSON-Marshal.git")
+               (url "https://github.com/jonathanstowe/JSON-Marshal")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -397,7 +397,7 @@ of the same class using @code{JSON::Unmarshal}.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/jonathanstowe/JSON-Name.git")
+               (url "https://github.com/jonathanstowe/JSON-Name")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -426,7 +426,7 @@ It will of course also be needed in classes thar are going to use
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/tadzik/JSON-Unmarshal.git")
+                 (url "https://github.com/tadzik/JSON-Unmarshal")
                  (commit commit)))
         (file-name (git-file-name name version))
         (sha256
@@ -475,7 +475,7 @@ licences therein.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/jonathanstowe/META6.git")
+               (url "https://github.com/jonathanstowe/META6")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -612,7 +612,7 @@ with optional labels, or xy plots).")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/perl6/tap-harness6.git")
+               (url "https://github.com/perl6/tap-harness6")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -642,7 +642,7 @@ minimal wrapper around an instance of this module.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/tadzik/Terminal-ANSIColor.git")
+               (url "https://github.com/tadzik/Terminal-ANSIColor")
                ;; The commit where 0.5 was "tagged"
                (commit "edded4a7116ce11cbc9fb5a83669c7ba119d0212")))
         (file-name (git-file-name name version))
@@ -715,7 +715,7 @@ statement for @code{Test::Mock}.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/perl6-community-modules/uri.git")
+               (url "https://github.com/perl6-community-modules/uri")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -763,7 +763,7 @@ character numbering.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/ugexe/zef.git")
+               (url "https://github.com/ugexe/zef")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
diff --git a/gnu/packages/phabricator.scm b/gnu/packages/phabricator.scm
index 6c94a13114..e4a4f79942 100644
--- a/gnu/packages/phabricator.scm
+++ b/gnu/packages/phabricator.scm
@@ -33,7 +33,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/phacility/libphutil.git")
+                      (url "https://github.com/phacility/libphutil")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -72,7 +72,7 @@ PHP.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/phacility/arcanist.git")
+                      (url "https://github.com/phacility/arcanist")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 4904fa1db1..09767f464e 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
@@ -39,9 +41,11 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cups)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages file)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -51,12 +55,16 @@
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages image-processing)
   #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages iso-codes)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages man)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages opencl)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
@@ -457,7 +465,7 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "2.6.3")
+    (version "3.0.2")
     (source
      (origin
        (method url-fetch)
@@ -465,13 +473,22 @@ photographic equipment.")
              "https://github.com/darktable-org/darktable/releases/"
              "download/release-" version "/darktable-" version ".tar.xz"))
        (sha256
-        (base32 "1w3q3dhcxa0bs590zbsj61ap8z84wmn04xs5q3gjwisqhjf9j655"))))
+        (base32 "1yrnkw8c47kmy2x6m1xp69hwyk02xyc8pd9kvcmyj54lzrhzdfka"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
        #:configure-flags '("-DBINARY_PACKAGE_BUILD=On")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'prepare-build-environment
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CC" "clang") (setenv "CXX" "clang++")
+             ;; Darktable looks for opencl-c.h in the LLVM dir. Guix installs
+             ;; it to the Clang dir. We fix this by patching CMakeLists.txt.
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LLVM_INSTALL_PREFIX\\}")
+                (assoc-ref %build-inputs "clang")))
+             #t))
          (add-before 'configure 'set-LDFLAGS-and-CPATH
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (setenv "LDFLAGS"
@@ -483,35 +500,62 @@ photographic equipment.")
              (setenv "CPATH"
                      (string-append (assoc-ref inputs "ilmbase")
                                     "/include/OpenEXR:" (or (getenv "CPATH") "")))
-             #t)))))
+             #t))
+          (add-after 'install 'wrap-program
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (wrap-program (string-append (assoc-ref outputs "out")
+                                           "/bin/darktable")
+                ;; For GtkFileChooserDialog.
+                `("GSETTINGS_SCHEMA_DIR" =
+                  (,(string-append (assoc-ref inputs "gtk+")
+                                   "/share/glib-2.0/schemas"))))
+              #t)))))
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("clang" ,clang-9)
+       ("desktop-file-utils" ,desktop-file-utils)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("intltool" ,intltool)
+       ("llvm" ,llvm-9) ;should match the Clang version
+       ("opencl-headers" ,opencl-headers)
        ("perl" ,perl)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("po4a" ,po4a)))
     (inputs
-     `(("libxslt" ,libxslt)
-       ("libxml2" ,libxml2)
-       ("pugixml" ,pugixml)
+     `(("cairo" ,cairo)
+       ("colord-gtk" ,colord-gtk)
+       ("cups" ,cups)
+       ("curl" ,curl)
+       ("dbus-glib" ,dbus-glib)
+       ("exiv2" ,exiv2)
+       ("freeimage" ,freeimage)
+       ("gmic" ,gmic)
+       ("graphicsmagick" ,graphicsmagick)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
        ("gtk+" ,gtk+)
-       ("sqlite" ,sqlite)
+       ("ilmbase" ,ilmbase)
+       ("iso-codes" ,iso-codes)
+       ("json-glib" ,json-glib)
+       ("lcms" ,lcms)
+       ("lensfun" ,lensfun)
+       ("libgphoto2" ,libgphoto2)
        ("libjpeg" ,libjpeg-turbo)
+       ("libomp" ,libomp)
        ("libpng" ,libpng)
-       ("cairo" ,cairo)
-       ("lcms" ,lcms)
-       ("exiv2" ,exiv2)
+       ("librsvg" ,librsvg)
+       ("libsecret" ,libsecret)
+       ("libsoup" ,libsoup)
        ("libtiff" ,libtiff)
-       ("curl" ,curl)
-       ("libgphoto2" ,libgphoto2)
-       ("dbus-glib" ,dbus-glib)
+       ("libwebp" ,libwebp)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("lua" ,lua) ;for plugins
        ("openexr" ,openexr)
-       ("ilmbase" ,ilmbase)
-       ("libsoup" ,libsoup)
+       ("openjpeg" ,openjpeg)
+       ("osm-gps-map" ,osm-gps-map)
+       ("pugixml" ,pugixml)
        ("python-jsonschema" ,python-jsonschema)
-       ("libwebp" ,libwebp)
-       ("lensfun" ,lensfun)
-       ("librsvg" ,librsvg)
-       ("json-glib" ,json-glib)
-       ("freeimage" ,freeimage)))
+       ("sqlite" ,sqlite)))
     (home-page "https://www.darktable.org")
     (synopsis "Virtual lighttable and darkroom for photographers")
     (description "Darktable is a photography workflow application and RAW
@@ -520,6 +564,51 @@ them through a zoomable lighttable and enables you to develop raw images
 and enhance them.")
     ;; See src/is_supported_platform.h for supported platforms.
     (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
+    (license (list license:gpl3+ ;; Darktable itself.
+                   license:lgpl2.1+)))) ;; Rawspeed library.
+
+(define-public photoflare
+  (package
+    (name "photoflare")
+    (version "1.6.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/photoflare/photoflare")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0a394324h7ds567z3i3pw6kkii78n4qwdn129kgkkm996yh03q89"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ;no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((magickpp (assoc-ref inputs "graphicsmagick"))
+                   (out (assoc-ref outputs "out")))
+               (invoke "qmake"
+                       (string-append "INCLUDEPATH += " magickpp
+                                      "/include/GraphicsMagick")
+                       (string-append "PREFIX=" out)
+                       "Photoflare.pro")))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("graphicsmagick" ,graphicsmagick)
+       ("libomp" ,libomp)
+       ("qtbase" ,qtbase)))
+    (home-page "https://photoflare.io")
+    (synopsis "Quick, simple but powerful image editor")
+    (description "Photoflare is a cross-platform image editor with an aim
+to balance between powerful features and a very friendly graphical user
+interface.  It suits a wide variety of different tasks and users who value a
+more nimble workflow.  Features include basic image editing capabilities,
+paint brushes, image filters, colour adjustments and more advanced features
+such as Batch image processing.")
     (license license:gpl3+)))
 
 (define-public hugin
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 6d9f46e960..7e6a646c0c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -60,7 +60,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.4.7")
+    (version "7.4.8")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -68,7 +68,7 @@
                                   "php-" version ".tar.xz"))
               (sha256
                (base32
-                "1brgnp11vpy1619cx0cncih02rg2k20wllm21vxbd2nd4j7qymak"))
+                "0i9j0yykm6ww021iq89g83qjliq1mqiyhqdn3kq8lbkk1f4l6a34"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index f6881f6776..8ddc8ebc74 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -203,14 +203,14 @@ colors, styles, options and details.")
 (define-public asymptote
   (package
     (name "asymptote")
-    (version "2.65")
+    (version "2.66")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/asymptote/"
                            version "/asymptote-" version ".src.tgz"))
        (sha256
-        (base32 "0i4qqlvzz69mhdq6kf689sa9rxfb1cwsg1nx88hryb291hddgqqm"))))
+        (base32 "1l2cv238fjqjkm4gam1aaxri0p3yxfmn067mhixziwybr3g5nq52"))))
     (build-system gnu-build-system)
     ;; Note: The 'asy' binary retains a reference to docdir for use with its
     ;; "help" command in interactive mode, so adding a "doc" output is not
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 95a9ea9211..df80f12077 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -107,7 +107,7 @@ similar to getopt(3), it contains a number of enhancements, including:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gflags/gflags.git")
+             (url "https://github.com/gflags/gflags")
              (commit (string-append "v" version))))
        (sha256
         (base32 "147i3md3nxkjlrccqg4mq1kyzc7yrhvqv5902iibc7znkvzdvlp0"))
diff --git a/gnu/packages/presentation.scm b/gnu/packages/presentation.scm
new file mode 100644
index 0000000000..0ad407d36c
--- /dev/null
+++ b/gnu/packages/presentation.scm
@@ -0,0 +1,90 @@
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages presentation)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages figlet)
+  #:use-module (gnu packages games)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz))
+
+(define-public presentty
+  (package
+    (name "presentty")
+    (version "0.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "presentty" version))
+        (sha256
+         (base32
+          "1qpy992hyg1amjl0acic3agj20spcpv5m0ncg1283mmxs8cs3xy9"))
+        (patches
+          (list
+            (origin
+              (method url-fetch)
+              (uri "https://sources.debian.org/data/main/p/presentty/0.2.1-1/debian/patches/presentty-python3.patch")
+              (sha256
+               (base32
+                "03d3ylh1z99g4dqj7aka60spagnwss9mbacd7jbpk1gazflnssz1")))))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; Test suite hasn't withstood the test of time.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'wrap
+           (lambda* (#:key python inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin/"))
+                    (python (assoc-ref inputs "python")))
+               (for-each
+                 (lambda (program)
+                   (wrap-program (string-append bin program)
+                     `("PATH" ":" prefix (,(dirname (which "cowsay"))
+                                          ,(dirname (which "figlet"))
+                                          ,(dirname (which "jp2a"))))
+                     `("PYTHONPATH" prefix
+                       ,(cons (string-append out "/lib/python"
+                                             (python-version python)
+                                             "/site-packages")
+                              (search-path-as-string->list
+                                (or (getenv "PYTHONPATH") ""))))))
+                 '("presentty" "presentty-console")))
+             #t)))))
+    (inputs
+     `(("cowsay" ,cowsay)
+       ("figlet" ,figlet)
+       ("jp2a" ,jp2a)
+       ("python-docutils" ,python-docutils)
+       ("python-pillow" ,python-pillow-2.9)
+       ("python-six" ,python-six)
+       ("python-urwid" ,python-urwid)))
+    (native-inputs
+     `(("python-pbr" ,python-pbr)
+       ("python-pygments" ,python-pygments)))
+    (home-page "http://git.inaugust.com/cgit/presentty/")
+    (synopsis "Console-based presentation system")
+    (description "Presentty is a console-based presentation program where slides
+are authored in reStructuredText.  Its features include, but are not limited to:
+Cross-fade animations, progressive list display, panning transitions, syntax
+highlighting, Cowsay and figlet integration, ANSI art, JPEG display.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index c4bdbe9000..9f9a746844 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -32,18 +32,18 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix utils)
   #:use-module (gnu packages)
-  #:use-module (gnu packages ghostscript)
-  #:use-module (gnu packages groff)
-  #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages gv)
-  #:use-module (gnu packages boost)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gperf)
+  #:use-module (gnu packages groff)
+  #:use-module (gnu packages gv)
+  #:use-module (gnu packages imagemagick)
   #: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 swig))
 
 (define-public a2ps
diff --git a/gnu/packages/printers.scm b/gnu/packages/printers.scm
index 7b2c2429dd..bbf98ee653 100644
--- a/gnu/packages/printers.scm
+++ b/gnu/packages/printers.scm
@@ -42,7 +42,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Timmmm/robocut.git")
+             (url "https://github.com/Timmmm/robocut")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -81,7 +81,7 @@ with Graphtec and Sihouette plotting cutters using an SVG file as its input.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pdewacht/brlaser.git")
+                    (url "https://github.com/pdewacht/brlaser")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm
index bf992f6bd6..18c51a7c94 100644
--- a/gnu/packages/prolog.scm
+++ b/gnu/packages/prolog.scm
@@ -86,17 +86,17 @@ manner.  It also features an interactive interpreter.")
 (define-public swi-prolog
   (package
     (name "swi-prolog")
-    (version "8.1.21")
+    (version "8.3.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/SWI-Prolog/swipl-devel.git")
+                    (url "https://github.com/SWI-Prolog/swipl-devel")
                     (recursive? #t) ; TODO: Determine if this can be split out.
                     (commit (string-append "V" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1axdiz37dllw0ih58ffm0m95dfxqfzwahl48hpzq90rz4swcr1lq"))))
+                "1r8ypnm8vd2si5wsc9f9i612967l9pdd57bdq4n29mjnl18wznfr"))))
     (build-system cmake-build-system)
     (arguments
      `(#:parallel-build? #t
@@ -106,11 +106,9 @@ manner.  It also features an interactive interpreter.")
              "-DSWIPL_INSTALL_IN_LIB=OFF") ; FIXME: Breaks RUNPATH validation.
        #:phases
        (modify-phases %standard-phases
-         ;; XXX: Delete a variety of tests which fail either attempting to
-         ;; establish a network connection, or attempts to write to the
-         ;; immutable store. Phases marked *-pre are disabled /before/ building.
-         ;; Phases marked *-post are disabled /after/ building.
-         (add-after 'unpack 'delete-failing-tests-pre
+         ;; XXX: Delete the test phase that attempts to write to the
+         ;; immutable store.
+         (add-after 'unpack 'delete-failing-tests
            (lambda _
              (substitute* "src/CMakeLists.txt"
                ((" save") ""))
@@ -119,16 +117,6 @@ manner.  It also features an interactive interpreter.")
              (with-directory-excursion "src/Tests"
                (for-each delete-file-recursively
                          '("save")))
-             #t))
-         (add-before 'check 'delete-failing-tests-post
-           (lambda _
-             (with-directory-excursion "packages"
-               (for-each delete-file-recursively
-                         '("http"
-                           "pengines"
-                           "RDF"
-                           "semweb"
-                           "ssl")))
              #t)))))
     (native-inputs
      `(("zlib" ,zlib)
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 4ea36a2fba..7c14ddbdfa 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,13 +29,15 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system emacs)
+  #:use-module (guix build-system ruby)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages ruby))
 
 (define-public fstrm
   (package
@@ -75,7 +78,7 @@ data in motion, or as a file format for data at rest.")
 (define-public protobuf
   (package
     (name "protobuf")
-    (version "3.11.3")
+    (version "3.12.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/google/protobuf/releases/"
@@ -83,7 +86,7 @@ data in motion, or as a file format for data at rest.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0l8a1sgzhwwx5j5hv9n9zx8vkdwwn5gvd9dcpkkz4h0j17k1zywz"))))
+                "0s29dj8l9j6jk04im3ivcji1x9jm42fwjmwcmli0smz0m337xyaf"))))
     (build-system gnu-build-system)
     (inputs `(("zlib" ,zlib)))
     (outputs (list "out"
@@ -185,7 +188,7 @@ code.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mapbox/protozero.git")
+             (url "https://github.com/mapbox/protozero")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -254,3 +257,103 @@ mechanism for serializing structured data.")
      "This package provides an Emacs major mode for editing Protocol Buffer
 source files.")
     (license license:bsd-3)))
+
+(define-public ruby-protobuf
+  (package
+    (name "ruby-protobuf")
+    (version "3.10.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ruby-protobuf/protobuf")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1yzz7jgpp6qip5d6qhzbkf5gqaydfk3z3c1ngccwzp6w6wa75g8a"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'do-not-use-bundler-for-tests
+           (lambda _
+             (substitute* "spec/spec_helper.rb"
+               (("Bundler\\.setup.*") ""))
+             #t))
+         (add-after 'unpack 'relax-version-requirements
+           (lambda _
+             (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
+               (("'rake',.*")
+                "'rake'\n")
+               (("\"rubocop\",.*")
+                "'rubocop'\n")
+               (("\"parser\",.*")
+                "'parser'\n"))
+             #t))
+         (add-after 'unpack 'patch-protoc
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((protoc (assoc-ref inputs "protobuf")))
+               (substitute* "lib/protobuf/tasks/compile.rake"
+                 (("\"protoc\"")
+                  (string-append "\"" protoc "/bin/protoc" "\"")))
+               #t)))
+         (add-after 'unpack 'skip-failing-test
+           ;; See: https://github.com/ruby-protobuf/protobuf/issues/419
+           (lambda _
+             (substitute* "spec/lib/protobuf/rpc/connectors/ping_spec.rb"
+               (("expect\\(::IO\\)\\.to receive\\(:select\\).*" all)
+                (string-append "        pending\n" all)))
+             #t))
+         (add-after 'replace-git-ls-files 'replace-more-git-ls-files
+           (lambda _
+             (substitute* ((@@ (guix build ruby-build-system) first-gemspec))
+               (("`git ls-files -- \\{test,spec,features\\}/*`")
+                "`find test spec features -type f | sort`")
+               (("`git ls-files -- bin/*`")
+                "`find bin -type f | sort`"))
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "rspec"))))))
+    (native-inputs
+     `(("ruby-benchmark-ips" ,ruby-benchmark-ips)
+       ("ruby-ffi-rzmq" ,ruby-ffi-rzmq)
+       ("ruby-parser" ,ruby-parser)
+       ("ruby-pry-byebug" ,ruby-pry-byebug)
+       ("ruby-pry-stack-explorer" ,ruby-pry-stack-explorer)
+       ("ruby-rake" ,ruby-rake)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-ruby-prof" ,ruby-ruby-prof)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-timecop" ,ruby-timecop)
+       ("ruby-varint" ,ruby-varint)
+       ("ruby-yard" ,ruby-yard)))
+    (inputs
+     `(("protobuf" ,protobuf)))
+    (propagated-inputs
+     `(("ruby-activesupport" ,ruby-activesupport)
+       ("ruby-middleware" ,ruby-middleware)
+       ("ruby-thor" ,ruby-thor)))
+    (home-page "https://github.com/ruby-protobuf/protobuf")
+    (synopsis "Implementation of Google's Protocol Buffers in Ruby")
+    (description "Protobuf is an implementation of Google's Protocol Buffers
+in pure Ruby.")
+    (license license:expat)))
+
+;;; This is a modified ruby-protobuf package used by ruby-cucumber-messages
+;;; until https://github.com/ruby-protobuf/protobuf/pull/411 and
+;;; https://github.com/ruby-protobuf/protobuf/pull/415 are merged upstream.
+(define-public ruby-protobuf-cucumber
+  (hidden-package
+   (package
+     (inherit ruby-protobuf)
+     (name "ruby-protobuf-cucumber")
+     (version "3.10.8")
+     (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "protobuf-cucumber" version))
+        (sha256
+         (base32
+          "1rd6naabhpfb1i5dr6fp5mqwaawsx0mqm73h5ycwkgbm1n2si872")))))))
diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm
index b4a8d981a2..58c7e5bd7d 100644
--- a/gnu/packages/pulseaudio.scm
+++ b/gnu/packages/pulseaudio.scm
@@ -354,7 +354,7 @@ curses-style interfaces.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/masmu/pulseaudio-dlna.git")
+               (url "https://github.com/masmu/pulseaudio-dlna")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -403,7 +403,7 @@ install one or more of the following packages alongside pulseaudio-dlna:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cdemoulins/pamixer.git")
+             (url "https://github.com/cdemoulins/pamixer")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -438,7 +438,7 @@ volume levels of the sinks (get, set, decrease, increase, toggle mute, etc).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/christophgysin/pasystray.git")
+             (url "https://github.com/christophgysin/pasystray")
              (commit (string-append name "-" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 1071abdbad..2e3cfe05c5 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -126,35 +126,38 @@ interactions, which will update them to correspond to the new API.")
     (license license:expat)))
 
 (define-public python-pytest-vcr
-  (package
-    (name "python-pytest-vcr")
-    (version "1.0.2")
-    (source
-      (origin
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/ktosiek/pytest-vcr")
-               (commit version)))
-        (file-name (git-file-name name version))
-        (sha256
-         (base32
-          "1i6fin91mklvbi8jzfiswvwf1m91f43smpj36a17xrzk4gisfs6i"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (add-installed-pythonpath inputs outputs)
-             (invoke "pytest" "tests/"))))))
-    (propagated-inputs
-     `(("python-pytest" ,python-pytest)
-       ("python-vcrpy" ,python-vcrpy)))
-    (home-page "https://github.com/ktosiek/pytest-vcr")
-    (synopsis "Plugin for managing VCR.py cassettes")
-    (description
-     "Plugin for managing VCR.py cassettes.")
-    (license license:expat)))
+  ;; This commit fixes integration with pytest-5
+  (let ((commit "4d6c7b3e379a6a7cba0b8f9d20b704dc976e9f05")
+        (revision "1"))
+    (package
+      (name "python-pytest-vcr")
+      (version (git-version "1.0.2" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/ktosiek/pytest-vcr")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1yk988zi0la6zpcm3fff0mxf942di2jiymrfqas19nyngj5ygaqs"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (replace 'check
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "tests/"))))))
+      (propagated-inputs
+       `(("python-pytest" ,python-pytest)
+         ("python-vcrpy" ,python-vcrpy)))
+      (home-page "https://github.com/ktosiek/pytest-vcr")
+      (synopsis "Plugin for managing VCR.py cassettes")
+      (description
+       "Plugin for managing VCR.py cassettes.")
+      (license license:expat))))
 
 (define-public python-pytest-checkdocs
   (package
@@ -183,14 +186,14 @@ of the project to ensure it renders properly.")
 (define-public python-pytest-flake8
   (package
     (name "python-pytest-flake8")
-    (version "1.0.4")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pytest-flake8" version))
        (sha256
         (base32
-         "1h30gd21fjsafqxwclf25sdh89vrdz7rsh4lzw11aiw7ww9mq8jd"))))
+         "09vhn7r77s1yiqnlwfvh5585f904zpyd6620a90dpccfr1cbp0hv"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-flake8" ,python-flake8)))
@@ -360,6 +363,99 @@ framework.")
 for the @code{pytest} framework.")
     (license license:expat)))
 
+(define-public python-pytest-benchmark
+  (package
+    (name "python-pytest-benchmark")
+    (version "3.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-benchmark" version))
+       (sha256
+        (base32
+         "0a4mpb4j73dsyk47hd1prrjpfk4r458s102cn80rf253jg818hxd"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-py-cpuinfo" ,python-py-cpuinfo)))
+    (native-inputs
+     `(("python-pathlib2" ,python-pathlib2)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/ionelmc/pytest-benchmark")
+    (synopsis "Pytest fixture for benchmarking code")
+    (description
+     "This package provides a pytest fixture that will group the tests into
+rounds that are calibrated to the chosen timer.")
+    (license license:bsd-2)))
+
+(define-public python-pytest-services
+  (package
+    (name "python-pytest-services")
+    (version "1.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pytest-services" version))
+        (sha256
+         (base32
+          "0b2zfv04w6m3gp2v44ifdhx22vcji069qnn95ry3zcyxib7cjnq3"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Tests not included in release tarball.
+    (propagated-inputs
+     `(("python-psutil" ,python-psutil)
+       ("python-requests" ,python-requests)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/pytest-dev/pytest-services")
+    (synopsis "Services plugin for pytest testing framework")
+    (description
+     "This plugin provides a set of fixtures and utility functions to start
+service processes for your tests with pytest.")
+    (license license:expat)))
+
+(define-public python-pytest-aiohttp
+  (package
+    (name "python-pytest-aiohttp")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-aiohttp" version))
+       (sha256
+        (base32
+         "0kx4mbs9bflycd8x9af0idcjhdgnzri3nw1qb0vpfyb3751qaaf9"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)))
+    (home-page "https://github.com/aio-libs/pytest-aiohttp/")
+    (synopsis "Pytest plugin for aiohttp support")
+    (description "This package provides a pytest plugin for aiohttp support.")
+    (license license:asl2.0)))
+
+(define-public python-pytest-flask
+  (package
+    (name "python-pytest-flask")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pytest-flask" version))
+       (sha256
+        (base32
+         "1hln7mwgdzfi5ma0kqfsi768l7p24jhkw8l0imhifwy08nh7hmjd"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-flask" ,python-flask)
+       ("python-pytest" ,python-pytest)
+       ("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-werkzeug" ,python-werkzeug)))
+    (home-page "https://github.com/pytest-dev/pytest-flask")
+    (synopsis "Pytest fixtures to test Flask applications")
+    (description
+     "This pytest plugin provides fixtures to simplify Flask app testing.")
+    (license license:expat)))
+
 (define-public python-codacy-coverage
   (package
     (name "python-codacy-coverage")
@@ -404,3 +500,37 @@ analysing code quality.")
     (description "This package provides a library for replying fake data to
 Python software under test, when they make an HTTP query.")
     (license license:asl2.0)))
+
+(define-public python-atpublic
+  (package
+    (name "python-atpublic")
+    (version "1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "atpublic" version))
+        (sha256
+         (base32
+          "0i3sbxkdlbb4560rrlmwwd5y4ps7k73lp4d8wnmd7ag9k426gjkx"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'enable-c-implementation
+           (lambda _
+             (setenv "ATPUBLIC_BUILD_EXTENSION" "yes")
+             #t))
+         (replace 'check
+           (lambda _
+             (invoke "python" "-m" "nose2" "-v"))))))
+    (native-inputs
+     `(("python-nose2" ,python-nose2)))
+    (home-page "https://public.readthedocs.io/")
+    (synopsis "@code{@@public} decorator for populating @code{__all__}")
+    (description
+     "This Python module adds a @code{@@public} decorator and function which
+populates a module's @code{__all__} and optionally the module globals.  With
+it, the declaration of a name's public export semantics are not separated from
+the implementation of that name.")
+    (license (list license:asl2.0
+                   license:lgpl3))))    ; only for setup_helpers.py
diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm
index 42855f0298..730b247414 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;;
@@ -133,6 +133,26 @@ the LZ4 frame format.")
 (define-public python2-lzstring
   (package-with-python2 python-lzstring))
 
+(define-public python-brotli
+  (package
+    (name "python-brotli")
+    (version "1.0.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Brotli" version ".zip"))
+        (sha256
+         (base32
+          "19x5dqxckb62n37mpnczp21rfxqvgpm0ki5ds8ac65zx8hbxqf05"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://github.com/google/brotli")
+    (synopsis "Python bindings for the Brotli compression library")
+    (description
+     "This package provides python bindings for the Brotli compression library.")
+    (license license:asl2.0)))
+
 (define-public bitshuffle
   (package
     (name "bitshuffle")
@@ -259,6 +279,7 @@ wrapper.  It provides a backport of the @code{Path} object.")
   (hidden-package
    (package/inherit
     python2-zipp
+    (name "python2-zipp-bootstrap")
     (arguments
      `(#:tests? #f
        ,@(package-arguments python2-zipp)))
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 5c9c251c01..97f5903840 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -205,14 +205,14 @@ This package provides a Python interface for BLAKE2.")
 (define-public python-paramiko
   (package
     (name "python-paramiko")
-    (version "2.4.2")
+    (version "2.7.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "paramiko" version))
        (sha256
         (base32
-         "1jqgj2gl1pz7bi2aab1r2xq0ml0gskmm9p235cg9y32nydymm5x8"))))
+         "17wx8lkhqxmddfdq7z7x45xqq2w3gwa974hpq1n3y0dqbn4r414j"))))
     (build-system python-build-system)
     (arguments
      `(;; FIXME: Tests require many unpackaged libraries, see dev-requirements.txt.
@@ -719,7 +719,7 @@ ECB and OFB).")
       (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/wbond/asn1crypto.git")
+              (url "https://github.com/wbond/asn1crypto")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -739,26 +739,44 @@ PKCS#8, PKCS#12, PKCS#5, X.509 and TSP.")
 (define-public python-pynacl
   (package
     (name "python-pynacl")
-    (version "1.3.0")
+    (version "1.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyNaCl" version))
        (modules '((guix build utils)))
-       ;; Remove bundled libsodium.
-       (snippet '(begin (delete-file-recursively "src/libsodium")
-                        #t))
+       (snippet
+        '(begin
+           ;; Remove spurious dependency on python-wheel, can be removed
+           ;; for 1.5.
+           (substitute* "setup.py"
+             (("\"wheel\"") ""))
+           ;; Remove bundled libsodium.
+           (delete-file-recursively "src/libsodium")
+           #t))
        (sha256
         (base32
-         "0330wyvggm19xhmwmz9rrr97lzbv3siwfy50gmax3vvgs7nh0q8c"))))
+         "01b56hxrbif3hx8l6rwz5kljrgvlbj7shmmd2rjh0hn7974a5sal"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
+     `(#:modules (,@%python-build-system-modules
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (srfi srfi-26))
+       #:phases
+       (modify-phases (@ (guix build python-build-system) %standard-phases)
          (add-before 'build 'use-system-sodium
            (lambda _
              (setenv "SODIUM_INSTALL" "system")
-             #t)))))
+             #t))
+         (replace 'check
+           (lambda _
+             (let ((build-directory
+                    (car (scandir "build" (cut string-prefix? "lib" <>)))))
+               (setenv "PYTHONPATH"
+                       (string-append "./build/" build-directory ":"
+                                      (getenv "PYTHONPATH")))
+               (invoke "pytest" "-vv")))))))
     (native-inputs
      `(("python-hypothesis" ,python-hypothesis)
        ("python-pytest" ,python-pytest)))
@@ -1197,7 +1215,6 @@ Password-Authenticated Key Exchange algorithm.")
      `(("python-automat" ,python-automat)
        ("python-idna" ,python-idna)
        ("python-incremental" ,python-incremental)
-       ("python-ipaddress" ,python-ipaddress)
        ("python-service-identity" ,python-service-identity)
        ("python-twisted" ,python-twisted)
        ("python-zope-interface" ,python-zope-interface)))
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 2f7516b9f6..88843c1fb2 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -8,6 +8,8 @@
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,7 +39,9 @@
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages time)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
@@ -195,16 +199,47 @@ depends on @code{scipy.weave}.  For new code, users are recommended to use
 Cython.")
     (license license:bsd-3)))
 
+(define-public python-scikit-fuzzy
+  (package
+    (name "python-scikit-fuzzy")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "scikit-fuzzy" version))
+       (sha256
+        (base32 "0bp1n771fj44kdp7a00bcvfwirvv2rc803b7g6yf3va7v0j29c8s"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "nosetests" "-s" "-v" "skfuzzy")
+             #t)))))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-networkx" ,python-networkx)
+       ("python-numpy" ,python-numpy)
+       ("python-scipy" ,python-scipy)))
+    (home-page "https://github.com/scikit-fuzzy/scikit-fuzzy")
+    (synopsis "Fuzzy logic toolkit for SciPy")
+    (description
+     "This package implements many useful tools for projects involving fuzzy
+logic, also known as grey logic.")
+    (license license:bsd-3)))
+
 (define-public python-scikit-image
   (package
     (name "python-scikit-image")
-    (version "0.14.2")
+    (version "0.17.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "scikit-image" version))
        (sha256
-        (base32 "07qchljkyxvg5nrm12fvszi7pmjk4m01qp0w0z8syxzxxs20pz8s"))))
+        (base32 "1cyqqbcbrg3prc36wis0sm3q5rjhd7h9bp33jwfyixzhi02lr5dx"))))
     (build-system python-build-system)
     (arguments
      ;; TODO: Some tests require running X11 server. Disable them?
@@ -213,13 +248,15 @@ Cython.")
     (propagated-inputs
      `(("python-cloudpickle" ,python-cloudpickle)
        ("python-dask" ,python-dask)
+       ("python-imageio" ,python-imageio)
        ("python-matplotlib" ,python-matplotlib)
        ("python-networkx" ,python-networkx)
        ("python-numpy" ,python-numpy)
        ("python-pillow" ,python-pillow)
        ("python-pywavelets" ,python-pywavelets)
        ("python-scipy" ,python-scipy)
-       ("python-six" ,python-six)))
+       ("python-six" ,python-six)
+       ("python-tifffile" ,python-tifffile)))
     (native-inputs
      `(("python-cython" ,python-cython)))
     (home-page "https://scikit-image.org/")
@@ -231,13 +268,13 @@ Cython.")
 (define-public python-pandas
   (package
     (name "python-pandas")
-    (version "0.25.2")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pandas" version))
        (sha256
-        (base32 "1gp2pvzdiakvgjmykdzdlzrsfbg4vjm49jjdl9s0ha0a3yfs34fa"))))
+        (base32 "1a2gv3g6jr6vb5ca43fkwjl5xf86wpfz8y3zcy787adjl0hdkib9"))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -249,8 +286,15 @@ Cython.")
                     (lambda* (#:key inputs #:allow-other-keys)
                       (let ((which (assoc-ref inputs "which")))
                         (substitute* "pandas/io/clipboard/__init__.py"
-                          (("^CHECK_CMD = .*")
-                           (string-append "CHECK_CMD = \"" which "\"\n"))))
+                          (("^WHICH_CMD = .*")
+                           (string-append "WHICH_CMD = \"" which "\"\n"))))
+                      #t))
+                  (add-before 'check 'prepare-x
+                    (lambda _
+                      (system "Xvfb &")
+                      (setenv "DISPLAY" ":0")
+                      ;; xsel needs to write a log file.
+                      (setenv "HOME" "/tmp")
                       #t))
                   (replace 'check
                     (lambda _
@@ -265,25 +309,19 @@ Cython.")
                         (substitute* "setup.cfg"
                           (("addopts = --strict-data-files") "addopts = "))
                         (with-directory-excursion build-directory
-                          ;; Delete tests that require "moto" which is not yet
-                          ;; in Guix.
-                          (for-each delete-file
-                                    '("pandas/tests/io/conftest.py"
-                                      "pandas/tests/io/json/test_compression.py"
-                                      "pandas/tests/io/parser/test_network.py"
-                                      "pandas/tests/io/test_parquet.py"))
                           (invoke "pytest" "-vv" "pandas" "--skip-slow"
-                                  "--skip-network" "-k"
-                                  ;; XXX: Due to the deleted tests above.
-                                  "not test_read_s3_jsonl"))))))))
+                                  "--skip-network"))))))))
     (propagated-inputs
-     `(("python-numpy" ,python-numpy)
+     `(("python-jinja2" ,python-jinja2)
+       ("python-numpy" ,python-numpy)
        ("python-openpyxl" ,python-openpyxl)
        ("python-pytz" ,python-pytz)
        ("python-dateutil" ,python-dateutil)
        ("python-xlrd" ,python-xlrd)))
     (inputs
-     `(("which" ,which)))
+     `(("which" ,which)
+       ("xclip" ,xclip)
+       ("xsel" ,xsel)))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-beautifulsoup4" ,python-beautifulsoup4)
@@ -291,7 +329,9 @@ Cython.")
        ("python-html5lib" ,python-html5lib)
        ("python-nose" ,python-nose)
        ("python-pytest" ,python-pytest)
-       ("python-pytest-mock" ,python-pytest-mock)))
+       ("python-pytest-mock" ,python-pytest-mock)
+       ;; Needed to test clipboard support.
+       ("xorg-server" ,xorg-server-for-tests)))
     (home-page "https://pandas.pydata.org")
     (synopsis "Data structures for data analysis, time series, and statistics")
     (description
@@ -303,10 +343,33 @@ doing practical, real world data analysis in Python.")
     (properties `((python2-variant . ,(delay python2-pandas))))
     (license license:bsd-3)))
 
+(define-public python-pandas-0.25
+  (package
+    (inherit python-pandas)
+    (version "0.25.3")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pandas" version))
+              (sha256
+               (base32
+                "191048m6kdc6yfvqs9w412lq60cfvigrsb57y0x116lwibgp9njj"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-pandas)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'patch-which
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((which (assoc-ref inputs "which")))
+                 (substitute* "pandas/io/clipboard/__init__.py"
+                   (("^CHECK_CMD = .*")
+                     (string-append "CHECK_CMD = \"" which "\"\n"))))
+               #t))
+           (delete 'prepare-x)))))))
+
 ;; Pandas 0.24.x are the last versions that support Python 2.
 (define-public python2-pandas
   (let ((pandas (package-with-python2
-                 (strip-python2-variant python-pandas))))
+                 (strip-python2-variant python-pandas-0.25))))
     (package
       (inherit pandas)
       (version "0.24.2")
@@ -325,3 +388,63 @@ doing practical, real world data analysis in Python.")
                       (("if 'NULL byte' in msg:")
                        "if 'NULL byte' in msg or 'line contains NUL' in msg:"))
                     #t)))))))
+
+(define-public python-xarray
+  (package
+    (name "python-xarray")
+    (version "0.15.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "xarray" version))
+              (sha256
+               (base32
+                "1yx8j66b7rn10m2l6gmn8yr9cn38pi5cj0x0wwpy4hdnhy6i7qv4"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pandas" ,python-pandas)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "pytest"))))))
+    (home-page "https://github.com/pydata/xarray")
+    (synopsis "N-D labeled arrays and datasets")
+    (description "Xarray (formerly xray) makes working with labelled
+multi-dimensional arrays simple, efficient, and fun!
+
+Xarray introduces labels in the form of dimensions, coordinates and attributes
+on top of raw NumPy-like arrays, which allows for a more intuitive, more
+concise, and less error-prone developer experience.  The package includes a
+large and growing library of domain-agnostic functions for advanced analytics
+and visualization with these data structures.")
+    (license license:asl2.0)))
+
+(define-public python-msgpack-numpy
+  (package
+    (name "python-msgpack-numpy")
+    (version "0.4.6.post0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "msgpack-numpy" version))
+       (sha256
+        (base32
+         "0syzy645mwcy7lfjwz6pc8f9p2vv1qk4limc8iina3l5nnf0rjyz"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-msgpack" ,python-msgpack)
+       ("python-numpy" ,python-numpy)))
+    (home-page "https://github.com/lebedov/msgpack-numpy")
+    (synopsis
+     "Numpy data serialization using msgpack")
+    (description
+     "This package provides encoding and decoding routines that enable the
+serialization and deserialization of numerical and array data types provided
+by numpy using the highly efficient @code{msgpack} format.  Serialization of
+Python's native complex data types is also supported.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index af414b7b62..a202873fd0 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -187,7 +187,7 @@ aiohttp.  It supports SOCKS4(a) and SOCKS5.")
      `(("python-pycares" ,python-pycares)))
     (arguments
      `(#:tests? #f))                    ;tests require internet access
-    (home-page "http://github.com/saghul/aiodns")
+    (home-page "https://github.com/saghul/aiodns")
     (synopsis "Simple DNS resolver for asyncio")
     (description "@code{aiodns} provides a simple way for doing
 asynchronous DNS resolutions with a synchronous looking interface by
@@ -372,14 +372,14 @@ other HTTP libraries.")
 (define-public httpie
   (package
     (name "httpie")
-    (version "2.0.0")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "httpie" version))
        (sha256
         (base32
-         "02bw20cwv3a1lzrn919dk25dq4v81x6q786zlrqsqzhsdxszj14c"))))
+         "18058k0i3cc4ixvgzj882w693lf40283flvspbrvd876iq42ib1i"))))
     (build-system python-build-system)
     (arguments
      ;; The tests attempt to access external web servers, so we cannot run them.
@@ -608,14 +608,14 @@ C, yielding parse times that can be a thirtieth of the html5lib parse times.")
 (define-public python-pycurl
   (package
     (name "python-pycurl")
-    (version "7.43.0.2")
+    (version "7.43.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.bintray.com/pycurl/pycurl/pycurl-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1915kb04k1j4y6k1dx1sgnbddxrl9r1n4q928if2lkrdm73xy30g"))))
+        (base32 "1cwlb76vddqp2mxqvjbhf367caddzy82rhangddjjhjqaj8x4zgc"))))
     (build-system python-build-system)
     (arguments
      ;; The tests attempt to access external web servers, so we cannot run
@@ -1087,17 +1087,21 @@ dispatching systems can be built.")
 (define-public python-zope-interface
   (package
     (name "python-zope-interface")
-    (version "4.7.2")
+    (version "5.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.interface" version))
        (sha256
         (base32
-         "0r9kvb1q3lxrdhxabliv9nwhjsdmn1n0vcjv93rlqkyb7yyh24gx"))))
+         "03nrl6b8cb600dnnh46y149awvrm0gxyqgwq5hdw3lvys8mw9r20"))))
     (build-system python-build-system)
+    (arguments '(#:tests? #f))  ; test suite can't find python-zope-testing
     (native-inputs
-     `(("python-zope-event" ,python-zope-event)))
+     `(("python-coverage" ,python-coverage)
+       ("python-nose" ,python-nose)
+       ("python-zope-event" ,python-zope-event)
+       ("python-zope-testing" ,python-zope-testing)))
     (home-page "https://github.com/zopefoundation/zope.interface")
     (synopsis "Python implementation of the \"design by contract\"
 methodology")
@@ -1112,17 +1116,23 @@ conforming to a given API or contract.")
 (define-public python-zope-exceptions
   (package
     (name "python-zope-exceptions")
-    (version "4.3")
+    (version "4.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.exceptions" version))
        (sha256
         (base32
-         "04bjskwas17yscl8bs3l44maxspw1gdji0zcmr499fs420y9r9az"))))
+         "1nkgfwawswmyc6i0b8g3ymvja4mb507m8yhid8s4rbxq3dmqhwhd"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f))                ; circular dependency with zope.testrunner
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "zope-testrunner" "--test-path=src"))))))
+    (native-inputs
+     `(("python-zope-testrunner" ,python-zope-testrunner-bootstrap)))
     (propagated-inputs
      `(("python-zope-interface" ,python-zope-interface)))
     (home-page "https://pypi.org/project/zope.exceptions/")
@@ -1131,6 +1141,14 @@ conforming to a given API or contract.")
 that have uses outside of the Zope framework.")
     (license license:zpl2.1)))
 
+(define-public python-zope-exceptions-bootstrap
+  (package
+    (inherit python-zope-exceptions)
+    (arguments `(#:tests? #f))
+    (propagated-inputs `())
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-exceptions
   (package-with-python2 python-zope-exceptions))
 
@@ -1158,14 +1176,14 @@ forms, HTTP servers, regular expressions, and more.")
 (define-public python-zope-testrunner
   (package
     (name "python-zope-testrunner")
-    (version "5.1")
+    (version "5.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.testrunner" version))
        (sha256
         (base32
-         "0w3q66cy4crpj7c0hw0vvvvwf3g931rnvw7wwa20av7yqvv6ajim"))))
+         "0jyyf1dcz156q95x2y7yw2v420q2xn3cff0c5aci7hmdmcbn0gc7"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
@@ -1181,6 +1199,15 @@ forms, HTTP servers, regular expressions, and more.")
 tests.")
     (license license:zpl2.1)))
 
+(define-public python-zope-testrunner-bootstrap
+  (package
+    (inherit python-zope-testrunner)
+    (arguments `(#:tests? #f))
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-zope-exceptions" ,python-zope-exceptions-bootstrap)))
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-testrunner
   (package-with-python2 python-zope-testrunner))
 
@@ -1213,17 +1240,24 @@ internationalized messages within program source text.")
 (define-public python-zope-schema
   (package
     (name "python-zope-schema")
-    (version "5.0.1")
+    (version "6.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.schema" version))
        (sha256
         (base32
-         "0q93j0x52a42khw12al90jw2bk0wly3jwghql3a25zpwwxvn24ya"))))
+          "09jg47bxhfg1ahr1jxb5y0cbiszyk1j6fn1r1r7s6svjl3lbryr0"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f)) ; FIXME: Tests can't find zope.event.
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (if tests?
+               (invoke "zope-testrunner" "--test-path=src")
+               #t))))))
     (propagated-inputs
      `(("python-zope-event" ,python-zope-event)
        ("python-zope-interface" ,python-zope-interface)))
@@ -1243,18 +1277,17 @@ defining data schemas.")
 (define-public python-zope-configuration
   (package
     (name "python-zope-configuration")
-    (version "4.3.1")
+    (version "4.4.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "zope.configuration" version))
               (sha256
                (base32
-                "1qb88764fd7nkkmqv7fl9bxd1jirynkg5vbqkpqdiffnkxzp85kf"))))
+                "0g6vrl7y27z9cj5xyrww9xlzk4npj55mgmlrcd9d2nj08jn2pw79"))))
     (build-system python-build-system)
-    (arguments
-     '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
     (native-inputs
-     `(("python-zope-testing" ,python-zope-testing)
+     `(("python-manuel" ,python-manuel)
+       ("python-zope-testing" ,python-zope-testing)
        ("python-zope-testrunner" ,python-zope-testrunner)))
     (propagated-inputs
      `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
@@ -1266,25 +1299,62 @@ defining data schemas.")
 Markup Language.")
     (license license:zpl2.1)))
 
+(define-public python-zope-configuration-bootstrap
+  (package
+    (inherit python-zope-configuration)
+    (arguments `(#:tests? #f))
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-configuration
   (package-with-python2 python-zope-configuration))
 
+(define-public python-zope-copy
+  (package
+    (name "python-zope-copy")
+    (version "4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "zope.copy" version))
+        (sha256
+         (base32
+          "06m75434krl57n6p73c2qj55k5i3fixg887j8ss01ih6zw4rvfs7"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "zope-testrunner" "--test-path=src" "\\[]"))))))
+    (propagated-inputs
+     `(("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-zope-component" ,python-zope-component-bootstrap)
+       ("python-zope-location" ,python-zope-location-bootstrap)
+       ("python-zope-testing" ,python-zope-testing)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
+    (home-page "https://github.com/zopefoundation/zope.copy")
+    (synopsis "Pluggable object copying mechanism")
+    (description
+     "This package provides a pluggable mechanism for copying persistent objects.")
+    (license license:zpl2.1)))
+
 (define-public python-zope-proxy
   (package
     (name "python-zope-proxy")
-    (version "4.3.4")
+    (version "4.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.proxy" version))
        (sha256
         (base32
-         "1g0rcfnbchpvqhm76aixqlz544dawrgmy8gw9zwmijhk6wfl9f26"))))
+         "14h7nyfbl5vpfk0rbviy4ygdfx0yx5kncvg6jpbdb0dhwna0ssm6"))))
     (build-system python-build-system)
-    (arguments
-     '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
     (native-inputs
-     `(("python-zope-testrunner" ,python-zope-testrunner)))
+     `(("python-zope-security" ,python-zope-security-bootstrap)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
     (propagated-inputs
      `(("python-zope-interface" ,python-zope-interface)))
     (home-page "https://pypi.org/project/zope.proxy/")
@@ -1296,9 +1366,41 @@ only when necessary to apply the policy (e.g., access checking, location
 brokering, etc.) for which the proxy is responsible.")
     (license license:zpl2.1)))
 
+(define-public python-zope-proxy-bootstrap
+  (package
+    (inherit python-zope-proxy)
+    (arguments `(#:tests? #f))
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-proxy
   (package-with-python2 python-zope-proxy))
 
+(define-public python-zope-hookable
+  (package
+    (name "python-zope-hookable")
+    (version "5.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "zope.hookable" version))
+        (sha256
+         (base32
+          "0hc82lfr7bk53nvbxvjkibkarngyrzgfk2i6bg8wshl0ly0pdl19"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-zope-testing" ,python-zope-testing)))
+    (home-page "https://github.com/zopefoundation/zope.hookable")
+    (synopsis "Zope hookable")
+    (description "This package supports the efficient creation of hookable
+objects, which are callable objects that are meant to be optionally replaced.
+The idea is that you create a function that does some default thing and make i
+hookable.  Later, someone can modify what it does by calling its sethook method
+and changing its implementation.  All users of the function, including those
+that imported it, will see the change.")
+    (license license:zpl2.1)))
+
 (define-public python-zope-location
   (package
     (name "python-zope-location")
@@ -1325,23 +1427,28 @@ brokering, etc.) for which the proxy is responsible.")
 Zope3, which are are special objects that have a structural location.")
     (license license:zpl2.1)))
 
+(define-public python-zope-location-bootstrap
+  (package
+    (inherit python-zope-location)
+    (arguments `(#:tests? #f))
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-location
   (package-with-python2 python-zope-location))
 
 (define-public python-zope-security
   (package
     (name "python-zope-security")
-    (version "5.1.0")
+    (version "5.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.security" version))
        (sha256
         (base32
-         "1npfrgnm202v48wavpwn3450dsn7az12lfww95vbhxyjl11f14yb"))))
+         "11lfw67cigscfax9c5j63xcvz2qcj724zx5fcdqyc94am2glim0h"))))
     (build-system python-build-system)
-    (arguments
-     '(#:tests? #f)) ; FIXME: Tests can't find zope.testrunner.
     (propagated-inputs
      `(("python-zope-component" ,python-zope-component)
        ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
@@ -1350,40 +1457,67 @@ Zope3, which are are special objects that have a structural location.")
        ("python-zope-proxy" ,python-zope-proxy)
        ("python-zope-schema" ,python-zope-schema)))
     (native-inputs
-     `(("python-zope-configuration" ,python-zope-configuration)
-       ("python-zope-testrunner" ,python-zope-testrunner)
-       ("python-zope-testing" ,python-zope-testing)))
+     `(("python-btrees" ,python-btrees)
+       ("python-zope-component" ,python-zope-component-bootstrap)
+       ("python-zope-configuration" ,python-zope-configuration-bootstrap)
+       ("python-zope-location" ,python-zope-location-bootstrap)
+       ("python-zope-testing" ,python-zope-testing)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
     (home-page "https://pypi.org/project/zope.security/")
     (synopsis "Zope security framework")
     (description "Zope.security provides a generic mechanism to implement
 security policies on Python objects.")
     (license license:zpl2.1)))
 
+(define-public python-zope-security-bootstrap
+  (package
+    (inherit python-zope-security)
+    (arguments `(#:tests? #f))
+    (propagated-inputs
+     `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
+       ("python-zope-interface" ,python-zope-interface)
+       ("python-zope-proxy" ,python-zope-proxy-bootstrap)
+       ("python-zope-schema" ,python-zope-schema)))
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-security
   (package-with-python2 python-zope-security))
 
 (define-public python-zope-component
   (package
     (name "python-zope-component")
-    (version "4.3.0")
+    (version "4.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "zope.component" version))
        (sha256
         (base32
-         "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv"))))
+         "14iwp95hh6q5dj4k9h1iw75cbp89bs27nany4dinyglb44c8jqli"))))
     (build-system python-build-system)
     (arguments
-     ;; Skip tests due to circular dependency with python-zope-security.
-     '(#:tests? #f))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (invoke "python" "setup.py" "test"))))))
     (native-inputs
-     `(("python-zope-testing" ,python-zope-testing)))
-    (propagated-inputs
-     `(("python-zope-event" ,python-zope-event)
-       ("python-zope-interface" ,python-zope-interface)
+     `(("python-persistent" ,python-persistent)
+       ("python-zope-configuration" ,python-zope-configuration-bootstrap)
        ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
-       ("python-zope-configuration" ,python-zope-configuration)))
+       ("python-zope-location" ,python-zope-location-bootstrap)
+       ("python-zope-proxy" ,python-zope-proxy-bootstrap)
+       ("python-zope-security" ,python-zope-security-bootstrap)
+       ("python-zope-testing" ,python-zope-testing)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
+    (propagated-inputs
+     `(("python-zope-deferredimport" ,python-zope-deferredimport)
+       ("python-zope-deprecation" ,python-zope-deprecation)
+       ("python-zope-event" ,python-zope-event)
+       ("python-zope-hookable" ,python-zope-hookable)
+       ("python-zope-interface" ,python-zope-interface)))
     (home-page "https://github.com/zopefoundation/zope.component")
     (synopsis "Zope Component Architecture")
     (description "Zope.component represents the core of the Zope Component
@@ -1391,9 +1525,42 @@ Architecture.  Together with the zope.interface package, it provides
 facilities for defining, registering and looking up components.")
     (license license:zpl2.1)))
 
+(define-public python-zope-component-bootstrap
+  (package
+    (inherit python-zope-component)
+    (arguments `(#:tests? #f))
+    (native-inputs `())
+    (properties `((hidden? . #t)))))
+
 (define-public python2-zope-component
   (package-with-python2 python-zope-component))
 
+(define-public python-zope-deferredimport
+  (package
+    (name "python-zope-deferredimport")
+    (version "4.3.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "zope.deferredimport" version))
+        (sha256
+         (base32
+          "1q89v54dwniiqypjbwywwdfjdr4kdkqlyqsgrpplgvsygdg39cjp"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-zope-proxy" ,python-zope-proxy)))
+    (native-inputs
+     `(("python-zope-testrunner" ,python-zope-testrunner)))
+    (home-page "https://github.com/zopefoundation/zope.deferredimport")
+    (synopsis "Defer imports until used by code")
+    (description
+     "Often, especially for package modules, you want to import names for
+convenience, but not actually perform the imports until necessary.  The
+@code{zope.deferredimport} package provided facilities for defining names in
+modules that will be imported from somewhere else when used.  You can also cause
+deprecation warnings to be issued when a variable is used.")
+    (license license:zpl2.1)))
+
 (define-public python-ndg-httpsclient
   (package
     (name "python-ndg-httpsclient")
@@ -2010,7 +2177,9 @@ library.")
      `(("python-gevent" ,python-gevent)
        ("python-requests" ,python-requests)))
     (native-inputs
-     `(("python-nose" ,python-nose)))
+     `(("python-nose" ,python-nose)
+       ("python-zope.interface" ,python-zope-interface)
+       ("python-zope.event" ,python-zope-event)))
     (home-page "https://github.com/kennethreitz/grequests")
     (synopsis "Python library for asynchronous HTTP requests")
     (description "GRequests is a Python library that allows you to use
@@ -2366,7 +2535,7 @@ pretty printer and a tree visitor.")
        ("python-itsdangerous" ,python-itsdangerous)
        ("python-passlib" ,python-passlib)
        ("python-tox" ,python-tox)))
-    (home-page "http://github.com/carsongee/flask-htpasswd")
+    (home-page "https://github.com/carsongee/flask-htpasswd")
     (synopsis "Basic authentication via htpasswd files in Flask applications")
     (description "This package provides Basic authentication via
 @file{htpasswd} files and access_token authentication in Flask
@@ -2530,7 +2699,7 @@ on the command line.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/maxcountryman/flask-login.git")
+             (url "https://github.com/maxcountryman/flask-login")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2762,7 +2931,7 @@ for Flask programs that are using @code{python-alembic}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/edgewall/genshi.git")
+             (url "https://github.com/edgewall/genshi")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2943,14 +3112,14 @@ addon modules.")
 (define-public python-bottle
   (package
     (name "python-bottle")
-    (version "0.12.13")
+    (version "0.12.18")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "bottle" version))
       (sha256
         (base32
-          "0m9k2a7yxvggc4kw8fsvj381vgsvfcdshg5nzy6vwrxiw2p53drr"))))
+          "17pn43kzr7m6czjbm4nda7kzs4ap9mmb30qfbhifyzas2i5vf688"))))
     (build-system python-build-system)
     (home-page "http://bottlepy.org/")
     (synopsis "WSGI framework for small web-applications.")
@@ -3104,7 +3273,7 @@ more.")
     (build-system python-build-system)
     (arguments
      `(#:tests? #f))                    ;tests require internet access
-    (home-page "http://github.com/saghul/pycares")
+    (home-page "https://github.com/saghul/pycares")
     (synopsis "Python interface for @code{c-ares}")
     (description "@code{pycares} is a Python module which provides an
 interface to @code{c-ares}, a C library that performs DNS requests and
@@ -3409,6 +3578,7 @@ library to create slugs from unicode strings while keeping it DRY.")
      (origin
        (method url-fetch)
        (uri (pypi-uri "tinycss2" version))
+       (patches (search-patches "python-tinycss2-flake8-compat.patch"))
        (sha256
         (base32 "1kw84y09lggji4krkc58jyhsfj31w8npwhznr7lf19d0zbix09v4"))))
     (build-system python-build-system)
@@ -3534,8 +3704,8 @@ and fairly speedy.")
   (package
     (inherit gunicorn)
     (name "gunicorn")
-	(arguments `(#:tests? #f))
-	(properties '((hidden? . #t)))
+    (arguments `(#:tests? #f))
+    (properties '((hidden? . #t)))
     (native-inputs `())))
 
 (define-public python-translation-finder
@@ -4029,3 +4199,197 @@ request/response web apps to larger, grown applications.")
 than 326,000 known user-agents.  Users can pick a random one, or select one
 based on filters.")
     (license license:expat)))
+
+(define-public python-flask-restx
+  (package
+    (name "python-flask-restx")
+    (version "0.2.0")
+    (source
+     ;; We fetch from the Git repo because there are no tests in the PyPI
+     ;; archive.
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/python-restx/flask-restx")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xf2vkmdngp9cv9klznizai4byxjcf0iqh1pr4b83nann0jxqwy7"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-aniso8601" ,python-aniso8601)
+       ("python-flask" ,python-flask)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-pytz" ,python-pytz)))
+    (native-inputs
+     `(("python-blinker" ,python-blinker)
+       ("python-faker" ,python-faker)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-benchmark"
+        ,python-pytest-benchmark)
+       ("python-pytest-flask" ,python-pytest-flask)
+       ("python-pytest-mock" ,python-pytest-mock)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "--benchmark-skip" "-k"
+                     ;; Those tests need internet access
+                     "not test_check and not test_valid_value_check"))))))
+    (home-page "https://github.com/python-restx/flask-restx")
+    (synopsis
+     "Framework for fast, easy and documented API development with Flask")
+    (description
+     "Flask-RESTX is an extension for Flask that adds support for quickly building
+REST APIs.  Flask-RESTX encourages best practices with minimal setup.  If you are familiar
+ with Flask, Flask-RESTX should be easy to pick up.  It provides a coherent collection of
+decorators and tools to describe your API and expose its documentation properly using
+Swagger.")
+    (license license:bsd-3)))
+
+(define-public python-manuel
+  (package
+    (name "python-manuel")
+    (version "1.10.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "manuel" version))
+        (sha256
+         (base32
+          "1bdzay7j70fly5fy6wbdi8fbrxjrrlxnxnw226rwry1c8a351rpy"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (native-inputs
+     `(("python-zope-testing" ,python-zope-testing)))
+    (home-page "https://pypi.org/project/manuel/")
+    (synopsis "Build tested documentation")
+    (description
+     "Manuel lets you mix and match traditional doctests with custom test syntax.")
+    (license license:asl2.0)))
+
+(define-public python-persistent
+  (package
+    (name "python-persistent")
+    (version "4.6.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "persistent" version))
+        (sha256
+         (base32
+          "0imm9ji03lhkpcfmhid7x5209ix8g2rlgki9ik1qxks4b8sm8gzq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cffi" ,python-cffi)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-manuel" ,python-manuel)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
+    (home-page "https://github.com/zopefoundation/persistent/")
+    (synopsis "Translucent persistent objects")
+    (description "This package contains a generic persistence implementation for
+Python.  It forms the core protocol for making objects interact
+\"transparently\" with a database such as the ZODB.")
+    (license license:zpl2.1)))
+
+(define-public python-btrees
+  (package
+    (name "python-btrees")
+    (version "4.7.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "BTrees" version))
+        (sha256
+         (base32
+          "0iiq0g9k1g6qgqq84q9h6639vlvzznk1rgdm0rfcnnqkbkmsbr3w"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-persistent" ,python-persistent)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-persistent" ,python-persistent)
+       ("python-transaction" ,python-transaction)
+       ("python-zope-testrunner" ,python-zope-testrunner)))
+    (home-page "https://github.com/zopefoundation/BTrees")
+    (synopsis "Scalable persistent object containers")
+    (description
+     "This package contains a set of persistent object containers built around a
+modified BTree data structure.  The trees are optimized for use inside ZODB's
+\"optimistic concurrency\" paradigm, and include explicit resolution of
+conflicts detected by that mechanism.")
+    (license license:zpl2.1)))
+
+(define-public python-transaction
+  (package
+    (name "python-transaction")
+    (version "3.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "transaction" version))
+        (sha256
+         (base32
+          "0bdaks31bgfh78wnj3sij24bfysmqk25crsis6amz8kzrc0d82iv"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-mock" ,python-mock)
+       ("python-nose" ,python-nose)))
+    (home-page "https://github.com/zopefoundation/transaction")
+    (synopsis "Transaction management for Python")
+    (description "This package contains a generic transaction implementation
+for Python.  It is mainly used by the ZODB.")
+    (license license:zpl2.1)))
+
+(define-public python-robot-detection
+  (package
+    (name "python-robot-detection")
+    (version "0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "robot-detection" version))
+        (sha256
+         (base32
+          "1xd2jm3yn31bnk1kqzggils2rxj26ylxsfz3ap7bhr3ilhnbg3rx"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f)) ; Tests not shipped in pypi release.
+    (propagated-inputs `(("python-six" ,python-six)))
+    (home-page "https://github.com/rory/robot-detection")
+    (synopsis "Detect web crawlers")
+    (description
+     "@code{robot_detection} is a python module to detect if a given HTTP User
+Agent is a web crawler.  It uses the list of registered robots from
+@url{http://www.robotstxt.org}.")
+    (license license:gpl3+)))
+
+(define-public python-pysolr
+  (package
+    (name "python-pysolr")
+    (version "3.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "pysolr" version))
+        (sha256
+         (base32
+          "1rj5jmscvxjwcmlfi6hmkj44l4x6n3ln5p7d8d18j566hzmmzw3f"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f)) ; Tests require network access.
+    (propagated-inputs
+     `(("python-requests" ,python-requests)))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
+    (home-page "https://github.com/django-haystack/pysolr/")
+    (synopsis "Lightweight python wrapper for Apache Solr")
+    (description
+     "This module provides an interface that queries the Apache Solr server
+using a pure Python implementation.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index e95dec21c2..07a52a0e5c 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -61,7 +61,7 @@
 ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
 ;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
@@ -81,6 +81,8 @@
 ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -106,6 +108,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
@@ -417,13 +420,13 @@ data for video and audio files.")
 (define-public python-psutil
   (package
     (name "python-psutil")
-    (version "5.7.0")
+    (version "5.7.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "psutil" version))
        (sha256
-        (base32 "03jykdi3dgf1cdal9bv4fq9zjvzj9l9bs99gi5ar81sdl5nc2pk8"))))
+        (base32 "1svv985vmqsls35kmvp3vhh26nsgz229324s9k29awf6qgqhm6ch"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: some tests do not return and time out.  Some tests fail because
@@ -559,10 +562,10 @@ and function call return values in a human-readable way.")
     (build-system python-build-system)
     (native-inputs
      `(("python-mock" ,python-mock)))
-    (home-page "https://github.com/binstar/clyent")
+    (home-page "https://github.com/Anaconda-Platform/clyent")
     (synopsis "Command line client library")
-    (description "Clyent is a Python command line utiliy library.  It is used
-by @code{binstar}, @code{binstar-build} and @code{chalmers}.")
+    (description "Clyent is a Python command line utility library.  It is used
+by @code{binstar}, @code{binstar-build}, and @code{chalmers}.")
     (license license:bsd-3)))
 
 (define-public python2-clyent
@@ -649,13 +652,13 @@ and verifies that it matches the intended target hostname.")
 (define-public python-bitarray
   (package
     (name "python-bitarray")
-    (version "1.2.1")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "bitarray" version))
               (sha256
                (base32
-                "1kxrlxfj9nrx512sfwifwl9z4v6ky3qschl0zmk3s3dvc3s7bmif"))))
+                "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g"))))
     (build-system python-build-system)
     (home-page "https://github.com/ilanschnell/bitarray")
     (synopsis "Efficient arrays of booleans")
@@ -1121,20 +1124,18 @@ multiple Unicode code points, e.g. \"G\" + acute-accent)
 (define-public python-humanfriendly
   (package
     (name "python-humanfriendly")
-    (version "4.4.1")
+    (version "8.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "humanfriendly" version))
        (sha256
         (base32
-         "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
+         "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz"))))
     (build-system python-build-system)
     (arguments
      `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
        #:tests? #f))
-    (propagated-inputs
-     `(("python-monotonic" ,python-monotonic)))
     (home-page "https://humanfriendly.readthedocs.io")
     (synopsis "Human-friendly input and output in Python")
     (description
@@ -1143,10 +1144,16 @@ text interfaces more user-friendly.  It includes tools to parse and format
 numbers, file sizes, and timespans, timers for long-running operations, menus
 to allow the user to choose from a list of options, and terminal interaction
 helpers.")
+    (properties `((python2-variant . ,(delay python2-humanfriendly))))
     (license license:expat)))
 
 (define-public python2-humanfriendly
-  (package-with-python2 python-humanfriendly))
+  (let ((base (package-with-python2
+                (strip-python2-variant python-humanfriendly))))
+    (package (inherit base)
+      (propagated-inputs
+       `(("python2-monotonic" ,python2-monotonic)
+         ,@(package-propagated-inputs base))))))
 
 (define-public python-textparser
   (package
@@ -1306,7 +1313,7 @@ bits instead of primitive data types like @code{char}, @code{int}, etc.")
        ;; not included with the PyPI archive.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/eerimoq/cantools.git")
+             (url "https://github.com/eerimoq/cantools")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1697,14 +1704,14 @@ after Andy Lester’s Perl module WWW::Mechanize.")
 (define-public python-simplejson
   (package
     (name "python-simplejson")
-    (version "3.14.0")
+    (version "3.17.0")
     (source
      (origin
       (method url-fetch)
       (uri (pypi-uri "simplejson" version))
       (sha256
        (base32
-        "1lkv3xlf7ryzi69zqfdbkvpxdfy1rg1rq2yzcnxgf4km5m6difqy"))))
+        "108yf3252fy4ndqab7h46raksxfhcn113bzy2yd8369vidrjnjrb"))))
     (build-system python-build-system)
     (home-page "http://simplejson.readthedocs.org/en/latest/")
     (synopsis
@@ -2046,7 +2053,7 @@ and is not compatible with JSON.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/SCons/scons.git")
+                   (url "https://github.com/SCons/scons")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -2389,17 +2396,47 @@ files.")
 (define-public python2-pyld
   (package-with-python2 python-pyld))
 
+(define-public python-cli-helpers
+  (package
+    (name "python-cli-helpers")
+    (version "2.0.1")
+    (source
+     (origin
+       ;; There's no source tarball on PyPI.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/dbcli/cli_helpers")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1bg2iw9l5dip0kbs00hajdk2v18wvhssbnq8hdf71278qf0wks5l"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-wcwidth" ,python-wcwidth)
+       ("python-configobj" ,python-configobj)
+       ("python-tabulate" ,python-tabulate)
+       ("python-terminaltables" ,python-terminaltables)))
+    (home-page "https://github.com/dbcli/cli_helpers")
+    (synopsis "Helpers for building command-line apps")
+    (description
+     "CLI Helpers is a Python package that makes it easy to perform common
+tasks when building command-line apps.  It's a helper library for command-line
+interfaces.")
+    (license license:bsd-3)))
+
 (define-public python-click
   (package
     (name "python-click")
-    (version "7.0")
+    (version "7.1.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "click" version))
        (sha256
         (base32
-         "1mzjixd4vjbjvzb6vylki9w1556a9qmdh35kzmq6cign46av952v"))))
+         "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -2408,12 +2445,13 @@ files.")
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
                                                  "cross-libc" "libc"))))
-               (substitute* "click/_unicodefun.py"
+               (substitute* "src/click/_unicodefun.py"
                  (("'locale'")
                   (string-append "'" glibc "/bin/locale'"))))
              #t))
          (replace 'check
            (lambda _
+             (setenv "PYTHONPATH" (string-append "./src:" (getenv "PYTHONPATH")))
              (invoke "python" "-m" "pytest"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
@@ -2429,6 +2467,18 @@ with sensible defaults out of the box.")
 (define-public python2-click
   (package-with-python2 python-click))
 
+(define-public python-click-5
+  (package (inherit python-click)
+    (name "python-click")
+    (version "5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "click" version))
+       (sha256
+        (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
+    (arguments `())))
+
 (define-public python-wheel
   (package
     (name "python-wheel")
@@ -3383,7 +3433,7 @@ software version simply.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tantale/deprecated.git")
+             (url "https://github.com/tantale/deprecated")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3419,7 +3469,7 @@ to deprecate classes, functions or methods.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/PyGithub/PyGithub.git")
+             (url "https://github.com/PyGithub/PyGithub")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3486,7 +3536,7 @@ ecosystem, but can naturally be used also by other projects.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/robotframework/robotframework.git")
+             (url "https://github.com/robotframework/robotframework")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3535,7 +3585,7 @@ process automation (RPA).")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/boakley/robotframework-lint.git")
+               (url "https://github.com/boakley/robotframework-lint")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3566,7 +3616,7 @@ utility, a static analysis tool (linter) for Robot Framework source files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/robotframework/SSHLibrary.git")
+             (url "https://github.com/robotframework/SSHLibrary")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3795,20 +3845,18 @@ Server (PLS).")
 (define-public python-language-server
   (package
     (name "python-language-server")
-    (version "0.32.0")
+    (version "0.34.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-language-server" version))
        (sha256
         (base32
-         "0j5swacmjps9sas1gfwg0xi84rmjhfhz20cwg3k4058d20rs20ip"))))
+         "0gfjjlj7yg2nf8wkbrshwaljkwlqja4n7s1x949f495anmkg8vxr"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pluggy" ,python-pluggy)
        ("python-jsonrpc-server" ,python-jsonrpc-server)
-       ;; Note: Remove the special versions of Jedi and Parso when updating
-       ;; this package.
        ("python-jedi" ,python-jedi)
        ("python-yapf" ,python-yapf)
        ("python-pyflakes" ,python-pyflakes)
@@ -3971,7 +4019,7 @@ and is very extensible.")
        ;; git-reference because tests are not included in pypi source tarball
        ;; https://issues.guix.gnu.org/issue/36755#2
        (uri (git-reference
-             (url "https://github.com/projectmallard/mallard-ducktype.git")
+             (url "https://github.com/projectmallard/mallard-ducktype")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4377,7 +4425,7 @@ color scales, and color space conversion easy.  It has support for:
         ,(origin ; The build script expects scipy-sphinx-theme as a git submodule
            (method git-fetch)
            (uri (git-reference
-                 (url "https://github.com/scipy/scipy-sphinx-theme.git")
+                 (url "https://github.com/scipy/scipy-sphinx-theme")
                  (commit "c466764e2231ba132c09826b5b138fffa1cfcec3")))
            (sha256
             (base32
@@ -4467,6 +4515,26 @@ library, libgit2 implements Git plumbing.")
     ;; GPL2.0 only, with linking exception.
     (license license:gpl2)))
 
+(define-public python-patiencediff
+  (package
+    (name "python-patiencediff")
+    (version "0.2.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "patiencediff" version))
+        (sha256
+         (base32
+          "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q"))))
+    (build-system python-build-system)
+    (home-page "https://www.breezy-vcs.org/")
+    (synopsis "Python implementation of the patiencediff algorithm")
+    (description
+     "This package contains a Python implementation of the @code{patiencediff}
+algorithm.  Patiencediff provides a good balance of performance, nice output for
+humans, and implementation simplicity.")
+    (license license:gpl2)))
+
 (define-public python-pyparsing
   (package
     (name "python-pyparsing")
@@ -4604,7 +4672,7 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/njsmith/colorspacious.git")
+             (url "https://github.com/njsmith/colorspacious")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -4998,7 +5066,7 @@ as the original project seems to have been abandoned circa 2007.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pagekite/PySocksipyChain.git")
+             (url "https://github.com/pagekite/PySocksipyChain")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5019,15 +5087,23 @@ a simple netcat replacement with chaining support.")
 (define-public python-pycodestyle
   (package
     (name "python-pycodestyle")
-    (version "2.5.0")
+    (version "2.6.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pycodestyle" version))
        (sha256
         (base32
-         "0v4prb05n21bm8650v0a01k1nyqjdmkrsm3zycfxh2j5k9n962p4"))))
+         "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "pytest" "-vv"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
     (home-page "https://pycodestyle.readthedocs.io/")
     (synopsis "Python style guide checker")
     (description "@code{pycodestyle} (formerly pep8) is a tool to check
@@ -5118,17 +5194,18 @@ multivalue dictionary that retains the order of insertions and deletions.")
 (define-public python-autopep8
   (package
     (name "python-autopep8")
-    (version "1.3.5")
+    (version "1.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "autopep8" version))
        (sha256
         (base32
-         "192bvhzi4d0claqxgzymvv7k3qnj627742bc8sgxpzjj42pd9112"))))
+         "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("python-pycodestyle" ,python-pycodestyle)))
+     `(("python-pycodestyle" ,python-pycodestyle)
+       ("python-toml" ,python-toml)))
     (home-page "https://github.com/hhatto/autopep8")
     (synopsis "Format Python code according to the PEP 8 style guide")
     (description
@@ -5212,7 +5289,7 @@ Python's distutils.")
        ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dieterv/elib.intl.git")
+             (url "https://github.com/dieterv/elib.intl")
              (commit "d09997cfef")))
        (file-name (string-append name "-" version "-checkout"))
        (sha256
@@ -5312,6 +5389,132 @@ a general image processing tool.")
 (define-public python2-pillow
   (package-with-python2 python-pillow))
 
+(define-public python-pillow-2.9
+  (package
+    (inherit python-pillow)
+    (version "2.9.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "Pillow" version))
+        (sha256
+         (base32
+           "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-pillow)
+       ((#:tests? _ #f) #f)))
+    (properties '((hidden? #t)))))
+
+(define-public python-roifile
+  (package
+    (name "python-roifile")
+    (version "2020.5.28")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "roifile" version))
+        (sha256
+          (base32
+            "1vwbwfsw745gyqymff6dllc5zqjsgqmxaw245sw4an6yw9rcbzc0"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f)) ; there are none
+    (propagated-inputs
+      `(("python-numpy" ,python-numpy)))
+    (home-page "https://www.lfd.uci.edu/~gohlke/")
+    (synopsis "Read and write ImageJ ROI format")
+    (description "Roifile is a Python library to read, write, create, and plot
+ImageJ ROIs, an undocumented and ImageJ application specific format to store
+regions of interest, geometric shapes, paths, text, etc for image overlays.")
+    (license license:bsd-3)))
+
+(define-public python-tifffile
+  (package
+    (name "python-tifffile")
+    (version "2020.6.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "tifffile" version))
+       (sha256
+        (base32
+         "0xv3ynkbrsibqvx7250075idb7wm3canjd6lx2nzf3cbp6l07577"))))
+    (build-system python-build-system)
+    ;; Tests require lfdfiles, which depends on tifffile
+    (arguments `(#:tests? #f))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ;;("python-lfdfiles" ,python-lfdfiles)
+       ("python-roifile" ,python-roifile)))
+    (home-page "https://www.lfd.uci.edu/~gohlke/")
+    (synopsis "Read and write TIFF(r) files")
+    (description "This package lets you read image and metadata from many
+bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,
+NIH, ImageJ, MicroManager, MD GEL, and FluoView files.  It also lets you write
+numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
+    (license license:bsd-3)))
+
+(define-public python-lfdfiles
+  (package
+    (name "python-lfdfiles")
+    (version "2020.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "lfdfiles" version))
+       (sha256
+        (base32
+         "1n9bkfn4vxl0lbhzd0m35lq86ayx5fwcj3ghpfl2vbjbsnfp3h47"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-click" ,python-click)
+       ("python-numpy" ,python-numpy)
+       ("python-tifffile" ,python-tifffile)))
+    (home-page "https://www.lfd.uci.edu/~gohlke/")
+    (synopsis "Work with LFD data files")
+    (description
+     "Lfdfiles is a Python library and console script for reading, writing,
+converting, and viewing many of the proprietary file formats used to store
+experimental data and metadata at the Laboratory for Fluorescence Dynamics.")
+    (license license:bsd-3)))
+
+(define-public python-imageio
+  (package
+    (name "python-imageio")
+    (version "2.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "imageio" version))
+       (sha256
+        (base32
+         "1ksjl523fm0fikrd85llxfba35rc1qsgwadgr6mbn9kis79xcpzv"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; many tests require online data
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key outputs inputs tests? #:allow-other-keys)
+             (if tests?
+                 (begin
+                   ;; Make installed package available for running the tests.
+                   (add-installed-pythonpath inputs outputs)
+                   (invoke "pytest" "-vv"))
+                 #t))))))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pillow" ,python-pillow)
+       ("python-psutil" ,python-psutil)))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://imageio.github.io/")
+    (synopsis "Library for reading and writing a wide range of image data")
+    (description
+     "Imageio is a Python library that provides an easy interface to read and
+write a wide range of image data, including animated images, video, volumetric
+data, and scientific formats.")
+    (license license:bsd-2)))
+
 (define-public python-pycparser
   (package
     (name "python-pycparser")
@@ -5361,14 +5564,14 @@ a front-end for C compilers or analysis tools.")
 (define-public python-pywavelets
   (package
     (name "python-pywavelets")
-    (version "1.0.1")
+    (version "1.1.1")
     (home-page "https://github.com/PyWavelets/pywt")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "PyWavelets" version))
               (sha256
                (base32
-                "1p3qv2v66ghnqrb1f98wyyhp9dz71jwcd6kfpsax65sfdpiyqp1w"))))
+                "1j88c0r4j1d4mb3f8qhz6nalyx21qrzmsm70rjngnkybd87v8r0s"))))
     (build-system python-build-system)
     (arguments
      '(#:modules ((ice-9 ftw)
@@ -5376,17 +5579,18 @@ a front-end for C compilers or analysis tools.")
                   (srfi srfi-26)
                   (guix build utils)
                   (guix build python-build-system))
-       #:phases (modify-phases %standard-phases
-                  (replace 'check
-                    (lambda _
-                      (let ((cwd (getcwd))
-                            (libdir (find (cut string-prefix? "lib." <>)
-                                          (scandir "build"))))
-                      (with-directory-excursion (string-append cwd "/build/" libdir)
-                        (invoke "nosetests" "-v" "."))))))))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (let ((cwd (getcwd))
+                   (libdir (find (cut string-prefix? "lib." <>)
+                                 (scandir "build"))))
+               (with-directory-excursion (string-append cwd "/build/" libdir)
+                 (invoke "pytest" "-vv"))))))))
     (native-inputs
      `(("python-matplotlib" ,python-matplotlib)          ;for tests
-       ("python-nose" ,python-nose)))
+       ("python-pytest" ,python-pytest)))
     (propagated-inputs
      `(("python-numpy" ,python-numpy)))
     (synopsis "Wavelet transforms in Python")
@@ -5398,9 +5602,6 @@ similar to Fourier transforms, the difference being that Fourier transforms are
 localized only in frequency instead of in time and frequency.")
     (license license:expat)))
 
-(define-public python2-pywavelets
-  (package-with-python2 python-pywavelets))
-
 (define-public python-pywinrm
   (package
     (name "python-pywinrm")
@@ -5644,16 +5845,16 @@ memoizing PEG/Packrat parser in Python.")
 (define-public python-gridmap
   (package
     (name "python-gridmap")
-    (version "0.13.0")
+    (version "0.14.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pygridtools/gridmap.git")
+             (url "https://github.com/pygridtools/gridmap")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1478lbwsr1w24cii2x01m2910fvh8r43ghnb78nc972a96hqiknm"))))
+        (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l"))))
     (build-system python-build-system)
     (arguments
      '(#:tests? #f)) ; FIXME: Requires python-cherrypy.
@@ -5680,7 +5881,7 @@ cluster without needing to write any wrapper code yourself.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nickstenning/honcho.git")
+             (url "https://github.com/nickstenning/honcho")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5835,6 +6036,29 @@ all the newest features of the standard @code{pathlib} can be used also on
 older Python versions.")
     (license license:expat)))
 
+(define-public python-importlib-resources
+  (package
+    (name "python-importlib-resources")
+    (version "3.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "importlib_resources" version))
+        (sha256
+         (base32
+          "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-toml" ,python-toml)))
+    (home-page "http://importlib-resources.readthedocs.io/")
+    (synopsis "Read resources from Python packages")
+    (description
+     "@code{importlib_resources} is a backport of Python 3's standard library
+@code{importlib.resources} module for Python 2.7, and Python 3.")
+    (properties `((python2-variant . ,(delay python2-importlib-resources))))
+    (license license:asl2.0)))
+
 (define-public python2-importlib-resources
   (package
     (name "python2-importlib-resources")
@@ -6831,14 +7055,14 @@ the GObject Introspection bindings to libnotify for non-GTK applications.")
 (define-public python-beautifulsoup4
   (package
     (name "python-beautifulsoup4")
-    (version "4.7.1")
+    (version "4.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "beautifulsoup4" version))
        (sha256
         (base32
-         "0j2kycz2dxgx68xzjm7rxg5xn6v61gq5ifvxyg99slmqkybnal4l"))))
+         "1mvzlw3pzbhsvl3z8784s5h7iiflm2hggiy1fxyrrxwnbc8lvk3k"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -6874,14 +7098,14 @@ converts incoming documents to Unicode and outgoing documents to UTF-8.")
 (define-public python-soupsieve
   (package
     (name "python-soupsieve")
-    (version "1.9.5")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "soupsieve" version))
        (sha256
         (base32
-         "1nhd0q0ifwva9wn645s6pn74p1rd97asn3qfg75nphx1wkgcbhg2"))))
+         "0ch2rhvsbwfpvzm4kzy81rclbzr533yv83hzg1gx55byfa0w37d5"))))
     (build-system python-build-system)
     (arguments `(#:tests? #f))
     ;;XXX: 2 tests fail currently despite claming they were to be
@@ -6898,10 +7122,19 @@ some are not yet implemented).")
     (properties `((python2-variant . ,(delay python2-soupsieve))))
     (license license:expat)))
 
+;; This is the last version that supports python-2
 (define-public python2-soupsieve
   (let ((base (package-with-python2 (strip-python2-variant python-soupsieve))))
     (package
       (inherit base)
+      (version "1.9.6")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (pypi-uri "soupsieve" version))
+         (sha256
+          (base32
+           "1apgqxngi1216h1cyvrvj9gy3wf45mh1lz4n76j26jf3k36bm1br"))))
       (propagated-inputs
        `(("python2-backports-functools-lru-cache"
           ,python2-backports-functools-lru-cache)
@@ -7250,30 +7483,47 @@ falling into the Python interpreter.")
 (define-public python2-q
   (package-with-python2 python-q))
 
-(define-public python2-xlib
+(define-public python-xlib
   (package
-    (name "python2-xlib")
-    (version "0.14")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/python-xlib/python-xlib"
-                                  "/" version "/"
-                                  "python-xlib-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1sv0447j0rx8cgs3jhjl695p5pv13ihglcjlrrz1kq05lsvb0wa7"))))
+    (name "python-xlib")
+    (version "0.27")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/python-xlib/python-xlib")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "09kimic8rhprx3q8nzalc4aggg42ahqm4v5qcj8dm68yvxfdk986"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2                         ;Python 2 only
-       #:tests? #f))                              ;no tests
-    (home-page "http://python-xlib.sourceforge.net/")
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'start-xserver
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((xorg-server (assoc-ref inputs "xorg-server")))
+               ;; There must be a running X server and make check doesn't
+               ;; start one.  Therefore we must do it.
+               (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
+               (setenv "DISPLAY" ":1")
+               #t))))))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-setuptools-scm" ,python-setuptools-scm)
+       ("python-six" ,python-six)
+       ("xorg-server" ,xorg-server)))
+    (home-page "https://github.com/python-xlib/python-xlib")
     (synopsis "Python X11 client library")
     (description
-     "The Python X Library is intended to be a fully functional X client
-library for Python programs.  It is useful to implement low-level X clients.
-It is written entirely in Python.")
+     "The Python X Library is intended to be a fully functional
+X client library for Python programs.  It is useful to implement
+low-level X clients.  It is written entirely in Python.")
     (license license:gpl2+)))
 
+(define-public python2-xlib
+  (package-with-python2 python-xlib))
+
 (define-public python-singledispatch
   (package
     (name "python-singledispatch")
@@ -7481,14 +7731,14 @@ PEP 8.")
 (define-public python-pyflakes
   (package
     (name "python-pyflakes")
-    (version "2.1.1")
+    (version "2.2.0")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "pyflakes" version))
         (sha256
           (base32
-            "18pq95a1xj2dgdd0m85gyfsn40jajj4xc3lp8wfv7igqhrc86xnr"))))
+            "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim"))))
     (build-system python-build-system)
     (home-page
       "https://github.com/pyflakes/pyflakes")
@@ -7582,13 +7832,13 @@ complexity of Python source code.")
 (define-public python-flake8
   (package
     (name "python-flake8")
-    (version "3.7.9")
+    (version "3.8.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "flake8" version))
               (sha256
                (base32
-                "1yscj6avirm6m12bjh4fn2lfgxaamqsjh9pirdqfi0fcgq8ils25"))))
+                "02527892hh0qjivxaiphzalj7q32qkna1cqaikjs7c03mk5ryjzh"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -8574,7 +8824,7 @@ Python Package Index (PyPI).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/trendmicro/tlsh.git")
+             (url "https://github.com/trendmicro/tlsh")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8635,6 +8885,26 @@ a hash value.")
 (define-public python2-termcolor
   (package-with-python2 python-termcolor))
 
+(define-public python-terminaltables
+  (package
+    (name "python-terminaltables")
+    (version "3.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "terminaltables" version))
+        (sha256
+         (base32
+          "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/Robpol86/terminaltables")
+    (synopsis
+     "Generate simple tables in terminals from a nested list of strings")
+    (description
+     "This package makes it easy to draw tables in terminal/console
+applications from a list of lists of strings.  It supports multi-line rows.")
+    (license license:expat)))
+
 (define-public python-libarchive-c
   (package
     (name "python-libarchive-c")
@@ -9875,6 +10145,38 @@ concurrent.futures package from Python 3.2")
          ("python2-pytest" ,python2-pytest)
          ,@(package-native-inputs promise))))))
 
+(define-public python-progressbar2
+  (package
+    (name "python-progressbar2")
+    (version "3.51.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "progressbar2" version))
+       (sha256
+        (base32
+         "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)
+       ("python-utils" ,python-utils)))
+    (native-inputs
+     `(("python-flake8" ,python-flake8)
+       ("python-freezegun" ,python-freezegun)
+       ("python-pycodestyle" ,python-pycodestyle)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cache" ,python-pytest-cache)
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-pytest-flakes" ,python-pytest-flakes)
+       ("python-pytest-pep8" ,python-pytest-pep8)
+       ("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/WoLpH/python-progressbar")
+    (synopsis "Text progress bar library for Python")
+    (description
+     "This package provides a Python progressbar library to provide
+visual (yet text based) progress to long running operations.")
+    (license license:bsd-3)))
+
 (define-public python-progressbar33
   (package
     (name "python-progressbar33")
@@ -9887,7 +10189,7 @@ concurrent.futures package from Python 3.2")
         (base32
          "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
     (build-system python-build-system)
-    (home-page "http://github.com/germangh/python-progressbar")
+    (home-page "https://github.com/germangh/python-progressbar")
     (synopsis "Text progress bar library for Python")
     (description
      "This package provides a text progress bar library for Python.  This
@@ -10046,6 +10348,29 @@ document.")
 (define-public python2-jmespath
   (package-with-python2 python-jmespath))
 
+(define-public python-symengine
+  (package
+    (name "python-symengine")
+    (version "0.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "symengine" version))
+       (sha256
+        (base32 "1kn1w4dp9mrsq6kzmhf4pjmx3wicxc3dw1mwa924q8g48g77lr4c"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("cmake" ,cmake)
+       ("python-cython" ,python-cython)))
+    (inputs
+     `(("symengine" ,symengine)))
+    (home-page "https://github.com/symengine/symengine.py")
+    (synopsis "Python library providing wrappers to SymEngine")
+    (description
+     "This library provides a Python wrapper to SymEngine, a fast C++ symbolic
+manipulation library.")
+    (license license:expat)))
+
 (define-public python-botocore
   (package
     (name "python-botocore")
@@ -10081,6 +10406,24 @@ interface to the Amazon Web Services (AWS) API.")
 (define-public python2-botocore
   (package-with-python2 python-botocore))
 
+(define-public python-pyfiglet
+  (package
+    (name "python-pyfiglet")
+    (version "0.8.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pyfiglet" version))
+       (sha256
+        (base32
+         "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/pwaller/pyfiglet")
+    (synopsis "Draw ASCII art big letters in Python")
+    (description "This module lets you draw large letter from ordinary characters
+in pure Python.")
+    (license license:expat)))
+
 (define-public python-xdo
   (package
     (name "python-xdo")
@@ -11149,6 +11492,29 @@ functionality in a modular way, allowing you to extend your panel with your
 own code, responding to click events and updating clock every second.")
     (license license:bsd-3)))
 
+(define-public python2-selectors2
+  (package
+    (name "python2-selectors2")
+    (version "2.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "selectors2" version))
+              (sha256
+               (base32
+                "110qr00b9axz1f1jm12b495jkvrz80smknxvssqlhwk0dx67rdw1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("python2-mock" ,python2-mock)
+       ("python2-psutil" ,python2-psutil)))
+    (home-page "https://www.github.com/SethMichaelLarson/selectors2")
+    (synopsis "Backport of the selectors module from Python 3.5+")
+    (description
+     "This package provides a drop-in replacement for the @code{selectors}
+module in Python 3.5 and later.")
+    (license license:expat)))
+
 (define-public python-tblib
   (package
     (name "python-tblib")
@@ -11195,13 +11561,13 @@ multiple processes (imagine multiprocessing, billiard, futures, celery etc).
 (define-public python-greenlet
   (package
     (name "python-greenlet")
-    (version "0.4.15")
+    (version "0.4.16")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "greenlet" version))
               (sha256
                (base32
-                "1g4g1wwc472ds89zmqlpyan3fbnzpa8qm48z3z1y6mlk44z485ll"))))
+                "0v2571d0av1hz3yx63gvmnrinyn57nnvibg4zkl9frv74b3yl1kf"))))
     (build-system python-build-system)
     (home-page "https://greenlet.readthedocs.io/")
     (synopsis "Lightweight in-process concurrent programming")
@@ -11245,13 +11611,13 @@ graphviz.")
 (define-public python-gevent
   (package
     (name "python-gevent")
-    (version "20.5.0")
+    (version "20.6.2")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "gevent" version))
               (sha256
                (base32
-                "1yppsrs0ccld9j9zfbsd0bxb987b2zkh2ar7whjxcrqzpkvg3iqx"))
+                "1ldmppgghfphdaazjw6wq2i17xcmsjb2jsizfa4cjlg812zjlg52"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -11370,15 +11736,15 @@ graphviz.")
                               "known_failures.py" "--ignore" "skipped_tests.txt"))))))
     (propagated-inputs
      `(("python-greenlet" ,python-greenlet)
-       ("python-objgraph" ,python-objgraph)))
+       ("python-objgraph" ,python-objgraph)
+       ("python-zope.event" ,python-zope-event)
+       ("python-zope.interface" ,python-zope-interface)))
     (native-inputs
      `(("python-six" ,python-six)
 
        ;; For tests.
        ("python-dnspython" ,python-dnspython)
-       ("python-psutil" ,python-psutil)
-       ("python-zope.event" ,python-zope-event)
-       ("python-zope.interface" ,python-zope-interface)))
+       ("python-psutil" ,python-psutil)))
     (inputs
      `(("c-ares" ,c-ares)
        ("libev" ,libev)))
@@ -11396,18 +11762,19 @@ to provide a high-level synchronous API on top of the libev event loop.")
     (package
       (inherit base)
       (native-inputs `(,@(package-native-inputs base)
-                       ("python-mock" ,python2-mock))))))
+                       ("python-mock" ,python2-mock)
+                       ("python2-selectors2" ,python2-selectors2))))))
 
 (define-public python-fastimport
   (package
     (name "python-fastimport")
-    (version "0.9.6")
+    (version "0.9.8")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "fastimport" version))
         (sha256
-          (base32 "1aqjsin4rmqm7ln4j0p73fzxifws6c6ikgyhav7r137m2ixsxl43"))))
+          (base32 "1fb3b7y3sw55f6wykxx478ybkirz0l52lgdqmbhmc0h0jzmyiwmj"))))
     (build-system python-build-system)
     (home-page "https://github.com/jelmer/python-fastimport")
     (synopsis "VCS fastimport parser and generator in Python")
@@ -11497,13 +11864,13 @@ It uses LR parsing and does extensive error checking.")
 (define-public python-tabulate
   (package
     (name "python-tabulate")
-    (version "0.7.7")
+    (version "0.8.7")
     (source (origin
              (method url-fetch)
              (uri (pypi-uri "tabulate" version))
              (sha256
               (base32
-               "1inqhspd4frxnp08c32yndr0lc4px1xfkqah184i5w09gkhvi843"))))
+               "01shi7bmj09f0bcm5s0c9skys063lzp76p0n4a2xmg041ni269yv"))))
     (build-system python-build-system)
     (arguments
      ;; FIXME: The pypi release tarball is missing a 'test/common.py'
@@ -11977,6 +12344,37 @@ It supports TSIG authenticated messages and EDNS0.")
 (define-public python2-dnspython
   (package-with-python2 python-dnspython))
 
+(define-public python-py3dns
+  (package
+    (name "python-py3dns")
+    (version "3.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "py3dns" version))
+        (sha256
+         (base32
+          "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz"))))
+    (build-system python-build-system)
+    ;; This package wants to read /etc/resolv.conf. We can't patch it without
+    ;; removing functionality so we copy from Nix and "just don't build it".
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "setup.py"
+               (("import DNS") "")
+               (("DNS.__version__") (string-append "\"" ,version "\"")))
+             #t)))
+       #:tests? #f)) ; Also skip the tests.
+    (home-page "https://launchpad.net/py3dns")
+    (synopsis "Python 3 DNS library")
+    (description "This Python 3 module provides a DNS API for looking up DNS
+entries from within Python 3 modules and applications.  This module is a
+simple, lightweight implementation.")
+    (license license:psfl)))
+
 (define-public python-email-validator
   (package
     (name "python-email-validator")
@@ -12549,7 +12947,7 @@ discovery, monitoring and configuration.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/schematics/schematics.git")
+             (url "https://github.com/schematics/schematics")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -12903,21 +13301,21 @@ English stemmer.")
   (package-with-python2 python-snowballstemmer))
 
 (define-public python-setproctitle
-(package
-  (name "python-setproctitle")
-  (version "1.1.10")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (pypi-uri "setproctitle" version))
-      (sha256
+  (package
+    (name "python-setproctitle")
+    (version "1.1.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setproctitle" version))
+       (sha256
         (base32
-          "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
-  (build-system python-build-system)
-  (arguments
-   '(#:phases
-     (modify-phases %standard-phases
-        (add-before 'check 'patch-Makefile
+         "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-Makefile
            ;; Stricly this is only required for the python2 variant.
            ;; But adding a phase in an inherited package seems to be
            ;; cumbersum. So we patch even for python3.
@@ -12928,30 +13326,30 @@ English stemmer.")
                    (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
                     (string-append nose "/bin/nosetests "))))
                #t)))
-        (replace 'check
+         (replace 'check
            (lambda _
              (setenv "PYTHON" (or (which "python3") (which "python")))
-             (setenv "PYCONFIG" (or (which "python3-config")
-                                    (which "python-config")))
+             (setenv "PYCONFIG" (string-append (or (which "python3-config")
+                                                   (which "python-config"))
+                                               " --embed"))
              (setenv "CC" "gcc")
              ;; No need to extend PYTHONPATH to find the built package, since
              ;; the Makefile will build anyway
              (invoke "make" "check"))))))
-  (native-inputs
-   `(("procps" ,procps))) ; required for tests
-  (home-page
-    "https://github.com/dvarrazzo/py-setproctitle")
-  (synopsis
-   "Setproctitle implementation for Python to customize the process title")
-  (description "The library allows a process to change its title (as displayed
+    (native-inputs
+     `(("procps" ,procps)))             ; required for tests
+    (home-page "https://github.com/dvarrazzo/py-setproctitle")
+    (synopsis
+     "Setproctitle implementation for Python to customize the process title")
+    (description "The library allows a process to change its title (as displayed
 by system tools such as ps and top).
 
 Changing the title is mostly useful in multi-process systems, for
 example when a master process is forked: changing the children's title
 allows identifying the task each process is busy with.  The technique
 is used by PostgreSQL and the OpenSSH Server for example.")
-  (license license:bsd-3)
-  (properties `((python2-variant . ,(delay python2-setproctitle))))))
+    (license license:bsd-3)
+    (properties `((python2-variant . ,(delay python2-setproctitle))))))
 
 (define-public python2-setproctitle
   (let ((base (package-with-python2
@@ -13147,6 +13545,93 @@ network.")
 (define-public python2-argcomplete
   (package-with-python2 python-argcomplete))
 
+(define-public python-csscompressor
+  (package
+    (name "python-csscompressor")
+    (version "0.9.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "csscompressor" version))
+        (sha256
+         (base32
+          "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "py.test"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/sprymix/csscompressor")
+    (synopsis "Python port of YUI CSS Compressor")
+    (description
+     "This package provides a python port of YUI CSS Compressor.")
+    (license license:bsd-3)))
+
+(define-public python-rcssmin
+  (package
+    (name "python-rcssmin")
+    (version "1.0.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "rcssmin" version))
+        (sha256
+         (base32
+          "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "run_tests.py" "tests"))))))
+    (home-page "http://opensource.perlig.de/rcssmin/")
+    (synopsis "CSS Minifier")
+    (description "The minifier is based on the semantics of the YUI compressor,
+which itself is based on the rule list by Isaac Schlueter.")
+    (license license:asl2.0)))
+
+(define-public python-rjsmin
+  (package
+    (name "python-rjsmin")
+    (version "1.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "rjsmin" version))
+        (sha256
+         (base32
+          "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (for-each delete-file (find-files "bench" "\\.js$"))
+            #t))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f  ; Not all test files included.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (if tests?
+               (invoke "py.test" "-vv" "tests")
+               #t))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "http://opensource.perlig.de/rjsmin/")
+    (synopsis "Javascript Minifier")
+    (description "@code{rJSmin} is a javascript minifier written in Python.  The
+minifier is based on the semantics of jsmin.c by Douglas Crockford.  The module
+is a re-implementation aiming for speed, so it can be used at runtime (rather
+than during a preprocessing step).")
+    (license license:asl2.0)))
+
 (define-public python-xopen
   (package
     (name "python-xopen")
@@ -13970,6 +14455,27 @@ builds partial trees by inspecting living objects.")
         ,@(alist-delete "python-typed-ast"
                         (package-propagated-inputs base)))))))
 
+(define-public python-isbnlib
+  (package
+    (name "python-isbnlib")
+    (version "3.10.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "isbnlib" version))
+       (sha256
+        (base32
+         "07qhykv0x60d5rsx5pj6s4q15ri4znczscll3xmpf6gyclac1592"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))  ; No test
+    (home-page "https://github.com/xlcnd/isbnlib")
+    (synopsis "Python library to work with ISBN strings")
+    (description "@code{python-isbnlib} is a (pure) python library that provides
+several useful methods and functions to validate, clean, transform, hyphenate and
+get metadata for ISBN strings.  Its origin was as the core of isbntools.  This short
+version, is suitable to be include as a dependency in other projects.")
+    (license license:lgpl3+)))
+
 (define-public python-isort
   (package
     (name "python-isort")
@@ -14009,7 +14515,7 @@ editors.")
 (define-public python2-backports-functools-lru-cache
   (package
     (name "python2-backports-functools-lru-cache")
-    (version "1.5")
+    (version "1.6.1")
     (source
      (origin
        (method url-fetch)
@@ -14017,7 +14523,7 @@ editors.")
        (uri (pypi-uri "backports.functools_lru_cache" version))
        (sha256
         (base32
-         "06jgv8gib4fhky0p5cmxdghvsgjyzcdgk48k8pxb1ccf11znk64x"))))
+         "0jidrkk2w6bhjm197plxiaxrav64mgcrign0bfyr7md2ilc5zplg"))))
     (build-system python-build-system)
     (native-inputs
      `(("python2-setuptools-scm" ,python2-setuptools-scm)))
@@ -14053,6 +14559,28 @@ in other versions.")
 (define-public python2-configparser
   (package-with-python2 python-configparser))
 
+(define-public python-mamba
+  (package
+    (name "python-mamba")
+    (version "0.11.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "mamba" version))
+              (sha256
+               (base32
+                "0bpbgz9v63rpanjjpc8bnvrr8fkms5rzylh77xrcki1x6az7gnsz"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f))  ; No test
+    (propagated-inputs
+     `(("python-clint" ,python-clint)
+       ("python-coverage" ,python-coverage)))
+    (home-page "https://nestorsalceda.com/mamba/")
+    (synopsis "Test runner for Python")
+    (description
+     "Mamba is a Behaviour-Driven Development tool for Python developers.
+Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.")
+    (license license:expat)))
+
 (define-public python-mando
   (package
     (name "python-mando")
@@ -14169,14 +14697,22 @@ exception message with a traceback that points to the culprit.")
 (define-public python-utils
   (package
     (name "python-utils")
-    (version "2.1.0")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "python-utils" version))
               (sha256
                (base32
-                "1mcsy6q5am4ya72rgkpb6kax6vv7c93cfkkas89xnpa4sj9zf28p"))))
+                "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj"))))
     (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (add-installed-pythonpath inputs outputs)
+             (delete-file "pytest.ini")
+             (invoke "pytest" "-vv"))))))
     (native-inputs
      `(("pytest-runner" ,python-pytest-runner)
        ("pytest" ,python-pytest)
@@ -14932,7 +15468,7 @@ Swagger 2.0).")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/rochacbruno/flasgger.git")
+              (url "https://github.com/rochacbruno/flasgger")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -15122,40 +15658,73 @@ functionality like full case-folding for case-insensitive matches in Unicode.")
 (define-public python2-regex
   (package-with-python2 python-regex))
 
-(define-public python2-pyopengl
+(define-public python-pyopengl
   (package
-   (name "python2-pyopengl")
-   (version "3.1.0")
-   (source
-    (origin
-     (method url-fetch)
-     (uri (pypi-uri "PyOpenGL" version))
-     (sha256
-      (base32
-       "1byxjj6a8rwzhxhjqlc588zdad2qwxdd7vlam2653ylll31waiwv"))))
-   (arguments
-     `(#:python ,python-2))
-   (build-system python-build-system)
-   (home-page "http://pyopengl.sourceforge.net")
-   (synopsis "Standard OpenGL bindings for Python")
-   (description
-    "PyOpenGL is the most common cross platform Python binding to OpenGL and
+    (name "python-pyopengl")
+    (version "3.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "PyOpenGL" version))
+       (sha256
+        (base32
+         "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1"))))
+    (build-system python-build-system)
+    (inputs
+     `(("mesa" ,mesa)
+       ("freeglut" ,freeglut)
+       ("glu" ,glu)))
+    (arguments
+     `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no
+                                        ;attribute 'OSMesa'
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'fix-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* '("OpenGL/platform/ctypesloader.py")
+               (("filenames_to_try = \\[\\]") "filenames_to_try = [name]"))
+             (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py")
+               (("'GL'")
+                (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'"))
+               (("'GLU'")
+                (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'"))
+               (("'glut',")
+                (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',"))
+               (("'GLESv1_CM'")
+                (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'"))
+               (("'GLESv2'")
+                (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'")))
+               ;; Not providing libgle. It seems to be very old.
+             #t)))))
+    (home-page "http://pyopengl.sourceforge.net")
+    (synopsis "Standard OpenGL bindings for Python")
+    (description
+     "PyOpenGL is the most common cross platform Python binding to OpenGL and
 related APIs.  The binding is created using the standard @code{ctypes}
 library.")
-   (license license:bsd-3)))
+    (license license:bsd-3)))
 
-(define-public python2-pyopengl-accelerate
+(define-public python-pyopengl-accelerate
   (package
-    (inherit python2-pyopengl)
-    (name "python2-pyopengl-accelerate")
-    (version "3.1.0")
+    (inherit python-pyopengl)
+    (name "python-pyopengl-accelerate")
+    (version "3.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "PyOpenGL-accelerate" version))
        (sha256
         (base32
-         "0464c1ifzk0k92lyndikmvzjgnx1y25r7bkkc8pnxm4kp1q4czwj"))))
+         "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j"))))
+    (inputs
+     `(("mesa" ,mesa)
+       ("python-numpy" ,python-numpy))) ; for cython module
+                                        ; numpy_formathandler, thus not propagated
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'fix-paths))))
     (synopsis "Acceleration code for PyOpenGL")
     (description
      "This is the Cython-coded accelerator module for PyOpenGL.")))
@@ -15465,7 +16034,7 @@ executed more than a given number of times during a given period.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kovidgoyal/dukpy.git")
+             (url "https://github.com/kovidgoyal/dukpy")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -15932,7 +16501,7 @@ and works only with Python 2 and NumPy < 1.9.")
      (origin (method git-fetch)
              ;; Source tarball on PyPI doesn't include tests.
              (uri (git-reference
-                   (url "https://github.com/hsoft/send2trash.git")
+                   (url "https://github.com/hsoft/send2trash")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -16044,7 +16613,7 @@ files, and Makefiles.")
             (invoke "py.test"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
-    (home-page "http://github.com/Suor/whatever")
+    (home-page "https://github.com/Suor/whatever")
     (synopsis "Make anonymous functions by partial application of operators")
     (description "@code{whatever} provides an easy way to make anonymous
 functions by partial application of operators.")
@@ -16061,7 +16630,7 @@ functions by partial application of operators.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Suor/funcy.git")
+             (url "https://github.com/Suor/funcy")
              (commit version)))
        (sha256
         (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
@@ -16076,7 +16645,7 @@ functions by partial application of operators.")
     (native-inputs
      `(("python-pytest" ,python-pytest)
        ("python-whatever" ,python-whatever)))
-    (home-page "http://github.com/Suor/funcy")
+    (home-page "https://github.com/Suor/funcy")
     (synopsis "Functional tools")
     (description "@code{funcy} is a library that provides functional tools.
 Examples are:
@@ -16180,7 +16749,7 @@ source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/python/typed_ast.git")
+             (url "https://github.com/python/typed_ast")
              (commit version)))
        (sha256
         (base32 "0l0hz809f7i356kmqkvfsaswiidb98j9hs9rrjnfawzqcbffzgyb"))
@@ -16621,7 +17190,7 @@ manager compatible with @code{asyncio}.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/miracle2k/python-glob2.git")
+             (url "https://github.com/miracle2k/python-glob2")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -16811,7 +17380,7 @@ user-space file systems in Python.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pybind/pybind11.git")
+                    (url "https://github.com/pybind/pybind11")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -16856,19 +17425,20 @@ inferring type information using compile-time introspection.")
 (define-public python-fasteners
   (package
     (name "python-fasteners")
-    (version "0.14.1")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "fasteners" version))
        (sha256
         (base32
-         "063y20kx01ihbz2mziapmjxi2cd0dq48jzg587xdsdp07xvpcz22"))))
+         "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-monotonic" ,python-monotonic)
-       ("python-six" ,python-six)
-       ("python-testtools" ,python-testtools)))
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-testtools" ,python-testtools)))
     (home-page "https://github.com/harlowja/fasteners")
     (synopsis "Python package that provides useful locks")
     (description
@@ -17701,6 +18271,39 @@ on regular expressions.")
               `(("python2-enum34" ,python2-enum34)
                 ,@(package-propagated-inputs reparser))))))
 
+(define-public python-retrying
+  (package
+    (name "python-retrying")
+    (version "1.3.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rholder/retrying")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "https://github.com/rholder/retrying")
+    (synopsis "Library for adding retry behavior")
+    (description "Retrying is a general-purpose retrying library to simplify
+the task of adding retry behavior to just about anything.
+
+Features:
+
+@itemize
+@item Generic Decorator API.
+@item Specify stop condition (i.e. limit by number of attempts).
+@item Specify wait condition (i.e. exponential backoff sleeping between attempts).
+@item Customize retrying on Exceptions.
+@item Customize retrying on expected returned result.
+@end itemize")
+    (license license:asl2.0)))
+
 (define-public python-precis-i18n
   (package
     (name "python-precis-i18n")
@@ -18137,14 +18740,13 @@ time-or-computationally-expensive properties quick and easy and works in Python
 (define-public python-folium
   (package
     (name "python-folium")
-    (version "0.10.1")
+    (version "0.11.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "folium" version))
        (sha256
-        (base32
-         "0gcc267wxwxr57ry86pqpbiyfvl0g48hfvgy0f2mz9s58g87kgzd"))))
+        (base32 "19sclsq3xcjfa7bavzjpyn6rl9b15jbc76n5aag4cwhqqamqj1sl"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-branca" ,python-branca)
@@ -18474,7 +19076,7 @@ bindings for Python 2.5+ and 3.")))
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/oinume/iocapture.git")
+               (url "https://github.com/oinume/iocapture")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -18514,7 +19116,7 @@ standard error channel (stderr) in your program.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/neithere/argh.git")
+               (url "https://github.com/neithere/argh")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -18632,9 +19234,9 @@ essential tools are located.")
     (synopsis
      "Parallel graph management and execution in heterogeneous computing")
     (description
-     "Python-pathos is a framework for heterogenous computing.  It provides a
+     "Python-pathos is a framework for heterogeneous computing.  It provides a
 consistent high-level interface for configuring and launching parallel
-computations across heterogenous resources.  Python-pathos provides configurable
+computations across heterogeneous resources.  Python-pathos provides configurable
 launchers for parallel and distributed computing, where each launcher contains
 the syntactic logic to configure and launch jobs in an execution environment.")
     (license license:bsd-3)))
@@ -18820,9 +19422,9 @@ and cuts down boilerplate code when testing libraries for asyncio.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))))
+        (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))
+       (patches (search-patches "python-aionotify-0.2.0-py3.8.patch"))))
     (build-system python-build-system)
-    (native-inputs `(("python-asynctest" ,python-asynctest)))
     (home-page "https://github.com/rbarrois/aionotify")
     (synopsis "Asyncio-powered inotify library")
     (description
@@ -19343,7 +19945,12 @@ logging in Python.  It also provides some custom formatters and handlers.")
          "150av2pylsjy8ykrpyi0vzy2q24s9rhh2ya01zvwnvj9j5dspviz"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f))
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "setup.py" "testr" "--slowest"
+                     "--testr-args=until-failure"))))))
     (propagated-inputs
      `(("python-click" ,python-click)
        ("python-daiquiri" ,python-daiquiri)
@@ -19404,7 +20011,7 @@ HTML-containing files.")
        ;; sample.json5 is missing from PyPi source tarball
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dpranke/pyjson5.git")
+             (url "https://github.com/dpranke/pyjson5")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -19446,7 +20053,7 @@ replacement for dictionaries where immutability is desired.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/matrix-org/python-unpaddedbase64.git")
+             (url "https://github.com/matrix-org/python-unpaddedbase64")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -19461,6 +20068,25 @@ using “=” characters.  However this conveys no benefit so many protocols
 choose to use Base64 without the “=” padding.")
     (license license:asl2.0)))
 
+(define-public python-py-cpuinfo
+  (package
+    (name "python-py-cpuinfo")
+    (version "5.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "py-cpuinfo" version))
+       (sha256
+        (base32
+         "0045y6832gqjg63jmw0qj2jwyypgjwr7sfdq3lfv49b6fxpl5xic"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/workhorsy/py-cpuinfo")
+    (synopsis "Get CPU info with Python")
+    (description
+     "This Python module returns the CPU info by using the best sources of
+information for your operating system.")
+    (license license:expat)))
+
 (define-public python-canonicaljson
   (package
     (name "python-canonicaljson")
@@ -20069,3 +20695,256 @@ For the most part it's transliterated from C, the major differences are:
 @end itemize
 ")
     (license license:gpl3+)))
+
+(define-public python-jinxed
+  (package
+    (name "python-jinxed")
+    (version "1.0.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "jinxed" version))
+        (sha256
+         (base32
+          "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-environment-variables
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((ncurses (assoc-ref inputs "ncurses")))
+               (setenv "TERM" "LINUX")
+               (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
+               #t))))
+       #:tests? #f)) ; _curses.error: setupterm: could not find terminal
+    (native-inputs
+     `(("ncurses" ,ncurses)))
+    (home-page "https://github.com/Rockhopper-Technologies/jinxed")
+    (synopsis "Jinxed Terminal Library")
+    (description
+     "Jinxed is an implementation of a subset of the Python curses library.")
+    (license license:mpl2.0)))
+
+(define-public python-blessed
+  (package
+    (name "python-blessed")
+    (version "1.17.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "blessed" version))
+        (sha256
+         (base32
+          "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            ;; Don't get hung up on Windows test failures.
+            (delete-file "blessed/win_terminal.py") #t))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-jinxed" ,python-jinxed)
+       ("python-six" ,python-six)
+       ("python-wcwidth" ,python-wcwidth)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/jquast/blessed")
+    (synopsis "Wrapper around terminal capabilities")
+    (description
+     "Blessed is a thin, practical wrapper around terminal styling, screen
+positioning, and keyboard input.")
+    (license license:expat)))
+
+(define-public python-readme-renderer
+  (package
+    (name "python-readme-renderer")
+    (version "26.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "readme_renderer" version))
+        (sha256
+         (base32
+          "13fnrv7z3y0yfafzcjbl55cqxncvbxadr72ql4l29pgyvrqxpsfb"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-bleach" ,python-bleach)
+       ("python-docutils" ,python-docutils)
+       ("python-pygments" ,python-pygments)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/pypa/readme_renderer")
+    (synopsis "Render README files in Warehouse")
+    (description
+     "Readme Renderer is a library that will safely render arbitrary README
+files into HTML.  It is designed to be used in Warehouse to render the
+@code{long_description} for packages.  It can handle Markdown, reStructuredText,
+and plain text.")
+    (license license:asl2.0)))
+
+(define-public python-lazr-delegates
+  (package
+    (name "python-lazr-delegates")
+    (version "2.0.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "lazr.delegates" version))
+        (sha256
+         (base32
+          "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "setup.py" "nosetests"))))))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-zope-interface" ,python-zope-interface)))
+    (home-page "https://launchpad.net/lazr.delegates")
+    (synopsis "Easily write objects that delegate behavior")
+    (description
+     "The @code{lazr.delegates} package makes it easy to write objects that
+delegate behavior to another object.  The new object adds some property or
+behavior on to the other object, while still providing the underlying interface,
+and delegating behavior.")
+    (license license:lgpl3)))
+
+(define-public python-lazr-config
+  (package
+    (name "python-lazr-config")
+    (version "2.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "lazr.config" version))
+        (sha256
+         (base32
+          "11xpddgyhyj7sf27wbmrq5lnqk21wnprx3ajycgwlxjamh6sgffd"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (propagated-inputs
+     `(("python-lazr-delegates" ,python-lazr-delegates)
+       ("python-zope-interface" ,python-zope-interface)))
+    (home-page "https://launchpad.net/lazr.config")
+    (synopsis "Create configuration schemas and process and validate configurations")
+    (description
+     "The LAZR config system is typically used to manage process configuration.
+Process configuration is for saying how things change when we run systems on
+different machines, or under different circumstances.  This system uses ini-like
+file format of section, keys, and values.  The config file supports inheritance
+to minimize duplication of information across files.  The format supports schema
+validation.")
+    (license license:lgpl3)))
+
+(define-public python-flufl-bounce
+  (package
+    (name "python-flufl-bounce")
+    (version "3.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flufl.bounce" version))
+        (sha256
+         (base32
+          "01lg1b0jpf8605mzaz9miq3nray6s7a7gc8n4wzg5nsxl8fglcp4"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-atpublic" ,python-atpublic)
+       ("python-zope-interface" ,python-zope-interface)))
+    (native-inputs
+     `(("python-nose2" ,python-nose2)))
+    (home-page "https://fluflbounce.readthedocs.io/en/latest/")
+    (synopsis "Email bounce detectors")
+    (description "The @code{flufl.bounce} library provides a set of heuristics
+and an API for detecting the original bouncing email addresses from a bounce
+message.  Many formats found in the wild are supported, as are VERP and
+RFC 3464.")
+    (license (list license:asl2.0
+                   license:lgpl3))))    ; only for setup_headers.py
+
+(define-public python-flufl-i18n
+  (package
+    (name "python-flufl-i18n")
+    (version "3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flufl.i18n" version))
+        (sha256
+         (base32
+          "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-atpublic" ,python-atpublic)))
+    (home-page "https://flufli18n.readthedocs.io")
+    (synopsis "API for Python internationalization")
+    (description
+     "This package provides a high level, convenient API for managing
+internationalization translation contexts in Python application.  There is a
+simple API for single-context applications, such as command line scripts which
+only need to translate into one language during the entire course of thei
+execution.  There is a more flexible, but still convenient API for multi-context
+applications, such as servers, which may need to switch language contexts for
+different tasks.")
+    (license license:asl2.0)))
+
+(define-public python-flufl-lock
+  (package
+    (name "python-flufl-lock")
+    (version "4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flufl.lock" version))
+        (sha256
+         (base32
+          "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-atpublic" ,python-atpublic)
+       ("python-psutil" ,python-psutil)))
+    (home-page "https://flufllock.readthedocs.io")
+    (synopsis "NFS-safe file locking with timeouts for POSIX systems")
+    (description
+     "The @dfn{flufl.lock} package provides NFS-safe file locking with
+timeouts for POSIX systems.  It is similar to the @code{O_EXCL} option of the
+@code{open} system call but uses a lockfile.  Lock objects support lock-breaking
+and have a maximum lifetime built-in.")
+    (license (list license:asl2.0
+                   license:lgpl3))))    ; only for setup_helpers.py
+
+(define-public python-flufl-testing
+  (package
+    (name "python-flufl-testing")
+    (version "0.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "flufl.testing" version))
+        (sha256
+         (base32
+          "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose2" ,python-nose2)))
+    (home-page "https://gitlab.com/warsaw/flufl.testing")
+    (synopsis "Collection of test tool plugins")
+    (description
+     "This package contains a small collection of test tool plugins for
+@code{nose2} and @code{flake8}.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9469f89bcf..45d7288817 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
-;;; 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, 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
@@ -401,6 +401,17 @@ data types.")
           ,@(if (hurd-system?)
                 `((delete 'patch-regen-for-hurd)) ;regen was removed after 3.5.9
                 '())
+          ,@(if (hurd-target?)
+                ;; The build system refuses to cross-compile for unknown targets
+                ;; even though it works fine.  Add GNU/Hurd target.
+                ;; TODO: Make it a patch in a future rebuild cycle.
+                '((add-before 'configure 'support-hurd-cross-compile
+                    (lambda _
+                      (substitute* "configure"
+                        (("\\*-\\*-vxworks.*" all)
+                         (string-append "*-*-gnu)\nac_sys_system=GNU\n;;\n" all)))
+                      #t)))
+                '())
           (add-before 'check 'set-TZDIR
             (lambda* (#:key inputs native-inputs #:allow-other-keys)
               ;; test_email requires the Olson time zone database.
@@ -578,7 +589,7 @@ instead of @command{python3}.")))
 (define-public micropython
   (package
     (name "micropython")
-    (version "1.11")
+    (version "1.12")
     (source
       (origin
         (method url-fetch)
@@ -587,7 +598,7 @@ instead of @command{python3}.")))
                             "/micropython-" version ".tar.gz"))
         (sha256
          (base32
-          "0px3xhw16rl0l7qifq7jw1gq92wzlnhd17dmszv9m2c3wbzs9p9f"))
+          "1fl1dm2aay23hyqbarnv69qj7z2wljcvkwmvfwfac8yadcv05zcq"))
       (modules '((guix build utils)))
       (snippet
        '(begin
@@ -601,7 +612,11 @@ instead of @command{python3}.")))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'build 'prepare-build
+         (add-before 'build 'build-mpy-cross
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (with-directory-excursion "mpy-cross"
+               (apply invoke "make" make-flags))))
+         (add-after 'build-mpy-cross 'prepare-build
            (lambda _
              (chdir "ports/unix")
              ;; see: https://github.com/micropython/micropython/pull/4246
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 4d95563403..0cb36427a0 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -106,7 +106,7 @@
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/steveire/grantlee.git")
+              (url "https://github.com/steveire/grantlee")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -596,6 +596,18 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 ;; qt used to refer to the monolithic Qt 5.x package
 (define-deprecated qt qtbase)
 
+;; This variable is required by 'python-pyside-2-tools', which copies some
+;; qtbase executables that fail to run because RUNPATH refers to the
+;; wrong $ORIGIN.  TODO: Merge with qtbase in the next rebuild cycle.
+(define qtbase/next
+  (package
+    (inherit qtbase)
+    (source
+     (origin
+       (inherit (package-source qtbase))
+       (patches (append (origin-patches (package-source qtbase))
+                        (search-patches "qtbase-absolute-runpath.patch")))))))
+
 (define-public qtsvg
   (package (inherit qtbase)
     (name "qtsvg")
@@ -2566,19 +2578,19 @@ color-related widgets.")
 (define-public python-shiboken-2
   (package
     (name "python-shiboken-2")
-    (version "5.12.6")
+    (version "5.14.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.qt.io/official_releases"
                                   "/QtForPython/pyside2/PySide2-" version
-                                  "-src/pyside-setup-everywhere-src-"
+                                  "-src/pyside-setup-opensource-src-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1n45l6xxyxs6cfp2l4rp8qs1c2fyfwyrdxa4qcpwfsqsi51rydsk"))))
+                "08lhqm0n3fjqpblcx9rshsp8g3bvf7yzbai5q99bly2wa04y6b83"))))
     (build-system cmake-build-system)
     (inputs
-     `(("clang-toolchain" ,clang-toolchain-6)
+     `(("clang-toolchain" ,clang-toolchain)
        ("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
        ("python-wrapper" ,python-wrapper)
@@ -2631,7 +2643,7 @@ color-related widgets.")
     (inputs
      `(("libxml2" ,libxml2)
        ("libxslt" ,libxslt)
-       ("clang-toolchain" ,clang-toolchain-6)
+       ("clang-toolchain" ,clang-toolchain)
        ("qtbase" ,qtbase)
        ("qtdatavis3d" ,qtdatavis3d)
        ("qtlocation" ,qtlocation)
@@ -2699,7 +2711,7 @@ generate Python bindings for your C or C++ code.")
     (inputs
      `(("python-pyside-2" ,python-pyside-2)
        ("python-shiboken-2" ,python-shiboken-2)
-       ("qtbase" ,qtbase)))
+       ("qtbase" ,qtbase/next)))
     (native-inputs
      `(("python" ,python-wrapper)))
     (arguments
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index a607ad1bae..812aa310c4 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -82,7 +82,7 @@
     (source
      (origin (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/jgaeddert/liquid-dsp.git")
+                   (url "https://github.com/jgaeddert/liquid-dsp")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
@@ -113,7 +113,7 @@ mathematical operations, and much more.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "git://git.osmocom.org/rtl-sdr.git")
+             (url "https://git.osmocom.org/rtl-sdr/")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -548,7 +548,7 @@ to the fix block above.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/csete/gqrx.git")
+             (url "https://github.com/csete/gqrx")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -618,14 +618,14 @@ hardware.")
 (define-public flrig
   (package
     (name "flrig")
-    (version "1.3.50")
+    (version "1.3.51")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.w1hkj.com/files/flrig/flrig-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0fzrknzzi8kmzmrcfpc8rxr7v4a4ny6z6z5q5qwh95sp2kn2qzp9"))))
+        (base32 "0aq4x0ai9q08ypfhzfj2inc4z3q39zq1l6h9as1kil9yn4zbay61"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -665,7 +665,7 @@ or USB connection.")
        ("libxft" ,libxft)))
     (synopsis "Tool for AMP file transfer")
     (description
-     "FLAMP is a program for transfering files by radio waves using AMP
+     "FLAMP is a program for transferring files by radio waves using AMP
 (Amateur Multicast Protocol).")
     (home-page "http://www.w1hkj.com/")
     (license license:gpl3+)))
@@ -712,7 +712,7 @@ for correctness.")
       (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mossmann/hackrf.git")
+             (url "https://github.com/mossmann/hackrf")
              (commit commit)))
        (file-name (git-file-name name version))
        (sha256
@@ -801,7 +801,7 @@ users.")
   (package
     (inherit hamlib)
     (name "wsjtx-hamlib")
-    (version "2.1.2")
+    (version "2.2.2")
     (source
      (origin
        (method git-fetch)
@@ -810,18 +810,32 @@ users.")
              (commit (string-append "wsjtx-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ksv3cmr1dl45p0pp1panyc9dngd158gvv9ysv25lq4nqv1wn87i"))))
+        (base32 "01h5ps0yq5vi1x9rkw742gx6a5fj02zhbpi89i412qdfbnyk35cv"))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("texinfo" ,texinfo)
-       ,@(package-native-inputs hamlib)))))
+       ,@(package-native-inputs hamlib)))
+    (arguments
+     `(#:configure-flags '("--disable-static"
+                           "--with-lua-binding"
+                           "--with-python-binding"
+                           "--with-tcl-binding"
+                           "--with-xml-support")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests
+           (lambda _
+             (substitute* "tests/testloc.c"
+               (("dmmm2dec\\(deg, mmm, nesw\\);")
+                "dmmm2dec(deg, mmm, 0, nesw);"))
+             #t)))))))
 
 (define-public wsjtx
   (package
     (name "wsjtx")
-    (version "2.1.2")
+    (version "2.2.2")
     (source
      (origin
        (method git-fetch)
@@ -830,7 +844,7 @@ users.")
              (commit (string-append "wsjtx-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1fnqzjd3dmxp3yjwjvwz2djk9gzb1y2cqfa188f3x8lynxhdhnfs"))
+        (base32 "0fhws44gg05d9y2al0pcdnxwxwh4bazcfl0g5mq2ks1r7w23wi5x"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -882,14 +896,14 @@ weak-signal conditions.")
   (package
     (inherit wsjtx)
     (name "js8call")
-    (version "2.1.1")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://files.js8call.com/" version
                            "/js8call-" version ".tgz"))
        (sha256
-        (base32 "034jnv6h172znn9ijl6wpmzx0rqibb69ppg52ndvkxhqlgrbsvyc"))
+        (base32 "149sjwc4zg6ckgq26af93p4fxappa4k9dh7rdy67g8ajfjad4cd8"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -1011,7 +1025,7 @@ gain and standing wave ratio.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/flightaware/dump1090.git")
+             (url "https://github.com/flightaware/dump1090")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1053,7 +1067,7 @@ their position, altitude, speed, etc.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/merbanan/rtl_433.git")
+             (url "https://github.com/merbanan/rtl_433")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1079,7 +1093,7 @@ from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/EliasOenal/multimon-ng.git")
+             (url "https://github.com/EliasOenal/multimon-ng")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 2fc7f0a113..42cc240f1c 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -290,7 +290,7 @@ directly.")
     (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/rails/rails-dom-testing.git")
+            (url "https://github.com/rails/rails-dom-testing")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -533,7 +533,7 @@ application bootup, plugins, generators, and Rake tasks.")
        ;; Download from GitHub as test files are not provided in the gem.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rails/web-console.git")
+             (url "https://github.com/rails/web-console")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index 999c1e10f0..3471cb604a 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -160,7 +160,7 @@ Lucene library, a high-performance, full-featured text search engine.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/swh/LRDF.git")
+                    (url "https://github.com/swh/LRDF")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/rednotebook.scm b/gnu/packages/rednotebook.scm
index e5b1b2c7bf..c7ece525e9 100644
--- a/gnu/packages/rednotebook.scm
+++ b/gnu/packages/rednotebook.scm
@@ -35,7 +35,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jendrikseipp/rednotebook.git")
+             (url "https://github.com/jendrikseipp/rednotebook")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm
index de7d08ae4d..e26170942b 100644
--- a/gnu/packages/rpc.scm
+++ b/gnu/packages/rpc.scm
@@ -48,7 +48,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/grpc/grpc.git")
+                    (url "https://github.com/grpc/grpc")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -124,7 +124,7 @@ browsers to backend services.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/grpc/grpc.git")
+                    (url "https://github.com/grpc/grpc")
                     (commit (string-append "v" version))))
               (file-name (git-file-name "grpc" version))
               (sha256
@@ -207,7 +207,7 @@ with the HTTP/2-based RPC framework gRPC.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/apache/thrift.git")
+             (url "https://github.com/apache/thrift")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/rsync.scm b/gnu/packages/rsync.scm
index 0d8217ee20..214095aa61 100644
--- a/gnu/packages/rsync.scm
+++ b/gnu/packages/rsync.scm
@@ -74,7 +74,7 @@ files in the destination.")
        (source (origin
             (method git-fetch)
             (uri (git-reference
-                   (url "https://github.com/librsync/librsync.git")
+                   (url "https://github.com/librsync/librsync")
                    (commit (string-append "v" version))))
             (file-name (git-file-name name version))
             (sha256
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index b76b5fe411..7610244ff0 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca>
 ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de>
 ;;; Copyright © 2019 Brett Gilio <brettg@posteo.de>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,6 +42,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
@@ -49,6 +51,7 @@
   #:use-module (gnu packages rails)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages java)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages libidn)
@@ -58,6 +61,7 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages node)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ragel)
@@ -75,6 +79,13 @@
   #:use-module (guix build-system ruby)
   #:use-module ((srfi srfi-1) #:select (alist-delete)))
 
+(define %prawn-project-licenses
+  ;; This set of licenses applies to most (all?) components of the Prawn
+  ;; project (it is triple licensed).
+  (list license:ruby
+        license:gpl2+
+        license:gpl3+))
+
 (define-public ruby-2.6
   (package
     (name "ruby")
@@ -222,7 +233,7 @@ a focus on simplicity and productivity.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mruby/mruby.git")
+             (url "https://github.com/mruby/mruby")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -622,6 +633,97 @@ outcomes of a code example.")
     (propagated-inputs
      `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
 
+(define-public ruby-sorcerer
+  (package
+    (name "ruby-sorcerer")
+    (version "2.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "sorcerer" version))
+        (sha256
+          (base32
+            "0d32ha9pp9slpmsm027pkdpbr9vc5jn2m8rl6hwwx6a87m8cr58h"))))
+    (build-system ruby-build-system)
+    (synopsis "Ripper-style abstract syntax tree to Ruby source generator")
+    (description "Sorcerer generates Ruby code from a Ripper-like abstract
+syntax tree (i.e. S-Expressions).  Sorcerer is targeted mainly at small
+snippets of Ruby code, expressable in a single line.  Longer examples may be
+re-sourced, but they will be rendered in a single line format.")
+    (home-page "https://github.com/rspec-given/sorcerer")
+    (license license:expat)))
+
+(define-public ruby-given-core
+  (package
+    (name "ruby-given-core")
+    (version "3.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "given_core" version))
+       (sha256
+        (base32
+         "1lzyqllbbv6as3qgwz2007mvy7wy247bgkch9adnmh1zfa73bkrg"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;no test suite for the core package
+    (propagated-inputs
+     `(("ruby-sorcerer" ,ruby-sorcerer)))
+    (synopsis "Core abstractions used by rspec-given and minitest-given")
+    (description "Given_core is the basic functionality behind rspec-given and
+minitest-given, extensions that allow the use of Given/When/Then terminology
+when defining specifications.")
+    (home-page "https://github.com/rspec-given/rspec-given")
+    (license license:expat)))
+
+(define-public ruby-rspec-given
+  (package
+    (name "ruby-rspec-given")
+    (version "3.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rspec-given" version))
+       (sha256
+        (base32
+         "1783bazja10kbha8hk15khvybsq88siyax02cpkk688604h54nji"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "rs"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-rakefile
+           (lambda _
+             (substitute* '("Rakefile" "rakelib/gemspec.rake")
+               (("require '\\./lib/given/.*") "")
+               (("Given::VERSION") (format #f "~s" ,version))
+               ;; Fix the error: "cannot load such file -- example_helper"
+               (("sh \"rspec")
+                "sh \"rspec -Ilib:examples"))
+             #t))
+         (add-after 'extract-gemspec 'delete-failing-tests
+           ;; See: https://github.com/jimweirich/rspec-given/issues/57.
+           (lambda _
+             (substitute* ".gemspec"
+               (("\"spec/lib/given/natural_assertion_spec.rb\".freeze, ")
+                "")
+               (("\"examples/integration/failing_messages_spec.rb\".freeze, ")
+                ""))
+             (delete-file "spec/lib/given/natural_assertion_spec.rb")
+             (delete-file "examples/integration/failing_messages_spec.rb")
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-minitest" ,ruby-minitest)))
+    (propagated-inputs
+     `(("ruby-given-core" ,ruby-given-core)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Given/When/Then for RSpec and Minitest")
+    (description "Given is an RSpec extension that allows the use of
+Given/When/Then terminology when defining specifications, in a way similar to
+the Cucumber Gherkin language.")
+    (home-page "https://github.com/rspec-given/rspec-given")
+    (license license:expat)))
+
 (define-public ruby-rspec-its
   (package
     (name "ruby-rspec-its")
@@ -630,7 +732,7 @@ outcomes of a code example.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rspec/rspec-its.git")
+             (url "https://github.com/rspec/rspec-its")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -679,6 +781,16 @@ eq(1)\\}}.")
     (home-page "https://github.com/rspec/rspec-its")
     (license license:expat)))
 
+;;; This variant is used to break a cycle with ruby-protobuf.
+(define-public ruby-rspec-its-minimal
+  (hidden-package
+   (package
+     (inherit ruby-rspec-its)
+     (arguments
+      (substitute-keyword-arguments (package-arguments ruby-rspec-its)
+        ((#:tests? _ #f) #f)))
+     (native-inputs '()))))
+
 (define-public ruby-rspec-mocks
   (package
     (name "ruby-rspec-mocks")
@@ -808,13 +920,13 @@ expectations and mocks frameworks.")
 (define-public bundler
   (package
     (name "bundler")
-    (version "1.17.3")
+    (version "2.1.4")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "bundler" version))
               (sha256
                (base32
-                "0ln3gnk7cls81gwsbxvrmlidsfd78s6b2hzlm4d4a9wbaidzfjxw"))))
+                "12glbb1357x91fvd004jgkw7ihlkpc9dwr349pd7j83isqhls0ah"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -973,52 +1085,733 @@ line of code.")
     ;; of the Expat license.
     (license license:bsd-3)))
 
+(define-public ruby-pandoc-ruby
+  (package
+    (name "ruby-pandoc-ruby")
+    (version "2.1.4")
+    (source
+     (origin
+       (method git-fetch)               ;the gem lacks many test files
+       (uri (git-reference
+             (url "https://github.com/xwmx/pandoc-ruby")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "03a11clhycyn0jhc7g9davpqd83sn60jqwjy1y145ag9sq6sp935"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           ;; TODO: Remove this phase after ghc-pandoc gets upgraded to 2.9.2+
+           ;; (see: https://github.com/xwmx/pandoc-ruby/issues/39).
+           (lambda _
+             (substitute* "test/test_conversions.rb"
+               (("next if from == to.*" all)
+                (string-append
+                 all
+                 "      next if ['plain', 'beamer'].include? to\n")))
+             #t))
+         (add-after 'unpack 'patch-pandoc-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((pandoc (string-append (assoc-ref inputs "ghc-pandoc")
+                                          "/bin/pandoc")))
+               (substitute* "lib/pandoc-ruby.rb"
+                 (("@@pandoc_path = 'pandoc'")
+                  (format #f "@@pandoc_path = '~a'" pandoc)))
+               (substitute* "test/test_pandoc_ruby.rb"
+                 (("('|\")pandoc" _ quote)
+                  (string-append quote pandoc))
+                 (("\\^pandoc")
+                  ".*pandoc"))
+               #t)))
+         (add-after 'extract-gemspec 'remove-Gemfile.lock
+           (lambda _
+             (delete-file "Gemfile.lock")
+             (substitute* "pandoc-ruby.gemspec"
+               (("Gemfile\\.lock") ""))
+             #t)))))
+    (native-inputs
+     `(("ruby-mocha" ,ruby-mocha)))
+    (inputs
+     `(("ghc-pandoc" ,ghc-pandoc)))
+    (synopsis "Ruby wrapper for Pandoc")
+    (description "PandocRuby is a wrapper for Pandoc, a Haskell library with
+command line tools for converting one markup format to another.  Pandoc can
+convert documents from a variety of formats including markdown,
+reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
+variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
+ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
+markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and
+more.")
+    (home-page "https://github.com/xwmx/pandoc-ruby")
+    (license license:expat)))
+
+(define-public ruby-slim
+  (package
+    (name "ruby-slim")
+    (version "4.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "slim" version))
+       (sha256
+        (base32
+         "0gjx30g84c82qzg32bd7giscvb4206v7mvg56kc839w9wjagn36n"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; See: https://github.com/slim-template/slim/issues/857 and
+         ;; https://github.com/slim-template/slim/issues/858.
+         (add-after 'unpack 'skip-broken-tests
+           (lambda _
+             (substitute* "test/core/test_embedded_engines.rb"
+               (("def test_render_with_markdown")
+                "def skipped_test_render_with_markdown"))
+             (substitute* "test/translator/test_translator.rb"
+               (("raise (\"Missing test for.*)" _ tail)
+                (string-append "print " tail)))
+             #t))
+         ;; See: https://salsa.debian.org/ruby-team/ruby-slim/-/commit/
+         ;; 824862bd99d1675bc699d8fc71ba965a785c1f44.
+         (add-after 'unpack 'prevent-bundler-interference
+           (lambda _
+             (substitute* "Rakefile"
+               (("require 'bundler/setup'") "nil")
+               (("Bundler::GemHelper\\.install_tasks") "nil"))
+             #t)))))
+    (native-inputs
+     `(("ruby-rack-test" ,ruby-rack-test)
+       ("ruby-sinatra" ,ruby-sinatra)))
+    (propagated-inputs
+     `(("ruby-temple" ,ruby-temple)
+       ("ruby-tilt" ,ruby-tilt)))
+    (synopsis "Minimalist template language for Ruby")
+    (description "Slim is a template language for Ruby that aims to reduce the
+syntax to the minimum while remaining clear.")
+    (home-page "http://slim-lang.com/")
+    (license license:expat)))
+
 (define-public ruby-asciidoctor
   (package
-  (name "ruby-asciidoctor")
-  (version "1.5.7.1")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (rubygems-uri "asciidoctor" version))
-      (sha256
+    (name "ruby-asciidoctor")
+    (version "2.0.10")
+    (source
+     (origin
+       (method git-fetch)               ;the gem release lacks a Rakefile
+       (uri (git-reference
+             (url "https://github.com/asciidoctor/asciidoctor")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
         (base32
-          "0v52bzc72cvg7zfgq27pa4mgyf29dx9m20fghrw1xmvwgd519n1w"))))
-  (build-system ruby-build-system)
-  (arguments
-   `(#:test-target "test:all"
-     #:phases
-     (modify-phases %standard-phases
-       (add-before 'check 'remove-circular-tests
-         (lambda _
-           ;; Remove tests that require circular dependencies to load or pass.
-           (delete-file "test/invoker_test.rb")
-           (delete-file "test/converter_test.rb")
-           (delete-file "test/options_test.rb")
-           #t)))))
-  (native-inputs
-   `(("ruby-minitest" ,ruby-minitest)
-     ("ruby-nokogiri" ,ruby-nokogiri)
-     ("ruby-asciimath" ,ruby-asciimath)
-     ("ruby-coderay" ,ruby-coderay)))
-  (synopsis "Converter from AsciiDoc content to other formats")
-  (description
-    "Asciidoctor is a text processor and publishing toolchain for converting
-AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other formats.")
-  (home-page "https://asciidoctor.org")
-  (license license:expat)))
+         "0jaxpnsdnx3qyjw5p2lsx1swny12q1i2vxw2kgdp4vlsyjv95z95"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "test:all"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'replace-git-ls-files
+           (lambda _
+             ;; TODO: Remove after the fix of using 'cut' to better mimic the
+             ;; git ls-files output is merged in ruby-build-system.
+             (substitute* "asciidoctor.gemspec"
+               (("`git ls-files -z`")
+                "`find . -type f -print0 |sort -z|cut -zc3-`"))
+             #t))
+         (add-after 'extract-gemspec 'strip-version-requirements
+           (lambda _
+             (delete-file "Gemfile")
+             (substitute* "asciidoctor.gemspec"
+               (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
+                (string-append stripped "\n")))
+             #t)))))
+    (native-inputs
+     `(("ruby-erubis" ,ruby-erubis)
+       ("ruby-minitest" ,ruby-minitest)
+       ("ruby-nokogiri" ,ruby-nokogiri)
+       ("ruby-asciimath" ,ruby-asciimath)
+       ("ruby-coderay" ,ruby-coderay)
+       ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-haml" ,ruby-haml)
+       ("ruby-rouge" ,ruby-rouge)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-slim" ,ruby-slim)
+       ("ruby-tilt" ,ruby-tilt)))
+    (synopsis "Converter from AsciiDoc content to other formats")
+    (description "Asciidoctor is a text processor and publishing toolchain for
+converting AsciiDoc content to HTML5, DocBook 5 (or 4.5), PDF, and other
+formats.")
+    (home-page "https://asciidoctor.org")
+    (license license:expat)))
+
+(define-public ruby-prawn-icon
+  (package
+    (name "ruby-prawn-icon")
+    (version "2.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "prawn-icon" version))
+       (sha256
+        (base32
+         "1ivkdf8rdf92hhy97vbmc2a4w97vcvqd58jcj4z9hz3hfsb1526w"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'remove-unnecessary-dependencies
+                    (lambda _
+                      (substitute* '("Rakefile" "spec/spec_helper.rb")
+                        ((".*[Bb]undler.*") "")
+                        (("^require 'rubocop.*") "")
+                        (("^RuboCop.*") ""))
+                      #t)))))
+    (native-inputs
+     `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
+       ("ruby-pdf-reader" ,ruby-pdf-reader)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (propagated-inputs
+     `(("ruby-prawn" ,ruby-prawn)))
+    (synopsis "Icon fonts for use with the Prawn PDF toolkit")
+    (description "@code{Prawn::Icon} provides various icon fonts including
+FontAwesome, PaymentFont and Foundation Icons for use with the Prawn PDF
+toolkit.")
+    (home-page "https://github.com/jessedoyle/prawn-icon/")
+    (license %prawn-project-licenses)))
+
+(define-public ruby-css-parser
+  (package
+    (name "ruby-css-parser")
+    (version "1.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "css_parser" version))
+       (sha256
+        (base32
+         "04c4dl8cm5rjr50k9qa6yl9r05fk9zcb1zxh0y0cdahxlsgcydfw"))))
+    (build-system ruby-build-system)
+    (arguments `(#:tests? #f))          ;gem doesn't ship with test suite
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)))
+    (synopsis "Ruby Cascading Style Sheets (CSS) parser")
+    (description "This package allows loading, parsing and cascading Cascading
+Style Sheets (CSS) rule sets in Ruby.")
+    (home-page "https://github.com/premailer/css_parser")
+    (license license:expat)))
+
+(define-public ruby-prawn-svg
+  (package
+    (name "ruby-prawn-svg")
+    (version "0.30.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "prawn-svg" version))
+       (sha256
+        (base32
+         "0df3l49cy3xpwi0b73hmi2ykbjg9kjwrvhk0k3z7qhh5ghmmrn77"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'do-not-use-bundler
+                    (lambda _
+                      (substitute* "spec/spec_helper.rb"
+                        ((".*[Bb]undler.*") ""))
+                      #t))
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "rspec" "-Ilib" "-rprawn-svg"))
+                      #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-css-parser" ,ruby-css-parser)
+       ("ruby-prawn" ,ruby-prawn)))
+    (synopsis "SVG renderer for the Prawn PDF library")
+    (description "This library allows rendering Scalable Vector Graphics (SVG)
+graphics directly into a Portable Document Format (PDF) document using the
+Prawn module.")
+    (home-page "https://github.com/mogest/prawn-svg")
+    (license license:expat)))
+
+(define-public ruby-prawn-templates
+  (package
+    (name "ruby-prawn-templates")
+    (version "0.1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/prawnpdf/prawn-templates.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0wll54wxxwixpwazfn4ffbqvqbfrl01cfsv8y11vnlzy7isx5xvl"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'do-not-use-bundler
+                    (lambda _
+                      (substitute* "spec/spec_helper.rb"
+                        ((".*[Bb]undler.*") ""))
+                      #t))
+                  (replace 'check
+                    (lambda* (#:key tests? #:allow-other-keys)
+                      (when tests?
+                        (invoke "rspec"))
+                      #t)))))
+    (native-inputs
+     `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-pdf-reader" ,ruby-pdf-reader)
+       ("ruby-prawn" ,ruby-prawn)))
+    (synopsis "Prawn extension to include or combine PDF documents")
+    (description "This @strong{unmaintained} package provides a Prawn
+extension that allows including other Portable Document Format (PDF) documents
+as background or combining several PDF documents into one.  This functionality
+used to be part of Prawn itself, but was extracted from Prawn 0.15.0 because
+of its many longstanding issues.")
+    (home-page "https://github.com/prawnpdf/prawn-templates")
+    (license %prawn-project-licenses)))
+
+(define-public ruby-polyglot
+  (package
+    (name "ruby-polyglot")
+    (version "0.3.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "polyglot" version))
+       (sha256
+        (base32
+         "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr"))))
+    (build-system ruby-build-system)
+    (arguments `(#:tests? #f))           ;no test suite
+    (synopsis "Augment @code{require} to load non-Ruby file types")
+    (description "The Polyglot library allows a Ruby module to register a
+loader for the file type associated with a filename extension, and it augments
+@code{require} to find and load matching files.")
+    (home-page "https://github.com/cjheath/polyglot")
+    (license license:expat)))
+
+(define-public ruby-treetop
+  (package
+    (name "ruby-treetop")
+    (version "1.6.10")
+    (source
+     (origin
+       (method git-fetch)               ;no test suite in distributed gem
+       (uri (git-reference
+             (url "https://github.com/cjheath/treetop.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1dmk94z6ivhrz5hsq68vl5vgydhkz89n394rha1ymddw3rymbfcv"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'replace-git-ls-files
+           (lambda _
+             ;; TODO: Remove after the fix of using 'cut' to better mimic the
+             ;; git ls-files output is merged in ruby-build-system.
+             (substitute* "treetop.gemspec"
+               (("`git ls-files -z`")
+                "`find . -type f -print0 |sort -z|cut -zc3-`"))
+             #t)))))
+    (native-inputs
+     `(("ruby-activesupport" ,ruby-activesupport)
+       ("ruby-rr" ,ruby-rr)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-polyglot" ,ruby-polyglot)))
+    (synopsis "Ruby-based parsing DSL based on parsing expression grammars")
+    (description "This package provides a Ruby-based Parsing Expression
+Grammar (PEG) parser generator Domain Specific Language (DSL).")
+    (home-page "https://github.com/cjheath/treetop")
+    (license license:expat)))
+
+(define-public ruby-rubocop-performance
+  (package
+    (name "ruby-rubocop-performance")
+    (version "1.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rubocop-performance" version))
+       (sha256
+        (base32
+         "04r8d4x62ygv17spvz9yyfxbmbf8qxwhijs0xycfvzr0q4pyg9sw"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))                    ;no test suite in the distributed gem
+    (propagated-inputs
+     `(("ruby-rubocop" ,ruby-rubocop)))
+    (synopsis "Performance optimizations checkers for Ruby code")
+    (description "This package provides a collection of RuboCop cops to check
+for performance optimizations in Ruby code.")
+    (home-page "https://docs.rubocop.org/rubocop-performance/")
+    (license license:expat)))
+
+(define-public ruby-gimme
+  (let ((revision "1")
+        (commit "4e71f0236f1271871916dd403261d26533db34c0"))
+    (package
+      (name "ruby-gimme")
+      (version (git-version "0.5.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/searls/gimme.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0hrd32ygvf3i7h47ak8f623cz8ns9q7g60nnnvvlnywbggjaz3h6"))))
+      (build-system ruby-build-system)
+      (native-inputs
+       `(("ruby-coveralls" ,ruby-coveralls)
+         ("ruby-cucumber" ,ruby-cucumber)
+         ("ruby-pry" ,ruby-pry)
+         ("ruby-simplecov" ,ruby-simplecov)
+         ("ruby-rspec-given" ,ruby-rspec-given)))
+      (arguments
+       `(;; The cucumber task fails with error: "index 3 out of matches
+         ;; (IndexError)", apparently due to our newer Cucumber version.
+         ;; TODO: Try the "default" task with a future release.
+         #:test-target "spec"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'extract-gemspec 'prepare-for-tests
+             (lambda _
+               ;; Delete failing tests (possibly due to our newer rspec
+               ;; version).
+               (delete-file "spec/gimme/gives_class_methods_spec.rb")
+               (delete-file "spec/gimme/rspec_adapter_spec.rb")
+               (delete-file "spec/gimme/verifies_class_methods_spec.rb")
+               ;; Fix duplicate version requirements and de-register files.
+               (delete-file "Gemfile")
+               (delete-file "Gemfile.lock")
+               (substitute* "gimme.gemspec"
+                 ((".*\"Gemfile\".*") "")
+                 ((".*\"Gemfile\\.lock\",.*") "")
+                 ((".*(rspec|cucumber).*\">= 0\".*") "")
+                 (("\"spec/gimme/gives_class_methods_spec.rb\",") "")
+                 (("\"spec/gimme/rspec_adapter_spec.rb\",") "")
+                 (("\"spec/gimme/verifies_class_methods_spec.rb\",") "")
+                 ;; All of these gems relate to development, and are
+                 ;; unnecessary when running the tests.
+                 ((".*(add|gem).*guard-.*") "")
+                 ((".*(add|gem).*jeweler.*") "")
+                 ((".*(add|gem).*pry.*") "")
+                 ((".*(add|gem).*growl.*") "")
+                 ((".*(add|gem).*rb-fsevent.*") ""))
+               #t)))))
+      (synopsis "Lightweight test double library for Ruby")
+      (description "Gimme is a very lightweight test double library for Ruby,
+based on Mockito (a mocking framework for Java).  It is an opinionated (but
+not noisy) means to facilitate test-driving by enabling the authors to specify
+only what they care about.")
+      (home-page "https://github.com/searls/gimme")
+      (license license:expat))))
+
+(define-public ruby-standard
+  (package
+    (name "ruby-standard")
+    (version "0.4.7")
+    (source
+     (origin
+       (method git-fetch)               ;no test suite in distributed gem
+       (uri (git-reference
+             (url "https://github.com/testdouble/standard.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ylx0lm2pbbgr5h7fban592w96bl3wxmvfcpcdfrhkxnpg5kiwgv"))))
+    (build-system ruby-build-system)
+    (arguments
+     ;; TODO: the tests are currently broken due to using a newer Rubocop.
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'relax-version-requiremens
+           (lambda _
+             (delete-file "Gemfile")
+             (delete-file "Gemfile.lock")
+             #t))
+         (replace 'replace-git-ls-files
+           (lambda _
+             ;; TODO: Remove after the fix of using 'cut' to better mimic the
+             ;; git ls-files output is merged in ruby-build-system.
+             (substitute* "standard.gemspec"
+               (("`git ls-files -z`")
+                "`find . -type f -not -regex '.*\\.gem$' -print0 \
+|sort -z|cut -zc3-`"))
+             #t)))))
+    (native-inputs
+     `(("ruby-gimme" ,ruby-gimme)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (propagated-inputs
+     `(("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-rubocop-performance" ,ruby-rubocop-performance)))
+    (synopsis "Ruby Style Guide, with linter & automatic code fixer")
+    (description "Standard is a port of StandardJS.  Like StandardJS, it aims
+to save time in the following ways:
+@itemize
+@item No configuration.
+@item Automatically format code.
+@item Catch style issues and programmer errors early.
+@end itemize")
+    (home-page "https://github.com/testdouble/standard")
+    (license license:expat)))
+
+(define-public ruby-chunky-png
+  ;; There hasn't been a release since 2018/11/21 and there are test failures
+  ;; in that release, so use the latest commit.
+  (let ((revision "1")
+        (commit "143b9cd1412e49edd4f8b661c7cd9b22941f43c0"))
+    (package
+      (name "ruby-chunky-png")
+      (version (git-version "1.3.11" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/wvanbergen/chunky_png.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0wbcgfzymbpmmxsb04arc49a2icki6f2fc6d6sqgg8369mc67g9z"))))
+      (build-system ruby-build-system)
+      (arguments
+       `(#:test-target "spec"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'disable-bundler
+             (lambda _
+               (substitute* (find-files "." "\\.rb$")
+                 (("require.*bundler/setup.*") ""))
+               #t))
+           (replace 'replace-git-ls-files
+             (lambda _
+               ;; TODO: Remove after the fix of using 'cut' to better mimic the
+               ;; git ls-files output is merged in ruby-build-system.
+               (substitute* "chunky_png.gemspec"
+                 (("`git ls-files`")
+                  "`find . -type f -not -regex '.*\\.gem$' |sort |cut -c3-`"))
+               #t)))))
+      (native-inputs
+       `(("bundler" ,bundler)
+         ("ruby-rspec" ,ruby-rspec)
+         ("ruby-standard" ,ruby-standard)
+         ("ruby-yard" ,ruby-yard)))
+      (synopsis "Ruby library to handle PNG images")
+      (description "ChunkyPNG is a pure Ruby library that can read and write
+Portable Network Graphics (PNG) images without depending on an external image
+library.  It tries to be memory efficient and reasonably fast.  It has
+features such as:
+@itemize
+@item
+Decoding support for any image that the PNG standard allows.  This includes all
+standard color modes, all bit depths, all transparency, and interlacing and
+filtering options.
+@item
+Encoding support for images of all color modes (true color, grayscale, and
+indexed) and transparency for all these color modes.  The best color mode is
+chosen automatically, based on the amount of used colors.
+@item Read/write access to the image's pixels.
+@item Read/write access to all image metadata that is stored in chunks.
+@item
+Memory efficiency: @code{fixnum} are used, i.e. 4 or 8 bytes of memory per
+pixel, depending on the hardware).
+@item
+Performance: ChunkyPNG is reasonably fast for Ruby standards, by only using
+integer math and a highly optimized saving routine.
+@item Interoperability with RMagick.
+@end itemize")
+      (home-page "https://github.com/wvanbergen/chunky_png/wiki")
+      (license license:expat))))
+
+(define-public ruby-text-hyphen
+  (package
+    (name "ruby-text-hyphen")
+    (version "1.4.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "text-hyphen" version))
+        (sha256
+          (base32
+            "1gj4awvs9ryf960m0iawg43jyjmfwcqgfwrbcfp890a57b9ag7q1"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("ruby-hoe" ,ruby-hoe)))
+    (synopsis "Ruby library to hyphenate words in various languages")
+    (description "Text::Hyphen is a Ruby library to hyphenate words in various
+languages using Ruby-fied versions of TeX hyphenation patterns.  It will
+properly hyphenate various words according to the rules of the language the
+word is written in.  The algorithm is based on that of the TeX typesetting
+system by Donald E.  Knuth.")
+    (home-page "https://github.com/halostatue/text-hyphen")
+    ;; The whole is licensed under the Expat license, but parts use various
+    ;; versions of the LaTeX Project Public License.
+    (license license:expat)))
+
+(define-public ruby-open-uri-cached
+  (package
+    (name "ruby-open-uri-cached")
+    (version "0.0.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "open-uri-cached" version))
+       (sha256
+        (base32
+         "13xy2vhrgz9mdxhklw5fszhamsdxh8ysf3l40g92hqm4hm288wap"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:tests? #f))                    ;no test suite
+    (synopsis "OpenURI with transparent disk caching")
+    (description "OpenURI with transparent disk caching, which is
+useful to avoid making excessive queries, for example when scraping
+web pages.")
+    (home-page "https://github.com/tigris/open-uri-cached")
+    (license license:expat)))
+
+(define-public ruby-asciidoctor-pdf
+  ;; Use the latest commit, as the last tag doesn't build with the
+  ;; latest Ruby dependencies in Guix.
+  (let ((revision "1")
+        (commit "d257440df895d1595a3825ef58b32e4b290ba1c3"))
+    (package
+      (name "ruby-asciidoctor-pdf")
+      (version (git-version "1.5.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)      ;no test suite in the distributed gem
+         (uri (git-reference
+               (url "https://github.com/asciidoctor/asciidoctor-pdf.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1563d11ghzsrsg4inwfwj6b9hb5sk5b429f49fwq5qg3sq76kgjj"))))
+      (build-system ruby-build-system)
+      (arguments
+       `(#:test-target "spec"
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'remove-failing-tests
+             ;; Two tests module fail for unknown reasons, *only* when
+             ;; ran in the build container (see:
+             ;; https://github.com/asciidoctor/asciidoctor-pdf/issues/1725#issuecomment-658777965).
+             (lambda _
+               (delete-file "spec/audio_spec.rb")
+               (delete-file "spec/video_spec.rb")
+               #t))
+           (add-after 'extract-gemspec 'strip-version-requirements
+             (lambda _
+               (substitute* "asciidoctor-pdf.gemspec"
+                 (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
+                  (string-append stripped "\n")))
+               #t))
+           (replace 'replace-git-ls-files
+             ;; TODO: Remove after the fix of using 'cut' to better mimic the
+             ;; git ls-files output is merged in ruby-build-system.
+             (lambda _
+               (substitute* "asciidoctor-pdf.gemspec"
+                 (("`git ls-files -z`")
+                  "`find . -type f -not -regex '.*\\.gem$' -print0 \
+|sort -z|cut -zc3-`"))
+               #t))
+           ;; The tests rely on the Gem being installed, so move the check phase
+           ;; after the install phase.
+           (delete 'check)
+           (add-after 'install 'check
+             (lambda* (#:key outputs tests? #:allow-other-keys)
+               (let ((new-gem (string-append (assoc-ref outputs "out")
+                                             "/lib/ruby/vendor_ruby")))
+                 (setenv "GEM_PATH"
+                         (string-append (getenv "GEM_PATH") ":" new-gem))
+                 (when tests?
+                   (invoke "rspec" "-t" "~visual" "-t" "~cli" "-t" "~network"))
+                 #t))))))
+      (native-inputs
+       `(("ruby-chunky-png" ,ruby-chunky-png)
+         ("ruby-coderay" ,ruby-coderay)
+         ("ruby-pdf-inspector" ,ruby-pdf-inspector)
+         ("ruby-rouge" ,ruby-rouge)
+         ("ruby-rspec" ,ruby-rspec)))
+      (propagated-inputs
+       `(("ruby-asciidoctor" ,ruby-asciidoctor)
+         ("ruby-concurrent-ruby" ,ruby-concurrent)
+         ("ruby-open-uri-cached" ,ruby-open-uri-cached)
+         ("ruby-prawn" ,ruby-prawn)
+         ("ruby-prawn-icon" ,ruby-prawn-icon)
+         ("ruby-prawn-svg" ,ruby-prawn-svg)
+         ("ruby-prawn-table" ,ruby-prawn-table)
+         ("ruby-prawn-templates" ,ruby-prawn-templates)
+         ("ruby-safe-yaml" ,ruby-safe-yaml)
+         ("ruby-text-hyphen" ,ruby-text-hyphen)
+         ("ruby-thread-safe" ,ruby-thread-safe)
+         ("ruby-treetop" ,ruby-treetop)
+         ("ruby-ttfunk" ,ruby-ttfunk)))
+      (synopsis"AsciiDoc to Portable Document Format (PDF)} converter")
+      (description "Asciidoctor PDF is an extension for Asciidoctor that
+converts AsciiDoc documents to Portable Document Format (PDF) using the Prawn
+PDF library.  It has features such as:
+@itemize
+@item Direct AsciiDoc to PDF conversion
+@item Configuration-driven theme (style and layout)
+@item Scalable Vector Graphics (SVG) support
+@item PDF document outline (i.e., bookmarks)
+@item Table of contents page(s)
+@item Document metadata (title, authors, subject, keywords, etc.)
+@item Internal cross reference links
+@item Syntax highlighting with Rouge, Pygments, or CodeRay
+@item Page numbering
+@item Customizable running content (header and footer)
+@item
+“Keep together” blocks (i.e., page breaks avoided in certain block content)
+@item Orphaned section titles avoided
+@item Autofit verbatim blocks (as permitted by base_font_size_min setting)
+@item Table border settings honored
+@item Font-based icons
+@item Custom TrueType (TTF) fonts
+@item Double-sided printing mode (margins alternate on recto and verso pages)
+@end itemize")
+      (home-page "https://asciidoctor.org/docs/asciidoctor-pdf")
+      (license license:expat))))
 
 (define-public ruby-ast
   (package
     (name "ruby-ast")
-    (version "2.4.0")
+    (version "2.4.1")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "ast" version))
+       (method git-fetch)               ;no test included in gem from v2.4.1
+       (uri (git-reference
+             (url "https://github.com/whitequark/ast")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7"))))
+         "0k8vya256chimy473g818gim06m5rjgh6mz5sc5g8xz3csh3rysi"))))
     (build-system ruby-build-system)
     (arguments
      '(#:phases
@@ -1066,7 +1859,7 @@ It does this through immutable data structures.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/sporkmonger/rack-mount.git")
+                      (url "https://github.com/sporkmonger/rack-mount")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1522,7 +2315,7 @@ support.")
        ;; fetch from github as the gem does not contain testing code
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/rails/execjs.git")
+             (url "https://github.com/rails/execjs")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2055,7 +2848,7 @@ standard output stream.")
        ;; the tests.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/thekompanee/fuubar.git")
+             (url "https://github.com/thekompanee/fuubar")
              (commit (string-append "releases/v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2318,7 +3111,7 @@ Ruby Gems.")
   (synopsis "Ruby module is for reading and writing zip files")
   (description
     "The rubyzip module provides ways to read from and create zip files.")
-  (home-page "http://github.com/rubyzip/rubyzip")
+  (home-page "https://github.com/rubyzip/rubyzip")
   (license license:bsd-2)))
 
 (define-public ruby-simplecov-html
@@ -2650,14 +3443,14 @@ localization.")
 (define-public ruby-temple
   (package
     (name "ruby-temple")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "temple" version))
        (sha256
         (base32
-         "158d7ygbwcifqnvrph219p7m78yjdjazhykv5darbkms7bxm5y09"))))
+         "060zzj7c2kicdfk6cpnn40n9yjnhfrr13d0rsbdhdij68chp2861"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("ruby-tilt" ,ruby-tilt)
@@ -2968,7 +3761,7 @@ specs for Ruby implementations in ruby/spec.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/brianmario/mysql2.git")
+             (url "https://github.com/brianmario/mysql2")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3393,7 +4186,7 @@ with processes on remote servers, via SSH2.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/net-ssh/net-scp.git")
+             (url "https://github.com/net-ssh/net-scp")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3565,7 +4358,7 @@ is to be run.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/adammck/minitest-pretty_diff.git")
+                      (url "https://github.com/adammck/minitest-pretty_diff")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -4075,7 +4868,7 @@ Extensions} type detection using magic numbers, filenames, and extensions")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/halostatue/minitar.git")
+               (url "https://github.com/halostatue/minitar")
                (commit commit)))
          (file-name (string-append name "-" version "-checkout"))
          (sha256
@@ -4174,14 +4967,14 @@ both CSS3 selector and XPath 1.0 support.")
 (define-public ruby-method-source
   (package
     (name "ruby-method-source")
-    (version "0.9.0")
+    (version "1.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "method_source" version))
        (sha256
         (base32
-         "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn"))))
+         "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp"))))
     (build-system ruby-build-system)
     (arguments
      `(#:test-target "spec"))
@@ -4215,10 +5008,36 @@ for select languages.")
     (home-page "http://coderay.rubychan.de")
     (license license:expat)))
 
+(define-public ruby-cuke-modeler
+  (package
+    (name "ruby-cuke-modeler")
+    (version "3.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cuke_modeler" version))
+       (sha256
+        (base32
+         "19smj3g3wvz0203l549sadpcxgh0ir350a6k78gq0bmlv9cchmjb"))))
+    (build-system ruby-build-system)
+    (arguments `(#:tests? #f))          ;no test suite in gem
+    (propagated-inputs
+     `(("ruby-gherkin" ,ruby-gherkin)))
+    (synopsis "Gherkin test suite analysis tool")
+    (description "CukeModeler facilitates modeling a test suite that is
+written in Gherkin (e.g.  Cucumber, SpecFlow, Lettuce, etc.).  It does this by
+providing an abstraction layer on top of the Abstract Syntax Tree (AST) that
+the @code{cucumber-gherkin} generates when parsing features, as well as
+providing models for feature files and directories in order to be able to have
+a fully traversable model tree of a test suite's structure.  These models can
+then be analyzed or manipulated more easily than the underlying AST layer.")
+    (home-page "https://github.com/enkessler/cuke_modeler")
+    (license license:expat)))
+
 (define-public ruby-parallel-tests
   (package
     (name "ruby-parallel-tests")
-    (version "2.32.0")
+    (version "3.0.0")
     (home-page "https://github.com/grosser/parallel_tests")
     (source (origin
               (method git-fetch)
@@ -4228,7 +5047,7 @@ for select languages.")
               (file-name (string-append name version))
               (sha256
                (base32
-                "0l2rjz9fnxv7hvz679v7a75mghsh9x9qpvbyapiavqsx21v42l7m"))))
+                "08a6ndqn2dqacmc7yg48k0dh2rfrynvhkd5hiay16dl9m1r9q8pz"))))
     (build-system ruby-build-system)
     (arguments
      '(#:test-target "default"
@@ -4266,6 +5085,7 @@ for select languages.")
     (native-inputs
      `(("ruby-bump" ,ruby-bump)
        ("ruby-cucumber" ,ruby-cucumber)
+       ("ruby-cuke-modeler" ,ruby-cuke-modeler)
        ("ruby-minitest" ,ruby-minitest)
        ("ruby-rake" ,ruby-rake)
        ("ruby-rspec" ,ruby-rspec)
@@ -4282,14 +5102,14 @@ across multiple CPU cores.")
 (define-public ruby-parser
   (package
     (name "ruby-parser")
-    (version "2.6.0.0")
+    (version "2.7.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "parser" version))
        (sha256
         (base32
-         "1hhz2k5417vr2k1llwqgjdnmyrhlpqicy0y2arr6r1gp04fg9wlm"))))
+         "1030znhvhkfn39svwbj6qn4xb6hgl94gnvg57k4d3r76f9bryqmn"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("bundler" ,bundler)
@@ -4306,6 +5126,54 @@ across multiple CPU cores.")
     (home-page "https://github.com/whitequark/parser")
     (license license:expat)))
 
+(define-public ruby-sexp-processor
+  (package
+    (name "ruby-sexp-processor")
+    (version "4.15.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "sexp_processor" version))
+       (sha256
+        (base32
+         "0d1vks77xnd0m3s94a58f9bkdwlaml5qdkmprx279m2s0pc2gv55"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     ;; TODO: Add ruby-minitest-proveit once available.
+     `(("hoe" ,ruby-hoe)))
+    (synopsis "ParseTree fork which includes generic S-exp processing tools")
+    (description "The sexp_processor package is derived from ParseTree, but
+contrary to ParseTree, it includes all the generic S-exp processing tools.
+Amongst the included tools are @code{Sexp}, @code{SexpProcessor} and
+@code{Environment}")
+    (home-page "https://github.com/seattlerb/sexp_processor")
+    (license license:expat)))
+
+(define-public ruby-ruby-parser
+  (package
+    (name "ruby-ruby-parser")
+    (version "3.14.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby_parser" version))
+       (sha256
+        (base32
+         "09qcdyjjw3p7g6cjm5m9swkms1xnv35ndiy7yw24cas16qrhha6c"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("hoe" ,ruby-hoe)
+       ("racc" ,ruby-racc)
+       ("unifdef" ,unifdef)))
+    (propagated-inputs
+     `(("ruby-sexp-processor" ,ruby-sexp-processor)))
+    (home-page "https://github.com/seattlerb/ruby_parser/")
+    (synopsis "Ruby parser written in pure Ruby")
+    (description "The ruby_parser (RP) package provides a Ruby parser written
+in pure Ruby.  It outputs S-expressions which can be manipulated and converted
+back to Ruby via the @code{ruby2ruby} library.")
+    (license license:expat)))
+
 (define-public ruby-prawn-manual-builder
   (package
     (name "ruby-prawn-manual-builder")
@@ -4333,10 +5201,7 @@ across multiple CPU cores.")
      "This package provides a tool for writing manuals for Prawn and Prawn
 accessories")
     (home-page "https://github.com/prawnpdf/prawn-manual_builder")
-    (license (list
-              ;; GPLv2 or GPLv3 or custom license described in LICENSE file
-              license:gpl2
-              license:gpl3))))
+    (license %prawn-project-licenses)))
 
 (define-public ruby-progress_bar
   (package
@@ -4414,14 +5279,14 @@ The output can be customized with a formatting system.")
 (define-public ruby-pry
   (package
     (name "ruby-pry")
-    (version "0.11.3")
+    (version "0.13.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "pry" version))
        (sha256
         (base32
-         "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g"))))
+         "0iyw4q4an2wmk8v5rn2ghfy2jaz9vmw2nk8415nnpx2s866934qk"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; no tests
@@ -4432,7 +5297,7 @@ The output can be customized with a formatting system.")
     (description "Pry is an IRB alternative and runtime developer console for
 Ruby.  It features syntax highlighting, a plugin architecture, runtime
 invocation, and source and documentation browsing.")
-    (home-page "https://pryrepl.org")
+    (home-page "https://cobaltbluemedia.com/pryrepl/")
     (license license:expat)))
 
 (define-public ruby-single-cov
@@ -4543,7 +5408,7 @@ file or directories are modified.")
   (package
     (name "ruby-spinach")
     (version "0.11.0")
-    (home-page "http://github.com/codegram/spinach")
+    (home-page "https://github.com/codegram/spinach")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "spinach" version))
@@ -4570,14 +5435,17 @@ define executable specifications of your code.")
 (define-public ruby-tilt
   (package
     (name "ruby-tilt")
-    (version "2.0.9")
+    (version "2.0.10")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "tilt" version))
+       (method git-fetch)               ;the distributed gem lacks tests
+       (uri (git-reference
+             (url "https://github.com/rtomayko/tilt")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0ca4k0clwf0rkvy7726x4nxpjxkpv67w043i39saxgldxd97zmwz"))))
+         "0adb7fg7925n2rd9a8kkqz3mgylw2skp9hkh9qc1rnph72mqsm6r"))))
     (build-system ruby-build-system)
     (arguments
      '(#:phases
@@ -4599,13 +5467,15 @@ define executable specifications of your code.")
                ;; the Gemfile instead.
                (("group :secondary") "[].each"))
              #t)))))
+    (propagated-inputs
+     `(("ruby-pandoc-ruby" ,ruby-pandoc-ruby)
+       ("ruby-sassc" ,ruby-sassc)))
     (native-inputs
      `(("bundler" ,bundler)
        ("ruby-yard" ,ruby-yard)
        ("ruby-builder" ,ruby-builder)
        ("ruby-erubis" ,ruby-erubis)
-       ("ruby-markaby" ,ruby-markaby)
-       ("ruby-sassc" ,ruby-sassc)))
+       ("ruby-markaby" ,ruby-markaby)))
     (synopsis "Generic interface to multiple Ruby template engines")
     (description
      "Tilt is a thin interface over a number of different Ruby template
@@ -4751,13 +5621,13 @@ current line in an external editor.")
 (define-public ruby-sdoc
   (package
     (name "ruby-sdoc")
-    (version "0.4.2")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "sdoc" version))
               (sha256
                (base32
-                "0qhvy10vnmrqcgh8494m13kd5ag9c3sczzhfasv8j0294ylk679n"))))
+                "1am73dldx1fqlw2xny5vyk00pgkisg6bvs0pa8jjd7c19drjczrd"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -5158,7 +6028,7 @@ a native C extension.")
        ;; repository.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/guard/listen.git")
+             (url "https://github.com/guard/listen")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5298,7 +6168,7 @@ multibyte strings, internationalization, time zones, and testing.")
               ;; published gem and the tarball on Github is outdated.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rubys/nokogumbo.git")
+                    (url "https://github.com/rubys/nokogumbo")
                     (commit (string-append "v" version))))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
@@ -5490,6 +6360,60 @@ other things and it comes with a command line interface.")
     (home-page "https://github.com/deivid-rodriguez/byebug")
     (license license:bsd-2)))
 
+;;; TODO: Make it the default byebug in core-updates.
+(define-public ruby-byebug-11
+  (package
+    (inherit ruby-byebug)
+    (name "ruby-byebug")
+    (version "11.1.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/deivid-rodriguez/byebug")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0vyy3k2s7dcndngj6m8kxhs1vxc2c93dw8b3yyand3srsg9ffpij"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove wrappers that try to setup a bundle environment.
+           (with-directory-excursion "bin"
+             (for-each delete-file '("bundle" "rake" "rubocop"))
+             ;; ruby-minitest doesn't come with a launcher, so fix the one
+             ;; provided.
+             (substitute* "minitest"
+               (("load File\\.expand_path\\(\"bundle\".*") "")
+               (("require \"bundler/setup\".*") "")))
+           #t))))
+    (arguments
+     `(#:tests? #t
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-tmp-path-sensitive-test
+           (lambda _
+             (substitute* "test/commands/where_test.rb"
+               (("unless /cygwin\\|mswin\\|mingw\\|darwin/.*")
+                "unless true\n"))
+             #t))
+         (add-before 'build 'compile
+           (lambda _
+             (invoke "rake" "compile")))
+         (add-before 'check 'set-home
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-chandler" ,ruby-chandler)
+       ("ruby-minitest" ,ruby-minitest)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-yard" ,ruby-yard)))))
+
 (define-public ruby-netrc
   (package
     (name "ruby-netrc")
@@ -5562,7 +6486,7 @@ including comments and whitespace.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/postmodern/tdiff.git")
+                      (url "https://github.com/postmodern/tdiff")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -5589,7 +6513,7 @@ tree-like structures.  It is similar to Ruby's built-in @code{TSort} module.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/postmodern/nokogiri-diff.git")
+                      (url "https://github.com/postmodern/nokogiri-diff")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -5863,28 +6787,308 @@ inspired by the Sinatra microframework style of specifying actions:
     (home-page "https://github.com/rest-client/rest-client")
     (license license:expat)))
 
+(define-public ruby-rubocop-ast
+  (package
+    (name "ruby-rubocop-ast")
+    (version "0.1.0")
+    (source
+     (origin
+       (method git-fetch)               ;no test suite in distributed gem
+       (uri (git-reference
+             (url "https://github.com/rubocop-hq/rubocop-ast.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0nz25z5b76xkgb9sh370hni3l946j07fr05cdwkdj9x7ibgsb6nj"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'disable-bundler
+                    (lambda _
+                      (substitute* "Rakefile"
+                        (("Bundler\\.setup.*") "nil\n"))
+                      #t))
+                  (replace 'replace-git-ls-files
+                    (lambda _
+                      (substitute* "rubocop-ast.gemspec"
+                        (("`git ls-files(.*)`" _ files)
+                         (format #f "`find ~a -type f| sort`" files)))
+                      #t)))))
+    (native-inputs
+     `(("ruby-bump" ,ruby-bump)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-parser" ,ruby-parser)))
+    (synopsis "RuboCop's AST extensions and NodePattern functionality")
+    (description "Rubocop::AST extends @code{ruby-parser} with classes used
+by RuboCop to deal with Ruby's Abstract Syntax Tree (AST), in particular:
+@itemize
+@item @code{RuboCop::AST::Node}
+@item @code{RuboCop::AST::NodePattern}
+@end itemize")
+    (home-page "https://rubocop.org/")
+    (license license:expat)))
+
+(define-public ruby-rexml
+  (package
+    (name "ruby-rexml")
+    (version "3.2.4")
+    (source
+     (origin
+       (method git-fetch)               ;no tests in distributed gem
+       (uri (git-reference
+             (url "https://github.com/ruby/rexml.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0rhjjbkaq2f2cs8hyr2i4yjqpcyl8m0wmr2cypa401m3fvz4221i"))))
+    (build-system ruby-build-system)
+    (synopsis "XML toolkit for Ruby")
+    (description "Inspired by Electric XML library for Java, REXML aims to be
+easy-to-use API, small and fast.  It supports both tree and stream document
+parsing.")
+    (home-page "https://github.com/ruby/rexml")
+    (license license:bsd-2)))
+
+(define-public ruby-character-set
+  (package
+    (name "ruby-character-set")
+    (version "1.4.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (rubygems-uri "character_set" version))
+        (sha256
+          (base32
+            "0affq9n77vwy897ri2zhmfinfagf37hcwwimrccy1bcxan9mj3h3"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;avoid a cycle with ruby-regexp-parser
+    (synopsis "Ruby library to manipulate Unicode")
+    (description "CharacterSet is a C-extended Ruby library to work with sets
+of Unicode code points.  It can read and write these sets in various formats
+and implements the @code{stdlib} @code{Set} interface for them.  It also
+offers an alternate paradigm of @code{String} processing which grants much
+better performance than @code{Regexp} and @code{String} methods from the
+@code{stdlib} where applicable.  Many parts can be used independently, e.g.:
+@itemize
+@item @code{CharacterSet::Character}
+@item @code{CharacterSet::Parser}
+@item @code{CharacterSet::Writer}
+@item @code{RangeCompressor}
+@end itemize")
+    (home-page "https://github.com/jaynetics/character_set")
+    (license license:expat)))
+
+(define-public ruby-range-compressor
+  (package
+    (name "ruby-range-compressor")
+    (version "1.0.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://github.com/janosch-x/range_compressor.git")
+              (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0y8slri2msyyg2szgwgriqd6qw9hkxycssdrcl5lk2dbcq5zvn54"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'extract-gemspec 'strip-version-requirements
+                    (lambda _
+                      (substitute* "range_compressor.gemspec"
+                        (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
+                         (string-append stripped "\n")))
+                      #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Simple arrays of objects to arrays of ranges compressor")
+    (description "RangeCompresses is a tiny library that allows compressing
+arrays of objects into arrays of ranges.  For example, it can turn the
+following: @code{[1, 2, 3, 4, 6, 8, 9, 10]} into @code{[1..4, 6..6, 8..10]}.")
+    (home-page "https://github.com/janosch-x/range_compressor")
+    (license license:expat)))
+
+(define-public ruby-regexp-property-values
+  (package
+    (name "ruby-regexp-property-values")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference              ;no test suite in distributed gem
+             (url "https://github.com/jaynetics/regexp_property_values.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0l3fjmscg1wxn7kc6bl022cc6k5d91pwb7daq1b5w36kvsx52w1j"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "default"))
+    (native-inputs
+     `(("ruby-character-set" ,ruby-character-set)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-range-compressor" ,ruby-range-compressor)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Inspect Ruby's regex engine property values")
+    (description "This small library lets you see which property values are
+supported by the regular expression engine of the Ruby version you are running
+and can directly read out their code point ranges.  In other words, it
+determines all supported values for @code{\\p{value}} expressions and what
+they match.")
+    (home-page "https://github.com/jaynetics/regexp_property_values")
+    (license license:expat)))
+
+(define-public ruby-regexp-parser
+  (package
+    (name "ruby-regexp-parser")
+    (version "1.7.1")
+    (source
+     (origin
+       (method git-fetch)               ;bin/test missing from gem
+       (uri (git-reference
+             (url "https://github.com/ammar/regexp_parser.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0dk9d4vpw31cc06s29fqyr1kq0kipym1mydifkcrnppvpl3pd53r"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "default"
+       #:phases (modify-phases %standard-phases
+                  (add-before 'build 'compile-scanner.rb
+                    (lambda _
+                      (invoke "rake" "build")
+                      ;; XXX: This is needed otherwise the install
+                      ;; phase fails to delete the installed cached
+                      ;; gem file.
+                      (delete-file-recursively "pkg")
+                      #t)))))
+    (native-inputs
+     `(("ragel" ,ragel)
+       ("ruby-regexp-property-values" ,ruby-regexp-property-values)
+       ("ruby-rspec" ,ruby-rspec)))
+    (synopsis "A regular expression parser library for Ruby ")
+    (description "A Ruby gem for tokenizing, parsing, and transforming regular
+expressions.  It comprises the following components:
+@itemize
+@item A scanner/tokenizer based on Ragel,
+@item A lexer that produces a stream of token objects,
+@item A parser that produces a tree of Expression objects.
+@end itemize")
+    (home-page "https://github.com/ammar/regexp_parser")
+    (license license:expat)))
+
+(define-public ruby-test-queue
+  (package
+    (name "ruby-test-queue")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "test-queue" version))
+       (sha256
+        (base32
+         "0hvm3n1qrqxqilhqk4rjivw3gcrd08zz1i6am9qzg1ppjxv6f36f"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "rspec"))
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (synopsis "Minitest/RSpec parallel test runner for CI environments")
+    (description "The test-queue module is a parallel test runner,
+built using a centralized queue to ensure optimal distribution of
+tests between workers.  It is specifically optimized for Continuous
+Integration (CI) environments: build statistics from each run are
+stored locally and used to sort the queue at the beginning of the next
+run.")
+    (home-page "https://github.com/tmm1/test-queue")
+    (license license:expat)))
+
 (define-public ruby-rubocop
   (package
     (name "ruby-rubocop")
-    (version "0.77.0")
+    (version "0.88.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "rubocop" version))
+       (method git-fetch)               ;no tests in distributed gem
+       (uri (git-reference
+             (url "https://github.com/rubocop-hq/rubocop.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0m88b1bgbhmmbdnz2xv6n0il0j4q5qm9jbc0vf1zsaxmxqp06nx9"))))
+         "1d06893jp8pd85fvgp5d16vqcf31bafi430v4f4y746ihyvhzz5r"))
+       (patches (search-patches "ruby-rubocop-break-dependency-cycle.patch"))))
     (build-system ruby-build-system)
     (arguments
-     '(;; No included tests
-       #:tests? #f))
+     '(#:test-target "default"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-problematic-tests
+           ;; These tests depend on Rubocop extensions, which cannot be
+           ;; included as they cause a dependency cycle with Rubocop itself.
+           (lambda _
+             (delete-file "spec/rubocop/config_loader_spec.rb")
+             (substitute* "Gemfile"
+               ((".*'rubocop-performance'.*") "")
+               ((".*'rubocop-rspec'.*") ""))
+             ;; Prevent "Unnecessary disabling of RSpec/* (unknown cop)"
+             ;; errors.
+             (substitute* (find-files "spec/rubocop/cop/" "_spec\\.rb$")
+               (("# (rubocop:(enable|disable) RSpec.*)" _ what)
+                (string-append "# Disabled: " what)))
+             #t))
+         (add-after 'unpack 'disable-bundler
+           (lambda _
+             (substitute* "Rakefile"
+               (("Bundler\\.setup.*") "nil\n"))
+             #t))
+         (replace 'replace-git-ls-files
+           (lambda _
+             (substitute* "rubocop.gemspec"
+               (("`git ls-files(.*)`" _ files)
+                (format #f "`find ~a -type f| sort`" files)))
+             #t))
+         (add-before 'check 'set-home
+           (lambda _
+             (setenv "HOME" (getcwd))
+             #t))
+         (add-before 'check 'make-adoc-files-writable
+           (lambda _
+             (let ((adoc-files (find-files "docs/modules/ROOT/pages"
+                                           "\\.adoc$")))
+               (for-each make-file-writable adoc-files))
+             #t)))))
+    (native-inputs
+     `(("ruby-bump" ,ruby-bump)
+       ("ruby-pry" ,ruby-pry)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-test-queue" ,ruby-test-queue)
+       ("ruby-webmock" ,ruby-webmock-2)
+       ("ruby-yard" ,ruby-yard)))
     (propagated-inputs
-     `(("ruby-parser" ,ruby-parser)
-       ("ruby-powerpack" ,ruby-powerpack)
+     `(("ruby-parallel" ,ruby-parallel)
+       ("ruby-parser" ,ruby-parser)
        ("ruby-rainbow" ,ruby-rainbow)
+       ("ruby-regexp-parser" ,ruby-regexp-parser)
+       ("ruby-rexml" ,ruby-rexml)
+       ("ruby-rubocop-ast" ,ruby-rubocop-ast)
        ("ruby-progressbar" ,ruby-progressbar)
-       ("ruby-parallel" ,ruby-parallel)
-       ("ruby-jaro-winkler" ,ruby-jaro-winkler)
        ("ruby-unicode-display-width" ,ruby-unicode-display-width)))
     (synopsis "Ruby code style checking tool")
     (description
@@ -5954,34 +7158,409 @@ Ruby classes.")
     (home-page "https://ms-ati.github.io/docile/")
     (license license:expat)))
 
+(define-public ruby-middleware
+  (package
+    (name "ruby-middleware")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "middleware" version))
+       (sha256
+        (base32
+         "0703nkf2v371wqr41c04x5qid7ww45cxqv3hnlg07if3b3xrm9xl"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;no test suite
+    (synopsis "Implementation of a middleware abstraction for Ruby")
+    (description "Middleware is a generalized implementation of a middleware
+abstraction for Ruby.")
+    (home-page "https://github.com/mitchellh/middleware")
+    (license license:expat)))
+
+(define-public ruby-benchmark-ips
+  (package
+    (name "ruby-benchmark-ips")
+    (version "2.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "benchmark-ips" version))
+       (sha256
+        (base32
+         "1n9397j7kh4vvikfann1467qgksc679imlr50hax3lk1q3af8kdw"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("ruby-hoe" ,ruby-hoe)))
+    (synopsis "Iterations per second enhancement for the Ruby Benchmark module")
+    (description "Benchmark-ips enhances the Ruby Benchmark module with the
+iterations per second count.  For short snippets of code, it can automatically
+figure out how many times to run the code to get interesting data.")
+    (home-page "https://github.com/evanphx/benchmark-ips")
+    (license license:expat)))
+
+(define-public ruby-ffi-rzmq-core
+  (package
+    (name "ruby-ffi-rzmq-core")
+    (version "1.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ffi-rzmq-core" version))
+       (sha256
+        (base32
+         "0amkbvljpjfnv0jpdmz71p1i3mqbhyrnhamjn566w0c01xd64hb5"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-libzmq-search-path
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (let ((zeromq (assoc-ref inputs "zeromq")))
+                        (substitute* "lib/ffi-rzmq-core/libzmq.rb"
+                          (("/usr/local/lib")
+                           (string-append zeromq "/lib")))
+                        #t)))
+                  (replace 'check
+                    (lambda _
+                      (invoke "rspec"))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (inputs
+     `(("zeromq" ,zeromq)))
+    (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
+    (synopsis "Low-level Ruby FFI wrapper for the ZeroMQ networking library")
+    (description "This library only provides the FFI wrapper for the ZeroMQ
+networking library.  It can be used to implement a Ruby API for the ZeroMQ
+library.")
+    (home-page "https://github.com/chuckremes/ffi-rzmq-core")
+    (license license:expat)))
+
+(define-public ruby-ffi-rzmq
+  (package
+    (name "ruby-ffi-rzmq")
+    (version "2.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ffi-rzmq" version))
+       (sha256
+        (base32
+         "14a5kxfnf8l3ngyk8hgmk30z07aj1324ll8i48z67ps6pz2kpsrg"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #t
+                 #:phases (modify-phases %standard-phases
+                            (replace 'check
+                              (lambda _
+                                (invoke "rspec"))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-ffi-rzmq-core" ,ruby-ffi-rzmq-core)))
+    (synopsis "High-level Ruby wrapper for the ZeroMQ networking library")
+    (description "This library provides a high-level API that wraps the ZeroMQ
+networking library using the Ruby foreign function interface (FFI).  It is a
+pure Ruby wrapper, hence is compatible with any Ruby runtime that has support
+for FFI.")
+    (home-page "https://github.com/chuckremes/ffi-rzmq")
+    (license license:expat)))
+
+(define-public ruby-sawyer
+  (package
+    (name "ruby-sawyer")
+    (version "0.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "sawyer" version))
+       (sha256
+        (base32
+         "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz"))))
+    (build-system ruby-build-system)
+    (propagated-inputs
+     `(("ruby-addressable" ,ruby-addressable)
+       ("ruby-faraday" ,ruby-faraday)))
+    (synopsis "Experimental hypermedia agent for Ruby")
+    (description "Sawyer is an experimental hypermedia agent for Ruby built on
+top of Faraday.")
+    (home-page "https://github.com/lostisland/sawyer")
+    (license license:expat)))
+
+(define-public ruby-octokit
+  (package
+    (name "ruby-octokit")
+    (version "4.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "octokit" version))
+       (sha256
+        (base32
+         "0zvfr9njmj5svi39fcsi2b0g7pcxb0vamw9dlyas8bg814jlzhi6"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;no test suite in the gem release
+    (propagated-inputs
+     `(("ruby-faraday" ,ruby-faraday)
+       ("ruby-sawyer" ,ruby-sawyer)))
+    (synopsis "Ruby toolkit for the GitHub API")
+    (description "Octokit wraps the GitHub API in a flat API client that
+follows Ruby conventions and requires little knowledge of REST.")
+    (home-page "https://github.com/octokit/octokit.rb")
+    (license license:expat)))
+
+(define-public ruby-chandler
+  (package
+    (name "ruby-chandler")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "chandler" version))
+       (sha256
+        (base32
+         "1n8a4mr2jkcz5vaaps45g2rxa2pzy1wb7cylgw85xmmyyp14lnrr"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("ruby-rubocop" ,ruby-rubocop)))
+    (propagated-inputs
+     `(("ruby-netrc" ,ruby-netrc)
+       ("ruby-octokit" ,ruby-octokit)))
+    (synopsis "Sync CHANGELOG entries to GitHub's release notes")
+    (description "Chandler syncs a project's CHANGELOG file entries to
+GitHub's release notes to remove the need of manually entering release
+notes.")
+    (home-page "https://github.com/mattbrictson/chandler")
+    (license license:expat)))
+
+(define-public ruby-pry-byebug
+  (package
+    (name "ruby-pry-byebug")
+    (version "3.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/deivid-rodriguez/pry-byebug")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1kchrwccai92068p50zyd6mh524ywqnm0jw5g3lks7iwmf0xkmgc"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before 'check 'set-home
+                    (lambda _
+                      (setenv "HOME" (getcwd))
+                      #t)))))
+    (native-inputs
+     `(("ruby-chandler" ,ruby-chandler)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (propagated-inputs
+     `(("ruby-byebug" ,ruby-byebug-11)
+       ("ruby-pry" ,ruby-pry)))
+    (synopsis "Step-by-step debugging and stack navigation in Pry")
+    (description "This package adds step-by-step debugging and stack
+navigation capabilities to @code{pry}, using @code{byebug}.")
+    (home-page "https://github.com/deivid-rodriguez/pry-byebug")
+    (license license:expat)))
+
+(define-public ruby-binding-of-caller
+  (package
+    (name "ruby-binding-of-caller")
+    (version "0.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "binding_of_caller" version))
+       (sha256
+        (base32
+         "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g"))))
+    (build-system ruby-build-system)
+    ;; Attempting to run the test suite fails with a rake deprecation error
+    ;; (see: https://github.com/banister/binding_of_caller/issues/76).
+    (arguments '(#:tests? #f))
+    (propagated-inputs
+     `(("ruby-debug-inspector" ,ruby-debug-inspector)))
+    (synopsis "Retrieve the binding of a method's caller")
+    (description "The @code{binding_of_caller} module provides the
+@code{Binding#of_caller} method.  It allows accessing bindings from upper
+frames in the call stack and can evaluate code in that context.")
+    (home-page "https://github.com/banister/binding_of_caller")
+    (license license:expat)))
+
+(define-public ruby-pry-stack-explorer
+  (package
+    (name "ruby-pry-stack-explorer")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "pry-stack_explorer" version))
+       (sha256
+        (base32
+         "157rd2n9pfvcmmicm0xkq8z4p6famaj13syrpra6b4032qpb1wn0"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;no test suite in gem release
+    (propagated-inputs
+     `(("ruby-binding-of-caller" ,ruby-binding-of-caller)
+       ("ruby-pry" ,ruby-pry)))
+    (synopsis "Call-stack navigation plugin for the Pry REPL")
+    (description "@code{pry-stack_explorer} is a plugin for the Pry REPL that
+add support to navigate the call-stack.")
+    (home-page "https://github.com/pry/pry-stack_explorer")
+    (license license:expat)))
+
+(define-public ruby-varint
+  (package
+    (name "ruby-varint")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "varint" version))
+       (sha256
+        (base32
+         "1y0l2qc64cwsyv76ygg9bbjnk86riz2kq73kmn87gdrlmpiyrdac"))))
+    (build-system ruby-build-system)
+    (arguments '(#:tests? #f))          ;no test suite
+    (synopsis "Variable length integers (varint) C extension for Ruby")
+    (description "This package provides a small C extension to speed up
+variable length integers (varint) in Ruby Protocol Buffers.")
+    (home-page "https://github.com/liquidm/varint")
+    (license license:bsd-3)))
+
+(define-public ruby-ruby-prof
+  (package
+    (name "ruby-ruby-prof")
+    (version "1.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby-prof" version))
+       (sha256
+        (base32
+         "12cd91m08ih0imfpy4k87618hd4mhyz291a6bx2hcskza4nf6d27"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-rakefile
+           ;; This fixes the following error: "NameError: uninitialized
+           ;; constant Bundler::GemHelper" (see:
+           ;; https://github.com/ruby-prof/ruby-prof/issues/274).
+           (lambda _
+             (substitute* "Rakefile"
+               ((".*require \"bundler/setup\".*" all)
+                (string-append all "  require 'bundler/gem_tasks'\n")))
+             #t))
+         ;; The LineNumbersTest test fails non-deterministically (see:
+         ;; https://github.com/ruby-prof/ruby-prof/issues/276).
+         (add-after 'extract-gemspec 'delete-flaky-test
+           (lambda _
+             (delete-file "test/line_number_test.rb")
+             (substitute* "ruby-prof.gemspec"
+               (("\"test/line_number_test\\.rb\"\\.freeze, ") ""))
+             #t))
+         (add-before 'check 'compile
+          (lambda _
+            (invoke "rake" "compile"))))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-minitest" ,ruby-minitest)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)
+       ("ruby-rdoc" ,ruby-rdoc)))
+    (synopsis "Fast code profiler for Ruby")
+    (description "RubyProf is a fast code profiler for Ruby.  Its features
+include:
+@table @asis
+@item Speed
+Being a C extension, it is many times faster than the standard Ruby profiler.
+@item Measurement Modes
+It can measure program wall time, process time, object allocations and memory
+usage.
+@item Reports
+A variety of text and cross-referenced HTML reports can be generated.
+@item Threads
+Profiling multiple threads simultaneously is supported.
+@end table")
+    (home-page "https://github.com/ruby-prof/ruby-prof")
+    (license license:bsd-2)))
+
+(define-public ruby-cucumber-messages
+  (package
+    (name "ruby-cucumber-messages")
+    (version "12.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cucumber/messages-ruby")
+                    (commit "12cd07eac87bce7843fd1bb0bf64bc4da09f097c")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "16wwqfpsq7crvxc3q08lphgyh12cl2d83p1c79p312q4jmy9cn5a"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-protobuf.rb
+                    (lambda _
+                      (substitute* "rake/protobuf.rb"
+                        (("load 'protobuf/tasks/compile.rake'")
+                         "require 'protobuf/tasks'"))
+                      #t))
+                  (add-before 'build 'compile
+                    (lambda _
+                      (substitute* "Makefile"
+                        (("bundle exec ") "")
+                        (("include default.mk.*" all)
+                         (string-append "#" all)))
+                      (invoke "make")))
+                  (replace 'check
+                    (lambda _
+                      (invoke "rspec"))))))
+    (propagated-inputs
+     `(("ruby-protobuf" ,ruby-protobuf-cucumber)))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (home-page "https://github.com/cucumber/messages-ruby")
+    (synopsis "Cucumber Messages for Ruby (Protocol Buffers)")
+    (description "Cucumber Messages for Ruby is a library which allows
+serialization and deserialization of the protocol buffer messages used in
+Cucumber.")
+    (license license:expat)))
+
 (define-public ruby-gherkin
   (package
     (name "ruby-gherkin")
-    (version "5.1.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "gherkin" version))
-        (sha256
-          (base32
-            "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s"))))
+    (version "14.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/cucumber/gherkin-ruby")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1dwa8632nc6kijv8p257jl64rsjmc0fimlaqvxlkdi2h9n1nympb"))))
     (build-system ruby-build-system)
     (native-inputs
-     `(("bundler" ,bundler)))
+     `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
+       ("ruby-rspec" ,ruby-rspec)))
     (arguments
-     '(#:tests? #f)) ; needs simplecov, among others
+     `(#:test-target "spec"))
     (synopsis "Gherkin parser for Ruby")
     (description "Gherkin is a parser and compiler for the Gherkin language.
 It is intended be used by all Cucumber implementations to parse
 @file{.feature} files.")
-    (home-page "https://github.com/cucumber-attic/gherkin")
+    (home-page "https://github.com/cucumber/gherkin-ruby")
     (license license:expat)))
 
 (define-public ruby-gherkin-ruby
   (package
     (name "ruby-gherkin-ruby")
     (version "0.3.2")
-    (home-page "http://github.com/codegram/gherkin-ruby")
+    (home-page "https://github.com/codegram/gherkin-ruby")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "gherkin-ruby" version))
@@ -6078,54 +7657,152 @@ language.")
                        (package-propagated-inputs ruby-aruba))))
     (native-inputs '())))
 
+(define-public ruby-sys-uname
+  (package
+  (name "ruby-sys-uname")
+  (version "1.2.1")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "sys-uname" version))
+      (sha256
+        (base32
+          "00p3wwvkdbg6pl38bchaagncv3i4fq4y0ks470imwykjanpy2ic0"))))
+  (build-system ruby-build-system)
+  (arguments
+   `(#:test-target "spec"))
+  (propagated-inputs `(("ruby-ffi" ,ruby-ffi)))
+  (native-inputs `(("ruby-rspec" ,ruby-rspec)))
+  (synopsis "Ruby interface for gathering system information")
+  (description "The sys-uname library provides an interface for gathering
+information about your current platform.  It allows retrieving information
+such as the OS name, OS version, system name, etc.")
+  (home-page "https://github.com/djberg96/sys-uname")
+  (license license:asl2.0)))
+
+(define-public ruby-cucumber-create-meta
+  (package
+    (name "ruby-cucumber-create-meta")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cucumber-create-meta" version))
+       (sha256
+        (base32
+         "0i0i3arymjrnjk72mg79w1a11607x4d0lrqafm9sz2gq9l52zasw"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'extract-gemspec 'relax-version-requirements
+                    (lambda _
+                      (substitute* ".gemspec"
+                        ((" 12\\.2")
+                         " 12.1"))
+                      #t))
+                  (replace 'check
+                    (lambda _
+                      (invoke "rspec"))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
+       ("ruby-sys-uname" ,ruby-sys-uname)))
+    (synopsis "Function to create @code{Meta} messages for Cucumber Ruby")
+    (description "The @code{createMeta} utility function allows generating
+system-specific @code{Meta} messages for Cucumber Ruby.")
+    (home-page "https://github.com/cucumber/cucumber/tree/master/create-meta/ruby")
+    (license license:expat)))
+
+(define-public ruby-cucumber-html-formatter
+  (package
+    (name "ruby-cucumber-html-formatter")
+    (version "7.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "cucumber-html-formatter" version))
+       (sha256
+        (base32
+         "0lshj4sw9jw7687wrhknyb9kffblai3l843zgrznyqij3ga0bc62"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "rspec"))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-cucumber-messages" ,ruby-cucumber-messages)))
+    (synopsis "HTML formatter for Cucumber")
+    (description "Cucumber HTML Formatter produces a HTML report for Cucumber
+runs.  It is built on top of cucumber-react and works with any Cucumber
+implementation with a protocol buffer formatter that outputs Cucumber
+messages.")
+    (home-page "https://github.com/cucumber/cucumber/tree/\
+master/html-formatter/ruby")
+    (license license:expat)))
+
 (define-public ruby-cucumber
   (package
     (name "ruby-cucumber")
-    (version "3.1.2")
+    (version "4.1.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cucumber/cucumber-ruby.git")
+             (url "https://github.com/cucumber/cucumber-ruby")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0764wp2cjg60qa3l69q1dxda5g06a01n5w92szqbf89d2hgl47n3"))))
+         "0g9rqfslbzkkrq2kvl14fgknrhfbji3bjjpjxff5nc9wzd3hd549"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:test-target "spec"
+     '(#:test-target "default"
        #:phases
        (modify-phases %standard-phases
-         ;; Don't run or require rubocop, the code linting tool, as this is a
-         ;; bit unnecessary.
-         (add-after 'unpack 'dont-run-rubocop
+         (add-after 'unpack 'disable-rubocop
+           ;; Rubocop lint check fails with our more recent version.
            (lambda _
              (substitute* "Rakefile"
-               ((".*rubocop/rake\\_task.*") "")
-               ((".*RuboCop.*") ""))
+               (("spec cucumber rubocop")
+                "spec cucumber"))
+             #t))
+         (add-after 'extract-gemspec 'strip-version-requirements
+           (lambda _
+             (delete-file "Gemfile")    ;do not use Bundler
+             (substitute* "cucumber.gemspec"
+               (("(.*add_.*dependency '[_A-Za-z0-9-]+').*" _ stripped)
+                (string-append stripped "\n")))
+             #t))
+         (add-before 'check 'set-home
+           (lambda _
+             (setenv "HOME" (getcwd))
              #t)))))
     (propagated-inputs
      `(("ruby-builder" ,ruby-builder)
        ("ruby-cucumber-core" ,ruby-cucumber-core)
+       ("ruby-cucumber-create-meta" ,ruby-cucumber-create-meta)
+       ("ruby-cucumber-html-formatter" ,ruby-cucumber-html-formatter)
+       ("ruby-cucumber-messages" ,ruby-cucumber-messages)
        ("ruby-cucumber-wire" ,ruby-cucumber-wire)
-       ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
        ("ruby-diff-lcs" ,ruby-diff-lcs)
        ("ruby-gherkin" ,ruby-gherkin)
        ("ruby-multi-json" ,ruby-multi-json)
        ("ruby-multi-test" ,ruby-multi-test)))
     (native-inputs
-     `(("bundler" ,bundler)
-       ;; Use a untested version of aruba, to avoid a circular dependency, as
+     `(;; Use a untested version of aruba, to avoid a circular dependency, as
        ;; ruby-aruba depends on ruby-cucumber.
        ("ruby-aruba", ruby-aruba-without-tests)
        ("ruby-rspec" ,ruby-rspec)
        ("ruby-pry" ,ruby-pry)
-       ("ruby-nokogiri" ,ruby-nokogiri)))
+       ("ruby-nokogiri" ,ruby-nokogiri)
+       ("ruby-rubocop" ,ruby-rubocop)))
     (synopsis "Describe automated tests in plain language")
-    (description
-     "Cucumber is a tool for running automated tests written in plain
-language.  It's designed to support a Behaviour Driven Development (BDD)
+    (description "Cucumber is a tool for running automated tests written in
+plain language.  It's designed to support a Behaviour Driven Development (BDD)
 software development workflow.")
     (home-page "https://cucumber.io/")
     (license license:expat)))
@@ -6137,27 +7814,98 @@ software development workflow.")
     (native-inputs
      '())))
 
+(define-public ruby-coveralls
+  (package
+    (name "ruby-coveralls")
+    (version "0.8.23")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "coveralls" version))
+       (sha256
+        (base32
+         "1mv4fn5lfxhy7bc2f1lpnc5yp9mvv97az77j4r7jgrxcqwn8fqxc"))))
+    (build-system ruby-build-system)
+    ;; The test suite depends on ruby-vcr, which cannot be included in Guix
+    ;; because of its nonfree, Hippocratic-derived license.
+    (arguments
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (add-after 'extract-gemspec 'strip-version-requirements
+                    ;; Keeping strict version requirements can cause problems
+                    ;; to users of the library, such as: Gem::ConflictError:
+                    ;; Unable to activate coveralls-0.8.23, because
+                    ;; simplecov-0.17.1 conflicts with simplecov (~> 0.16.1).
+                    (lambda _
+                      (substitute* "coveralls-ruby.gemspec"
+                        (("(.*add_.*dependency\\([^,]+), .*" _ stripped)
+                         (string-append stripped ")\n")))
+                      #t)))))
+    (propagated-inputs
+     `(("ruby-json" ,ruby-json)
+       ("ruby-term-ansicolor" ,ruby-term-ansicolor)
+       ("ruby-thor" ,ruby-thor)
+       ("ruby-tins" ,ruby-tins)))
+    (synopsis "Ruby implementation of the Coveralls API")
+    (description "This package provides a Ruby implementation of the Coveralls
+API.")
+    (home-page "https://coveralls.io")
+    (license license:expat)))
+
+(define-public ruby-unindent
+  (package
+  (name "ruby-unindent")
+  (version "1.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "unindent" version))
+      (sha256
+        (base32
+          "1wqh3rzv8589yzibigminxx3qpmj2nqj28f90xy1sczk1pijmcrd"))))
+  (build-system ruby-build-system)
+  (synopsis "Ruby method to unindent strings")
+  (description "This module provides a @code{String#unindent} Ruby method to
+unindent strings, which can be useful to unindent multiline strings embedded
+in already-indented code.")
+  (home-page "https://github.com/mynyml/unindent")
+  (license license:expat)))
+
 (define-public ruby-cucumber-core
   (package
     (name "ruby-cucumber-core")
-    ;; Stick to major version 3, until version 4 of Cucumber is released.
-    (version "3.2.1")
+    (version "7.1.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "cucumber-core" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cucumber/cucumber-ruby-core")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c"))))
+         "1p5wb6wbggbw37ariyag4kxpiczznvgm3c8cnz1744dmbj79q1rn"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'extract-gemspec 'relax-version-requirements
+           (lambda _
+             (substitute* "cucumber-core.gemspec"
+               (("'cucumber-tag-expressions',.*")
+                 "'cucumber-tag-expressions', '>=2.0.0'\n"))
+             #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-coveralls" ,ruby-coveralls)
+       ("ruby-rubocop" ,ruby-rubocop)
+       ("ruby-simplecov" ,ruby-simplecov)
+       ("ruby-unindent" ,ruby-unindent)))
     (propagated-inputs
-     `(("ruby-backports" ,ruby-backports)
+     `(("ruby-cucumber-messages" ,ruby-cucumber-messages)
        ("ruby-gherkin" ,ruby-gherkin)
        ("ruby-cucumber-tag-expressions" ,ruby-cucumber-tag-expressions)))
-    (native-inputs
-     `(("bundler" ,bundler)))
-    (arguments
-     '(#:tests? #f)) ; needs simplecov, among others
     (synopsis "Core library for the Cucumber BDD app")
     (description "Cucumber is a tool for running automated tests
 written in plain language.  Because they're written in plain language,
@@ -6170,20 +7918,22 @@ and trust on your team.")
 (define-public ruby-cucumber-expressions
   (package
     (name "ruby-cucumber-expressions")
-    (version "6.0.1")
+    (version "10.2.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "cucumber-expressions" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cucumber/cucumber-expressions-ruby")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw"))))
+         "1aivhcpjrmbvp9bg0y7g6zxh2swfvylvg0sapq5jc4i1y74k8npd"))))
     (build-system ruby-build-system)
     (arguments
      '(#:test-target "spec"))
     (native-inputs
-     `(("bundler" ,bundler)
-       ("ruby-rspec" ,ruby-rspec)
+     `(("ruby-rspec" ,ruby-rspec)
        ("ruby-simplecov" ,ruby-simplecov)))
     (synopsis "Simpler alternative to Regular Expressions")
     (description "Cucumber Expressions offer similar functionality to Regular
@@ -6195,63 +7945,56 @@ Expressions are extensible with parameter types.")
 (define-public ruby-cucumber-wire
   (package
     (name "ruby-cucumber-wire")
-    ;; Package version 0.0.1 initially, as this is what's needed by Cucumber
-    ;; 3, and Cucumber 4 hasn't been released yet.
-    (version "0.0.1")
+    (version "3.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "cucumber-wire" version))
        (sha256
         (base32
-         "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f"))))
+         "0z1n13lqv70zb2lcrvs2263lm0gsb3gz8gbv890kxzwp8cvd433k"))))
     (build-system ruby-build-system)
     (arguments
-     '(;; TODO: Currently, the tests can't be run as cucumber is required,
-       ;; which would lead to a circular dependency.
-       #:tests? #f
-       #:test-target "default"
+     '(#:tests? #f                      ;tests use cucumber, causing a cycle
        #:phases
        (modify-phases %standard-phases
-         (add-before 'check 'set-CUCUMBER_USE_RELEASED_GEMS
+         (add-after 'extract-gemspec 'relax-version-requirements
            (lambda _
-             (setenv "CUCUMBER_USE_RELEASED_GEMS" "true")
+             (substitute* ".gemspec"
+               ((" 10\\.1") " 10.2"))
              #t)))))
-    (native-inputs
-     `(("bundler" ,bundler)
-       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-cucumber-core" ,ruby-cucumber-core)
+       ("ruby-cucumber-expressions" ,ruby-cucumber-expressions)
+       ("ruby-cucumber-messages" ,ruby-cucumber-messages)))
     (synopsis "Cucumber wire protocol plugin")
-    (description
-     "Cucumber's wire protocol allows step definitions to be implemented and
-invoked on any platform.")
+    (description "Cucumber's wire protocol allows step definitions to be
+implemented and invoked on any platform.")
     (home-page "https://github.com/cucumber/cucumber-ruby-wire")
     (license license:expat)))
 
 (define-public ruby-cucumber-tag-expressions
   (package
     (name "ruby-cucumber-tag-expressions")
-    (version "1.1.1")
+    (version "3.0.0")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "cucumber-tag_expressions" version))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/cucumber/tag-expressions-ruby")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc"))))
+         "15dw4w0npd4m6aw7zhqkjxxzngp42kswrkwfygxkxcxnhy5zl1vx"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda _
-             (invoke "rspec")
-             #t)))))
+     `(#:test-target "spec"))
     (native-inputs
      `(("ruby-rspec" ,ruby-rspec)))
     (synopsis "Cucumber tag expressions for Ruby")
-    (description
-     "Cucumber tag expression parser for Ruby.  A tag expression is an infix
-boolean expression used by Cucumber.")
+    (description "Cucumber tag expression parser for Ruby.  A tag expression
+is an infix boolean expression used by Cucumber.")
     (home-page "https://github.com/cucumber/tag-expressions-ruby")
     (license license:expat)))
 
@@ -6341,42 +8084,161 @@ A modified copy of yajl is used, and included in the package.")
 (define-public ruby-yard
   (package
     (name "ruby-yard")
-    (version "0.9.20")
+    (version "0.9.25")
     (source
      (origin
        (method git-fetch)
        ;; Tests do not pass if we build from the distributed gem.
        (uri (git-reference
-              (url "https://github.com/lsegal/yard")
-              (commit (string-append "v" version))))
+             (url "https://github.com/lsegal/yard")
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1v48zz8hzazrg79jksj9siys21d2axvzijvkxw2j42zh86syi1wi"))))
+         "1x7y4s557hrnq439lih7nqg1y7ximardw75jx9i92x3yzpviqqwa"))))
+    (build-system ruby-build-system)
+    (arguments
+     ;; Note: Tests are willfully disabled to alleviate dependency cycle
+     ;; problems.
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'do-not-set-date-in-gemspec
+                    ;; Fix a reproducibility issue (see:
+                    ;; https://github.com/lsegal/yard/issues/1343).
+                    (lambda _
+                      (substitute* "yard.gemspec"
+                        ((".*s\\.date.*") ""))
+                      #t)))))
+    (synopsis "Documentation generation tool for Ruby")
+    (description "YARD is a documentation generation tool for the Ruby
+programming language.  It enables the user to generate consistent, usable
+documentation that can be exported to a number of formats very easily, and
+also supports extending for custom Ruby constructs such as custom class level
+definitions.")
+    (home-page "https://yardoc.org")
+    (license license:expat)))
+
+(define-public ruby-yard-with-tests
+  (package
+    (inherit ruby-yard)
+    (name "ruby-yard-with-tests")
+    (arguments
+     (substitute-keyword-arguments (package-arguments ruby-yard)
+       ((#:tests? _ #t) #t)
+       ((#:test-target _ "default") "default")
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
+           (add-before 'check 'prepare-for-tests
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 (substitute* "Rakefile"
+                   ((".*[Ss]amus.*") ""))
+                 ;; Delete the Gemfile to avoid errors relating to it.
+                 (delete-file "Gemfile")
+                 ;; $HOME needs to be set to somewhere writeable for tests to
+                 ;; run.
+                 (setenv "HOME" "/tmp"))
+               #t))))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec)
+       ("ruby-rack" ,ruby-rack)
+       ("ruby-redcloth" ,ruby-redcloth)
+       ("ruby-asciidoc" ,ruby-asciidoctor)))))
+
+(define-public ruby-spectroscope
+  (package
+    (name "ruby-spectroscope")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "spectroscope" version))
+       (sha256
+        (base32
+         "0iiid9sm110qhx0i1zkds710cvsnmhd308wbqa7slkzbq2akrb3y"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
            (lambda _
-             ;; Delete the Gemfile to avoid errors relating to it
-             (delete-file "Gemfile")
-             ;; $HOME needs to be set to somewhere writeable for tests to run
-             (setenv "HOME" "/tmp")
-             ;; Run tests without using 'rake' to avoid dependencies.
-             (invoke "rspec"))))))
+             (with-output-to-file ".test"
+               (lambda _
+                 (display
+                  "\
+require 'ae/should'
+require 'rspec'
+
+include RSpec
+
+Test.run :default do |run|
+  run.files << 'spec/*_spec.rb'
+end")))
+             (invoke "ruby" "-Ilib" "-rrubytest" ".test"))))))
     (native-inputs
-     `(("ruby-rspec" ,ruby-rspec)
-       ("ruby-rack" ,ruby-rack)
-       ("ruby-redcloth" ,ruby-redcloth)
-       ("ruby-asciidoc" ,ruby-asciidoctor)))
-    (synopsis "Documentation generation tool for Ruby")
-    (description
-     "YARD is a documentation generation tool for the Ruby programming
-language.  It enables the user to generate consistent, usable documentation
-that can be exported to a number of formats very easily, and also supports
-extending for custom Ruby constructs such as custom class level definitions.")
-    (home-page "https://yardoc.org")
+     `(("ruby-ae" ,ruby-ae)
+       ("ruby-rspec" ,ruby-rspec)))
+    (propagated-inputs
+     `(("ruby-rubytest" ,ruby-rubytest)))
+    (synopsis "Behavior-Driven Development (BDD) framework built on RubyTest")
+    (description "Spectroscope is a Behavior-Driven Development (BDD)
+framework built on RubyTest, designed to emulate RSpec in most respects.  It
+is assertion framework independent so any number of assertion systems can be
+used, such as Assay or AE.")
+    (home-page "http://rubyworks.github.com/spectroscope/")
+    (license license:bsd-2)))
+
+(define-public ruby-tomparse
+  (package
+    (name "ruby-tomparse")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "tomparse" version))
+       (sha256
+        (base32
+         "06xakk41f1kgj6j1ahkwn4r6cvidixvm4phhlrvmwb7c3pr8ygc8"))))
+    (build-system ruby-build-system)
+    ;; TODO: Tests require citron and rulebow, not yet packaged.
+    (arguments '(#:tests? #f))
+    (synopsis "TomDoc parser for Ruby")
+    (description "TomParse is a TomDoc parser for Ruby.  It takes a code
+comment as input and parses it into a convenient object-oriented structure in
+accordance with the TomDoc standard.  See
+@url{https://github.com/mojombo/tomdoc, TomDoc} for more information about the
+TomDoc format.")
+    (home-page "http://rubyworks.github.com/tomparse/")
+    (license license:bsd-2)))
+
+(define-public ruby-yard-tomdoc
+  (package
+    (name "ruby-yard-tomdoc")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "yard-tomdoc" version))
+       (sha256
+        (base32
+         "1725gs8b8klpwhrvnf2wwp7dw3zxs9vz2la983l2d8c4r4fn1j2z"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "rubytest" "-Ilib" "-Itest" "test/"))))))
+    (native-inputs
+     `(("ruby-rubytest-cli" ,ruby-rubytest-cli)
+       ("ruby-spectroscope" ,ruby-spectroscope)
+       ("ruby-ae" ,ruby-ae)))
+    (propagated-inputs
+     `(("ruby-tomparse" ,ruby-tomparse)
+       ("ruby-yard" ,ruby-yard)))
+    (synopsis "TomDoc syntax for YARD")
+    (description "This module adds support for the TomDoc documentation format
+to YARD, a documentation generation tool for Ruby.")
+    (home-page "http://rubyworks.github.com/yard-tomdoc/")
     (license license:expat)))
 
 (define-public ruby-clap
@@ -6487,19 +8349,19 @@ used to create both network servers and clients.")
 (define-public ruby-ruby-engine
   (package
     (name "ruby-ruby-engine")
-    (version "1.0.1")
+    (version "2.0.0")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "ruby_engine" version))
        (sha256
         (base32
-         "1d0sd4q50zkcqhr395wj1wpn2ql52r0fpwhzjfvi1bljml7k546v"))))
+         "0wqdcv8gxybp1y7kjhh18g3r9dczacs62d4ahcvyhz32bih8c9fm"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-before 'check 'clean-up
+         (add-after 'extract-gemspec 'clean-up
            (lambda _
              (delete-file "Gemfile.lock")
              (substitute* "ruby_engine.gemspec"
@@ -6508,18 +8370,19 @@ used to create both network servers and clients.")
                ((".*<rdoc.*") "")
                ((".*<rubygems-tasks.*") "")
                ;; Remove extraneous .gem file
-               (("\\\"pkg/ruby_engine-1.0.0.gem\\\",") "")
+               (("\"pkg/ruby_engine-[0-9.]+\\.gem\".freeze, ") "")
+               (("\"Gemfile.lock\".freeze, ") "")
                ;; Soften rake dependency
-               (("%q<rake>.freeze, \\[\\\"~> 10.0\\\"\\]")
+               (("%q<rake>.freeze, \\[\"~> 10.0\"\\]")
                 "%q<rake>.freeze, [\">= 10.0\"]")
                ;; Soften the rspec dependency
-               (("%q<rspec>.freeze, \\[\\\"~> 2.4\\\"\\]")
+               (("%q<rspec>.freeze, \\[\"~> 2.4\"\\]")
                 "%q<rspec>.freeze, [\">= 2.4\"]"))
              (substitute* "Rakefile"
                (("require 'rubygems/tasks'") "")
                (("Gem::Tasks.new") ""))
              ;; Remove extraneous .gem file that otherwise gets installed.
-             (delete-file "pkg/ruby_engine-1.0.0.gem")
+             (delete-file-recursively "pkg")
              #t)))))
     (native-inputs
      `(("bundler" ,bundler)
@@ -6960,44 +8823,40 @@ display width of strings in Ruby.")
 (define-public ruby_version
   (package
     (name "ruby_version")
-    (version "1.0.1")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "ruby_version" version))
        (sha256
         (base32
-         "0854i1bjy56176anr05l5m0vc81nl53c7fyfg7sljj62m1d64dgj"))))
+         "0lvc7bd5ps3w2vq2wb02i0pi3vfcx2rnckx2ix4rjym1qf52kb2j"))))
     (build-system ruby-build-system)
     (arguments
-     '(#:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-before 'check 'fix-dependencies
            (lambda _
              ;; Remove the Gemfile.lock, as we want to use Guix packages at
              ;; whatever versions.
              (delete-file "Gemfile.lock")
-             ;; Remove the incldued gem file as it's unnecessary.
-             (delete-file "pkg/ruby_version-1.0.0.gem")
+             ;; Remove the included gem files as they unnecessary.
+             (delete-file-recursively "pkg/")
+             ;; Accept any version of rake, rdoc and rspec
              (substitute* "ruby_version.gemspec"
-               ;; Don't require rdoc and rubygems-tasks as they're unnecessary
-               ((".*rdoc.*") "\n")
-               ((".*rubygems-tasks.*") "\n")
-               ;; Accept any version of rake and rspec
                (("%q<rake.*") "%q<rake>)\n")
+               (("%q<rdoc.*") "%q<rdoc>)\n")
                (("%q<rspec.*") "%q<rspec>)\n"))
-             ;; Remove the use of rubygems-tasks from the Rakefile, as it's
-             ;; unnecessary.
+             ;; Do not use bundler.
              (substitute* "Rakefile"
-               (("^require 'rubygems/tasks'") "")
-               (("Gem::Tasks.new") ""))
+               (("Bundler\\.setup.*") "nil\n"))
              #t)))))
     (native-inputs
-     `(("bundler" ,bundler)
-       ("ruby-rspec" ,ruby-rspec)))
+     `(("ruby-rdoc" ,ruby-rdoc)
+       ("ruby-rspec" ,ruby-rspec)
+       ("ruby-rubygems-tasks", ruby-rubygems-tasks)))
     (synopsis "Ruby library to help check the Ruby version")
-    (description
-     "@code{ruby_version} provides a @code{RubyVersion} module to simplify
+    (description "@code{ruby_version} provides a @code{RubyVersion} module to simplify
 checking for the right Ruby version in software.")
     (home-page "https://github.com/janlelis/ruby_version")
     (license license:expat)))
@@ -7598,7 +9457,7 @@ binary-to-text encoding.  The main modern use of Ascii85 is in PostScript and
 (define-public ruby-ttfunk
   (package
     (name "ruby-ttfunk")
-    (version "1.5.1")
+    (version "1.6.2.1")
     (source
      (origin
        (method git-fetch)
@@ -7609,7 +9468,7 @@ binary-to-text encoding.  The main modern use of Ascii85 is in PostScript and
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0dx9891zcli0sjrslmsvrwalv86hbjbqlmbrcasnjr069v05h9v9"))))
+         "0rsf4j6s97wbcnjbvmmh6xrc7imw4g9lrlcvn945wh400lc8r53z"))))
     (build-system ruby-build-system)
     (arguments
      `(#:test-target "spec"
@@ -7641,7 +9500,7 @@ part of the Prawn PDF generator.")
     (home-page "https://github.com/prawnpdf/ttfunk")
     ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
     ;; for details."
-    (license (list license:gpl2 license:gpl3 license:ruby))))
+    (license %prawn-project-licenses)))
 
 (define-public ruby-puma
   (package
@@ -7946,7 +9805,7 @@ integrates other mathematical standard libraries.  Prior to Ruby 2.5,
     (description
      "This gem is a port of the rails 'rake stats' method so it can be made
 more robust and work for non rails projects.")
-    (home-page "http://github.com/danmayer/code_statistics")
+    (home-page "https://github.com/danmayer/code_statistics")
     (license license:expat)))
 
 (define-public ruby-rubypants
@@ -7997,14 +9856,14 @@ Markdown.")
 (define-public ruby-rake
   (package
     (name "ruby-rake")
-    (version "12.3.1")
+    (version "13.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "rake" version))
        (sha256
         (base32
-         "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg"))))
+         "0w6qza25bq1s825faaglkx1k6d59aiyjjk3yw3ip5sb463mhhai9"))))
     (build-system ruby-build-system)
     (native-inputs
      `(("bundler" ,bundler)))
@@ -8109,7 +9968,7 @@ all known public suffixes.")
        ("bundler" ,bundler)
        ("ruby-idn-ruby" ,ruby-idn-ruby)
        ("ruby-sporkmonger-rack-mount" ,ruby-sporkmonger-rack-mount)
-       ("ruby-rspec-its", ruby-rspec-its)
+       ("ruby-rspec-its", ruby-rspec-its-minimal)
        ("ruby-yard" ,ruby-yard)
        ("ruby-simplecov" ,ruby-simplecov)))
     (propagated-inputs
@@ -8148,7 +10007,7 @@ RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates."
      "This package extends the @code{String} class and adds a
 @code{ColorizedString} with methods to set text color, background color,
 and text effects.")
-    (home-page "http://github.com/fazibear/colorize")
+    (home-page "https://github.com/fazibear/colorize")
     (license license:gpl2+)))
 
 (define-public ruby-colorator
@@ -8215,20 +10074,64 @@ your application.")
                (base32
                 "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71"))))))
 
+(define-public ruby-kpeg
+  (package
+  (name "ruby-kpeg")
+  (version "1.1.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "kpeg" version))
+      (sha256
+        (base32
+          "0x2kpfrcagj931masm5y1kwbnc6nxl60cqdcd3lyd1d2hz7kzlia"))))
+  (build-system ruby-build-system)
+  (native-inputs
+   `(("ruby-hoe" ,ruby-hoe)))
+  (synopsis "PEG library for Ruby")
+  (description "KPeg is a simple PEG library for Ruby.  It provides an API as
+well as native grammar to build the grammar.  KPeg supports direct left
+recursion of rules via the
+@uref{http://www.vpri.org/pdf/tr2008003_experimenting.pdf,OMeta memoization}
+technique.")
+  (home-page "https://github.com/evanphx/kpeg")
+  (license license:expat)))
+
 (define-public ruby-rdoc
   (package
     (name "ruby-rdoc")
-    (version "6.0.4")
+    (version "6.2.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (rubygems-uri "rdoc" version))
-        (sha256
-          (base32
-            "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ruby/rdoc")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0dhk29nidv93b5vnjvlm9gcixgn4i0jcyzrgxdk6pdg019bw4cj6"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-gemspec
+           ;; TODO: Remove after next release is tagged.
+           (lambda _
+             (substitute* "rdoc.gemspec"
+               (("\"lib/rdoc/generator/template/darkfish/js/\
+jquery\\.js\", ") ""))
+             #t))
+         (add-before 'build 'generate
+           ;; 'gem build' doesn't honor Rakefile dependencies (see:
+           ;; https://github.com/ruby/rdoc/issues/432#issuecomment-650808977).
+           (lambda _
+             (invoke "rake" "generate"))))))
     (native-inputs
-     `(("bundler" ,bundler)))
+     `(("bundler" ,bundler)
+       ("ruby-kpeg" ,ruby-kpeg)
+       ("ruby-racc" ,ruby-racc)
+       ("ruby-rubocop" ,ruby-rubocop)))
     (home-page "https://ruby.github.io/rdoc/")
     (synopsis "HTML and command-line documentation utility")
     (description "RDoc produces HTML and command-line documentation for Ruby
@@ -8317,7 +10220,7 @@ strings or files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sass/sass-spec.git")
+             (url "https://github.com/sass/sass-spec")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8504,7 +10407,7 @@ interface.  It allows Jekyll to rebuild your site when a file changes.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/grosser/parallel.git")
+             (url "https://github.com/grosser/parallel")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -8602,18 +10505,26 @@ custom checks.  This gem provides a set of additional checks.")
 (define-public ruby-pdf-reader
   (package
     (name "ruby-pdf-reader")
-    (version "2.1.0")
+    (version "2.4.0")
     (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "pdf-reader" version))
+              (method git-fetch)        ;no test in distributed gem archive
+              (uri (git-reference
+                    (url "https://github.com/yob/pdf-reader.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45"))))
+                "1yh8yrlssf5ppnkvk4m78vmh5r5vqwdcd0gm3lqipw162llz0rai"))))
     (build-system ruby-build-system)
-    (arguments `(#:test-target "spec"))
+    (arguments `(#:test-target "spec"
+                 #:phases (modify-phases %standard-phases
+                            (add-after 'unpack 'do-not-use-bundler
+                              (lambda _
+                                (substitute* "spec/spec_helper.rb"
+                                  ((".*[Bb]undler.*") ""))
+                                #t)))))
     (native-inputs
-     `(("bundler" ,bundler)
-       ("ruby-rspec" ,ruby-rspec)
+     `(("ruby-rspec" ,ruby-rspec)
        ("ruby-cane" ,ruby-cane)
        ("ruby-morecane" ,ruby-morecane)))
     (propagated-inputs
@@ -8630,25 +10541,46 @@ access to the contents of a PDF file with a high degree of flexibility.")
     (license license:gpl3+)))
 
 (define-public ruby-pdf-inspector
-  (package
-    (name "ruby-pdf-inspector")
-    (version "1.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "pdf-inspector" version))
-              (sha256
-               (base32
-                "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w"))))
-    (build-system ruby-build-system)
-    (propagated-inputs
-     `(("ruby-pdf-reader" ,ruby-pdf-reader)))
-    (arguments `(#:tests? #f)); No rakefile
-    (home-page "https://github.com/prawnpdf/pdf-inspector")
-    (synopsis "Analysis classes for inspecting PDF output")
-    (description "This library provides a number of PDF::Reader based tools for
+  (let ((revision "1")
+        (commit "00ee4c92ff917118785ebec188e81effc968abeb"))
+    (package
+      (name "ruby-pdf-inspector")
+      (version (git-version "1.3.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/prawnpdf/pdf-inspector.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0h9w81ddd0gvkh5n2cvny9ddb5qiac1si0dhinkk0xxh5382qs0m"))))
+      (build-system ruby-build-system)
+      (arguments
+       `(#:test-target "spec"
+         #:phases (modify-phases %standard-phases
+                    (add-before 'build 'drop-signing-key-requirement
+                      (lambda _
+                        (substitute* "pdf-inspector.gemspec"
+                          (("spec.signing_key =.*")
+                           "spec.signing_key = nil"))
+                        #t))
+                    (replace 'check
+                      (lambda _
+                        (substitute* "pdf-inspector.gemspec"
+                          ((".*rubocop.*") "")
+                          ((".*yard.*") ""))
+                        (invoke "rspec"))))))
+      (native-inputs
+       `(("ruby-rspec" ,ruby-rspec)))
+      (propagated-inputs
+       `(("ruby-pdf-reader" ,ruby-pdf-reader)))
+      (home-page "https://github.com/prawnpdf/pdf-inspector")
+      (synopsis "Analysis classes for inspecting PDF output")
+      (description "This library provides a number of PDF::Reader based tools for
 use in testing PDF output.  Presently, the primary purpose of this tool is to
 support the tests found in Prawn, a pure Ruby PDF generation library.")
-    (license license:gpl3+)))
+      (license %prawn-project-licenses))))
 
 (define-public ruby-pdf-core
   (package
@@ -8671,39 +10603,52 @@ functionality from Prawn.")
     (license license:gpl3+)))
 
 (define-public ruby-prawn
-  (package
-    (name "ruby-prawn")
-    (version "2.2.2")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "prawn" version))
-              (sha256
-               (base32
-                "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m"))))
-    (build-system ruby-build-system)
-    (arguments
-     ; No tests
-     `(#:tests? #f
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'fix-dependencies
-           (lambda _
-             (substitute* "prawn.gemspec"
-               (("~> 0.7.0") "~> 0.7"))
-             #t)))))
-    (propagated-inputs
-     `(("ruby-pdf-core" ,ruby-pdf-core)
-       ("ruby-ttfunk" ,ruby-ttfunk)))
-    (native-inputs
-     `(("bundler" ,bundler)
-       ("ruby-pdf-inspector" ,ruby-pdf-inspector)
-       ("ruby-rspec" ,ruby-rspec)
-       ("ruby-simplecov" ,ruby-simplecov)
-       ("ruby-yard" ,ruby-yard)))
-    (home-page "http://prawnpdf.org/api-docs/2.0/")
-    (synopsis "PDF generation for Ruby")
-    (description "Prawn is a pure Ruby PDF generation library.")
-    (license license:gpl3+)))
+  ;; There hasn't been a new release since 2017/03/17.
+  (let ((revision "1")
+        (commit "d980247be8a00e7c59cd4e5785e3aa98f9856db1"))
+    (package
+      (name "ruby-prawn")
+      (version (git-version "2.2.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/prawnpdf/prawn.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0mcmvf22h8il93yq48v9f31qpy27pvjxgv9172p0f4x9lqy0imwr"))))
+      (build-system ruby-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-before 'build 'drop-signing-key-requirement
+             (lambda _
+               (substitute* "prawn.gemspec"
+                 (("spec.signing_key =.*")
+                  "spec.signing_key = nil"))
+               #t))
+           (replace 'check
+             (lambda* (#:key tests? #:allow-other-keys)
+               (when tests?
+                 ;; The Prawn manual test fails (see:
+                 ;; https://github.com/prawnpdf/prawn/issues/1163), so exclude
+                 ;; it.
+                 (invoke "rspec" "--exclude-pattern" "prawn_manual_spec.rb"))
+               #t)))))
+      (propagated-inputs
+       `(("ruby-pdf-core" ,ruby-pdf-core)
+         ("ruby-ttfunk" ,ruby-ttfunk)))
+      (native-inputs
+       `(("ruby-pdf-inspector" ,ruby-pdf-inspector)
+         ("ruby-prawn-manual-builder" ,ruby-prawn-manual-builder)
+         ("ruby-rspec" ,ruby-rspec)
+         ("ruby-simplecov" ,ruby-simplecov)
+         ("ruby-yard" ,ruby-yard)))
+      (home-page "https://prawnpdf.org/api-docs/2.0/")
+      (synopsis "PDF generation for Ruby")
+      (description "Prawn is a pure Ruby PDF generation library.")
+      (license %prawn-project-licenses))))
 
 (define-public ruby-prawn-table
   (package
@@ -8832,13 +10777,13 @@ implementation.")
 (define-public ruby-rouge
   (package
     (name "ruby-rouge")
-    (version "3.13.0")
+    (version "3.21.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rouge" version))
               (sha256
                (base32
-                "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"))))
+                "1agrrmj88k9jkk36ra1ml2c1jffpp595pkxmcla74ac9ia09vn3s"))))
     (build-system ruby-build-system)
     (arguments `(#:tests? #f)); No rakefile
     (home-page "http://rouge.jneen.net/")
@@ -8917,7 +10862,7 @@ indentation will probably be an issue and hence this gem.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dtao/safe_yaml.git")
+             (url "https://github.com/dtao/safe_yaml")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -9258,15 +11203,25 @@ entities.")
 (define-public ruby-sinatra
   (package
     (name "ruby-sinatra")
-    (version "2.0.5")
+    (version "2.0.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "sinatra" version))
        (sha256
         (base32
-         "1gasgn5f15myv08k10i16p326pchxjsy37pgqfw0xm66kcc5d7ry"))))
+         "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"))))
     (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; See: https://github.com/sinatra/sinatra/issues/1578.
+         (add-after 'extract-gemspec 'fix-slow-doc-generation
+           (lambda _
+             (substitute* "sinatra.gemspec"
+               (("\"README.rdoc\"\\.freeze," all)
+                (string-append all " \"--exclude=.*\\.md\".freeze,")))
+             #t)))))
     (propagated-inputs
      `(("ruby-mustermann" ,ruby-mustermann)
        ("ruby-rack" ,ruby-rack)
@@ -9432,7 +11387,7 @@ then check out http://127.0.0.1:1080 to see the mail.")
        ;; The gem does not include test code, so fetch from the Git repository.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/castwide/backport.git")
+             (url "https://github.com/castwide/backport")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -9639,7 +11594,7 @@ which snapshots to consider and what files to include.")
   (package
     (name "ruby-wwtd")
     (version "1.4.1")
-    (home-page "http://github.com/grosser/wwtd")
+    (home-page "https://github.com/grosser/wwtd")
     (source (origin
               (method git-fetch)
               (uri (git-reference
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 132a17810c..81b30e17c4 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -60,7 +60,7 @@
         ("rust-locale" ,rust-locale-0.2)
         ("rust-log" ,rust-log-0.4)
         ("rust-natord" ,rust-natord-1.0)
-        ("rust-num-cpus" ,rust-num-cpus-1.11)
+        ("rust-num-cpus" ,rust-num-cpus-1)
         ("rust-number-prefix" ,rust-number-prefix-0.3)
         ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
         ("rust-term-grid" ,rust-term-grid-0.1)
@@ -134,7 +134,7 @@ also knows about symlinks, extended attributes, and Git.")
 (define-public fd
   (package
     (name "fd")
-    (version "7.4.0")
+    (version "8.1.1")
     (source
      (origin
        (method url-fetch)
@@ -143,24 +143,27 @@ also knows about symlinks, extended attributes, and Git.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "147m872zff0srwq9vaxkkbab06g3fkklbk1g2lx90vdhgs37f5xj"))))
+         "124a5r8hpk2phs1288jybh34d48yxy44wr7gv5ggchs272gs2jam"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
        (("rust-ansi-term" ,rust-ansi-term-0.12)
+        ("rust-anyhow" ,rust-anyhow-1.0)
         ("rust-atty" ,rust-atty-0.2)
         ("rust-clap" ,rust-clap-2)
         ("rust-ctrlc" ,rust-ctrlc-3.1)
+        ("rust-dirs" ,rust-dirs-2.0)
         ("rust-globset" ,rust-globset-0.4)
-        ("rust-humantime" ,rust-humantime-1.3)
+        ("rust-humantime" ,rust-humantime-2)
         ("rust-ignore" ,rust-ignore-0.4)
         ("rust-jemallocator" ,rust-jemallocator-0.3)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-lscolors" ,rust-lscolors-0.6)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-lscolors" ,rust-lscolors-0.7)
+        ("rust-num-cpus" ,rust-num-cpus-1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-regex-syntax" ,rust-regex-syntax-0.6)
+        ("rust-users" ,rust-users-0.10)
         ("rust-version-check" ,rust-version-check-0.9))
        #:cargo-development-inputs
        (("rust-diff" ,rust-diff-0.1)
@@ -204,7 +207,7 @@ provides defaults for 80% of the use cases.")
 (define-public ripgrep
   (package
     (name "ripgrep")
-    (version "11.0.2")
+    (version "12.1.1")
     (source
      (origin
        (method url-fetch)
@@ -213,7 +216,7 @@ provides defaults for 80% of the use cases.")
         (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0vqjr96s2rs45715hzf0g0wjahig4zjyiqfijmzzg4jyh9ni80yr"))))
+         "1grfi0j9zczzipipc21lkdbqmd2lvy2wlqy65fy4sckqvix5amdr"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -224,10 +227,10 @@ provides defaults for 80% of the use cases.")
         ("rust-jemallocator" ,rust-jemallocator-0.3)
         ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-log" ,rust-log-0.4)
-        ("rust-num-cpus" ,rust-num-cpus-1.10)
-        ("rust-regex" ,rust-regex-1.1)
+        ("rust-num-cpus" ,rust-num-cpus-1)
+        ("rust-regex" ,rust-regex-1)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-termcolor" ,rust-termcolor-1.0))
+        ("rust-termcolor" ,rust-termcolor-1))
        #:cargo-development-inputs
        (("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))
@@ -262,7 +265,7 @@ gitignore rules.")
 (define-public rust-cbindgen
   (package
     (name "rust-cbindgen")
-    (version "0.13.1")
+    (version "0.13.2")
     (source
       (origin
         (method url-fetch)
@@ -270,7 +273,7 @@ gitignore rules.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "0w70bnwwqyf9fr6z3rcs7m7ad791fmfmhxy828va0dkfwvamp59c"))))
+          "0673pq96hs7waavkv58v2pakpxpsfyjvbraa5kyl2b44phgdzcid"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
@@ -281,7 +284,7 @@ gitignore rules.")
         ("serde" ,rust-serde-1.0)
         ("serde-json" ,rust-serde-json-1.0)
         ("syn" ,rust-syn-1.0)
-        ("tempfile" ,rust-tempfile-3.1)
+        ("tempfile" ,rust-tempfile-3)
         ("toml" ,rust-toml-0.5))))
     (home-page "https://github.com/eqrion/cbindgen/")
     (synopsis "Tool for generating C bindings to Rust code")
@@ -329,7 +332,7 @@ gitignore rules.")
         ("rust-hex" ,rust-hex-0.4)
         ("rust-ignore" ,rust-ignore-0.4)
         ("rust-log" ,rust-log-0.4)
-        ("rust-rayon" ,rust-rayon-1.3)
+        ("rust-rayon" ,rust-rayon-1)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-cbor" ,rust-serde-cbor-0.10)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
@@ -342,9 +345,9 @@ gitignore rules.")
         ("rust-handlebars" ,rust-handlebars-2.0)
         ("rust-ignore" ,rust-ignore-0.4)
         ("rust-lazy-static" ,rust-lazy-static-1)
-        ("rust-regex" ,rust-regex-1.3)
+        ("rust-regex" ,rust-regex-1)
         ("rust-serde-json" ,rust-serde-json-1.0)
-        ("rust-tempfile" ,rust-tempfile-3.0))
+        ("rust-tempfile" ,rust-tempfile-3))
        #:phases
        (modify-phases %standard-phases
          (add-after 'configure 'unvendor-libraries-from-crates
@@ -368,7 +371,7 @@ blanks grouped by language.")
 (define-public rust-cargo-c
   (package
     (name "rust-cargo-c")
-    (version "0.5.2")
+    (version "0.5.3")
     (source
       (origin
         (method url-fetch)
@@ -377,19 +380,19 @@ blanks grouped by language.")
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1is72jm0r73pqx2g3h1n6lvrcirwd91mmajsmb3jjg4jnayfkp0w"))))
+          "0hsag5g4qngm8alfil2dyvl5sagpqi5nb40c7bhwng2z8mv9r41k"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-cbindgen" ,rust-cbindgen-0.12)
-        ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.3)
+       (("rust-cbindgen" ,rust-cbindgen)
+        ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.4)
         ("rust-structopt" ,rust-structopt-0.3)
         ("rust-log" ,rust-log-0.4)
         ("rust-toml" ,rust-toml-0.5)
         ("rust-cargo-metadata" ,rust-cargo-metadata-0.9)
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0)
-        ("rust-regex" ,rust-regex-1.3))))
+        ("rust-regex" ,rust-regex-1))))
     (home-page "https://github.com/lu-zero/cargo-c")
     (synopsis "Build and install C-compatible libraries")
     (description
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index d139657f39..a807978917 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -121,7 +122,7 @@
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/thepowersgang/mrustc.git")
+                      (url "https://github.com/thepowersgang/mrustc")
                       (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
@@ -226,7 +227,7 @@ safety and thread safety guarantees.")
         (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm"))
         (modules '((guix build utils)))
         (snippet '(begin (delete-file-recursively "src/llvm") #t))
-        (patches (map search-patch '("rust-1.19-mrustc.patch")))))
+        (patches (search-patches "rust-1.19-mrustc.patch"))))
     (outputs '("out" "cargo"))
     (properties '((timeout . 72000)               ;20 hours
                   (max-silent-time . 18000)))     ;5 hours (for armel)
@@ -717,8 +718,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                       (delete-file-recursively "src/llvm")
                       (delete-file-recursively "src/llvm-emscripten")
                       #t))
-          (patches (map search-patch
-                        '("rust-1.25-accept-more-detailed-gdb-lines.patch")))))
+          (patches (search-patches
+                     "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -752,9 +753,9 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
       (source
         (origin
           (inherit (package-source base-rust))
-          (patches (map search-patch
-                        '("rust-coresimd-doctest.patch"
-                          "rust-1.25-accept-more-detailed-gdb-lines.patch")))))
+          (patches (search-patches
+                     "rust-coresimd-doctest.patch"
+                     "rust-1.25-accept-more-detailed-gdb-lines.patch"))))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -797,6 +798,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    (("fn finds_author_git") "#[ignore]\nfn finds_author_git")
                    (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git"))
                  #t))
+             ;; TODO(rebuild-rust): Remove this phase in rust-1.28 when rebuilding.
              (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel
                (lambda* _
                  ;; This test failed to work on "nightly" channel builds
@@ -821,10 +823,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
       (source
         (origin
           (inherit (package-source base-rust))
-          (patches (map search-patch '("rust-coresimd-doctest.patch"
-                                       "rust-bootstrap-stage0-test.patch"
-                                       "rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                       "rust-reproducible-builds.patch")))))
+          (patches (search-patches "rust-coresimd-doctest.patch"
+                                   "rust-bootstrap-stage0-test.patch"
+                                   "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                   "rust-reproducible-builds.patch"))))
       (native-inputs
        ;; FIXME: Rust 1.27 and some later versions require GDB 8.2 specifically.
        ;; See <https://bugs.gnu.org/37810>.
@@ -857,10 +859,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
       (source
         (origin
           (inherit (package-source base-rust))
-          (patches (map search-patch '("rust-coresimd-doctest.patch"
-                                       "rust-bootstrap-stage0-test.patch"
-                                       "rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                       "rust-reproducible-builds.patch")))))
+          (patches (search-patches "rust-coresimd-doctest.patch"
+                                   "rust-bootstrap-stage0-test.patch"
+                                   "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                   "rust-reproducible-builds.patch"))))
       (inputs
        ;; Use LLVM 6.0
        (alist-replace "llvm" (list llvm-6)
@@ -893,8 +895,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
       (source
         (origin
           (inherit (package-source base-rust))
-          (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch"
-                                       "rust-reproducible-builds.patch"))))))))
+          (patches (search-patches "rust-1.25-accept-more-detailed-gdb-lines.patch"
+                                   "rust-reproducible-builds.patch")))))))
 
 (define-public rust-1.30
   (let ((base-rust
@@ -1008,7 +1010,7 @@ move around."
                            (delete-file-recursively "src/tools/lldb")
                            (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
                            #t))
-          (patches (map search-patch '("rust-reproducible-builds.patch")))
+          (patches (search-patches "rust-reproducible-builds.patch"))
           ;; the vendor directory has moved to the root of
           ;; the tarball, so we have to strip an extra prefix
           (patch-flags '("-p2"))))
@@ -1143,12 +1145,16 @@ move around."
                    (setenv "CARGO_HOME" cargo-home)
                    #t))))))))))
 
+;; TODO(rebuild-rust): Switch to LLVM 9 in 1.38 instead of 1.40.
 (define-public rust-1.38
   (let ((base-rust
          (rust-bootstrapped-package rust-1.37 "1.38.0"
            "101dlpsfkq67p0hbwx4acqq6n90dj4bbprndizpgh1kigk566hk4")))
     (package
       (inherit base-rust)
+      #;(inputs
+        (alist-replace "llvm" (list llvm-9)
+                       (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -1183,4 +1189,133 @@ move around."
                  (generate-all-checksums "vendor")
                  #t)))))))))
 
+(define-public rust-1.40
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.39 "1.40.0"
+           "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx")))
+    (package
+      (inherit base-rust)
+      (inputs
+        (alist-replace "llvm" (list llvm-9)
+                       (package-inputs base-rust)))
+      (source
+        (origin
+          (inherit (package-source base-rust))
+          ;; llvm-emscripten is no longer bundled, as that codegen backend
+          ;; got removed.
+          (snippet '(begin
+                      (delete-file-recursively "src/llvm-project")
+                      (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
+                      #t))))
+      (arguments
+       ;; Rust 1.40 does not ship rustc-internal libraries by default
+       ;; (see rustc-dev-split). This means that librustc_driver.so is no
+       ;; longer available in lib/rustlib/$target/lib, which is the directory
+       ;; included in the runpath of librustc_codegen_llvm-llvm.so.
+       ;; This is detected by our validate-runpath phase as an error, but it
+       ;; is harmless as the codegen backend is loaded by librustc_driver.so
+       ;; itself, which must at that point have been already loaded.
+       ;; As such, we skip validating the runpath for Rust 1.40.
+       ;; Rust 1.41 stopped putting the codegen backend in a separate library,
+       ;; which makes this workaround only necessary for this release.
+       (cons* #:validate-runpath? #f
+         (substitute-keyword-arguments (package-arguments base-rust)
+           ((#:phases phases)
+            `(modify-phases ,phases
+               ;; We often need to patch tests with various Guix-specific paths.
+               ;; This often increases the line length and makes tidy, rustc's
+               ;; style checker, complain. We could insert additional newlines
+               ;; or add an "// ignore-tidy-linelength" comment, but as an
+               ;; ignore comment must be used, both approaches are fragile due
+               ;; to upstream formatting changes. As such, disable running the
+               ;; linter during tests, since it's intended for rustc developers
+               ;; anyway.
+               ;;
+               ;; TODO(rebuild-rust): This phase could be added earlier to
+               ;; simplify a significant amount of code, but it would require
+               ;; rebuilding the entire rusty universe.
+               (add-after 'patch-tests 'neuter-tidy
+                 (lambda _
+                   (substitute* "src/bootstrap/builder.rs"
+                     (("^.*::Tidy,") ""))
+                   #t))
+               ;; TODO(rebuild-rust): Adapt the find-files approach for
+               ;; earlier testsuite patches.
+               (replace 'patch-command-uid-gid-test
+                 (lambda _
+                   (match (find-files "src/test" "command-uid-gid\\.rs")
+                     ((file)
+                      (substitute* file
+                        (("/bin/sh") (which "sh")))))
+                   #t))
+               (replace 'patch-command-exec-tests
+                 ,(patch-command-exec-tests-phase
+                    '(match (find-files "src/test" "command-exec\\.rs")
+                       ((file) file))))
+               ;; TODO(rebuild-rust): The test in question got fixed long ago.
+               (delete 'disable-cargo-test-for-nightly-channel)
+               ;; The test got removed in commit 000fe63b6fc57b09828930cacbab20c2ee6e6d15
+               ;; "Remove painful test that is not pulling its weight"
+               (delete 'remove-unsupported-tests)))))))))
+
+(define-public rust-1.41
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.40 "1.41.1"
+           "0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
+    (package
+      (inherit base-rust)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:validate-runpath? _) #t))))))
+
+(define-public rust-1.42
+  (rust-bootstrapped-package rust-1.41 "1.42.0"
+    "0x9lxs82may6c0iln0b908cxyn1cv7h03n5cmbx3j1bas4qzks6j"))
+
+(define-public rust-1.43
+  (rust-bootstrapped-package rust-1.42 "1.43.0"
+    "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm"))
+
+(define-public rust-1.44
+  (rust-bootstrapped-package rust-1.43 "1.44.1"
+    "0ww4z2v3gxgn3zddqzwqya1gln04p91ykbrflnpdbmcd575n8bky"))
+
+(define-public rust-1.45
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.44 "1.45.0"
+           "0z6dh0yd3fcm3qh960wi4s6fa6pxz9mh77psycsqfkkx5kqra15s")))
+    (package
+      (inherit base-rust)
+      (source
+        (origin
+          (inherit (package-source base-rust))
+          (patches (search-patches "rust-1.45-linker-locale.patch"))))
+      (inputs
+        (alist-replace "llvm" (list llvm-10)
+                       (package-inputs base-rust)))
+      (arguments
+        (substitute-keyword-arguments (package-arguments base-rust)
+          ((#:phases phases)
+           `(modify-phases ,phases
+              ;; These tests make sure that the parser behaves properly when
+              ;; a source file starts with a shebang. Unfortunately,
+              ;; the patch-shebangs phase changes the meaning of these edge-cases.
+              ;; We skip the test since it's drastically unlikely Guix's packaging
+              ;; will introduce a bug here.
+              (add-after 'patch-tests 'skip-shebang-tests
+                (lambda _
+                  (with-directory-excursion "src/test/ui/parser/shebang"
+                    (delete-file "shebang-doc-comment.rs")
+                    (delete-file "sneaky-attrib.rs")
+                    #t)))
+              ;; This test case synchronizes itself by starting a localhost TCP
+              ;; server. This doesn't work as networking is not available.
+              (add-after 'patch-tests 'skip-networking-test
+                (lambda _
+                  (substitute* "src/tools/cargo/tests/testsuite/freshness.rs"
+                    (("fn linking_interrupted" all)
+                     (string-append "#[ignore] " all)))
+                 #t)))))))))
+
+;; TODO(staging): Bump this variable to the latest packaged rust.
 (define-public rust rust-1.39)
diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm
index b96cb6b96e..8c837fdaeb 100644
--- a/gnu/packages/sagemath.scm
+++ b/gnu/packages/sagemath.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages lisp)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -184,59 +186,26 @@ represented as strings.")
     (license license:public-domain)
     (home-page "https://github.com/miguelmarco/libhomfly")))
 
-;; The following three packages from the Linbox group are needed in
-;; an outdated version for Sage.
-
-(define-public givaro-4.0.4
-  (package (inherit givaro)
-    (name "givaro")
-    (version "4.0.4")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/linbox-team/givaro")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "199p8wyj5i63jbnk7j8qbdbfp5rm2lpmcxyk3mdjy9bz7ygx3hhy"))))))
-
-(define-public fflas-ffpack-2.3.2
-  (package (inherit fflas-ffpack)
-    (name "fflas-ffpack")
-    (version "2.3.2")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/linbox-team/fflas-ffpack")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1cqhassj2dny3gx0iywvmnpq8ca0d6m82xl5rz4mb8gaxr2kwddl"))))
-    (propagated-inputs
-     `(("givaro" ,givaro-4.0.4)))
-    ;; A test fails, but since all tests pass in the latest version,
-    ;; there is not much point in investigating.
-    (arguments
-     (substitute-keyword-arguments (package-arguments fflas-ffpack)
-       ((#:tests? _ #f) #f)))))
-
-(define-public linbox-1.5.2
-  (package (inherit linbox)
-    (version "1.5.2")
-    (name "linbox")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/linbox-team/linbox")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1wfivlwp30mzdy1697w7rzb8caajim50mc8h27k82yipn2qc5n4i"))))
-    (inputs
-     `(("fflas-ffpack" ,fflas-ffpack-2.3.2)))))
+;; Sage 9.1 doesn't build with ECL 20.  This won't be necessary once 9.2 is
+;; released.  See https://trac.sagemath.org/ticket/22191
+(define-public ecl-16
+  (package
+    (inherit ecl)
+    (version "16.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://common-lisp.net/project/ecl/static/files/release/ecl"
+             "-" version ".tgz"))
+       (sha256
+        (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
+       (patches (search-patches
+                  "ecl-16-libffi.patch"
+                  "ecl-16-ignore-stderr-write-error.patch"
+                  "ecl-16-format-directive-limit.patch"))))
+    ;; Current ECL uses LGPL 2.1+
+    (license license:lgpl2.0+)))
 
 (define-public pynac
   (package
@@ -399,10 +368,7 @@ used as internal storage type for polynomial structures.")
              (let ((out (assoc-ref outputs "out")))
                (substitute* "Makefile"
                  (("^INSTALL_DIR= /usr/local")
-                  (string-append "INSTALL_DIR=" out))
-                 ;; Sage renames the include directory, so we do it also.
-                 (("include/Lfunction")
-                  "include/libLfunction")))
+                  (string-append "INSTALL_DIR=" out))))
              #t))
          (add-before 'install 'make-output-dirs
            (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 4551e57d4a..a34d704867 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -890,7 +890,7 @@ small program, it is easy to comprehend, get to grips with, and use.")
                 ;; <ftp.ecn.purdue.edu/qobi/stalin-0.11-amd64-patches.tgz>
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/barak/stalin.git")
+                      (url "https://github.com/barak/stalin")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
@@ -962,7 +962,7 @@ generation.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/JeffBezanson/femtolisp.git")
+                      (url "https://github.com/JeffBezanson/femtolisp")
                       (commit commit)))
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index af519de0a3..0491731e20 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -159,7 +159,7 @@ window manager as well as the Tmux terminal multiplexer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/nelhage/reptyr.git")
+             (url "https://github.com/nelhage/reptyr")
              (commit (string-append "reptyr-" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 8f9f2ed2a4..da8a58e7ad 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -257,7 +257,7 @@ website for more information about Yubico and the YubiKey.")
 (define-public opensc
   (package
     (name "opensc")
-    (version "0.19.0")
+    (version "0.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -265,7 +265,7 @@ website for more information about Yubico and the YubiKey.")
                     version "/opensc-" version ".tar.gz"))
               (sha256
                (base32
-                "09jqzl18z5qfrf4vf2nvbpdm3mphpgfkl3ww1clkaxh2z56hwnic"))))
+                "0qs8pabkrpj1z52bkdsk59s2z6q5m0hfh9d5j1f68qs4lksb9x5v"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -485,7 +485,7 @@ operations.")
               (method git-fetch)
               (uri
                (git-reference
-                (url "https://github.com/Yubico/libu2f-server.git")
+                (url "https://github.com/Yubico/libu2f-server")
                 (commit (string-append "libu2f-server-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -528,7 +528,7 @@ verifying the cryptographic operations.")
               (method git-fetch)
               (uri
                (git-reference
-                (url "https://github.com/Yubico/pam-u2f.git")
+                (url "https://github.com/Yubico/pam-u2f")
                 (commit (string-append "pam_u2f-" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm
index 1502d167c4..558a64a13b 100644
--- a/gnu/packages/selinux.scm
+++ b/gnu/packages/selinux.scm
@@ -52,7 +52,7 @@
               (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/SELinuxProject/selinux.git")
+                      (url "https://github.com/SELinuxProject/selinux")
                       (commit release)))
                 (file-name (string-append "selinux-" release "-checkout"))
                 (sha256
@@ -327,7 +327,7 @@ based on required access.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/TresysTechnology/setools.git")
+                    (url "https://github.com/TresysTechnology/setools")
                     (commit version)))
               (file-name (string-append name "-" version "-checkout"))
               (sha256
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 91c1dcd98d..554b1d65ea 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -39,7 +39,7 @@
 (define-public sequoia
   (package
     (name "sequoia")
-    (version "0.16.0")
+    (version "0.17.0")
     (source
      (origin
        (method git-fetch)
@@ -47,7 +47,7 @@
              (url "https://gitlab.com/sequoia-pgp/sequoia.git")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "0iwzi2ylrwz56s77cd4vcf89ig6ipy4w6kp2pfwqvd2d00x54dhk"))
+        (base32 "1rf9q67qmjfkgy6r3mz1h9ibfmc04r4j8nzacqv2l75x4mwvf6xb"))
        (file-name (git-file-name name version))))
     (build-system cargo-build-system)
     (outputs '("out" "python"))
@@ -69,48 +69,48 @@
        #:cargo-inputs
        (("rust-assert-cli" ,rust-assert-cli-0.6)
         ("rust-anyhow" ,rust-anyhow-1.0)
-        ("rust-base64", rust-base64-0.11)
+        ("rust-base64" ,rust-base64-0.11)
         ;;("rust-buffered-reader" included
-        ("rust-bzip2", rust-bzip2-0.3)
+        ("rust-bzip2" ,rust-bzip2-0.3)
         ("rust-capnp" ,rust-capnp-0.10)
         ("rust-capnp-rpc" ,rust-capnp-rpc-0.10)
         ("rust-capnpc" ,rust-capnpc-0.10)
         ("rust-chrono" ,rust-chrono-0.4)
         ("rust-clap" ,rust-clap-2)
-        ("rust-clap" ,rust-clap-2)
         ("rust-colored" ,rust-colored-1.9.1)
         ("rust-crossterm" ,rust-crossterm-0.13)
-        ("rust-ctor", rust-ctor-0.1)
+        ("rust-ctor" ,rust-ctor-0.1)
         ("rust-dirs" ,rust-dirs-2.0)
         ;;("rust-failure" included
         ("rust-filetime" ,rust-filetime-0.2)
-        ("rust-flate2", rust-flate2-1.0)
+        ("rust-flate2" ,rust-flate2-1.0)
         ("rust-fs2" ,rust-fs2-0.4)
         ("rust-futures" ,rust-futures-0.1)
         ("rust-http" ,rust-http-0.1)
         ("rust-hyper" ,rust-hyper-0.12)
         ("rust-hyper-tls" ,rust-hyper-tls-0.3)
-        ("rust-idna", rust-idna-0.2)
+        ("rust-idna" ,rust-idna-0.2)
         ("rust-itertools" ,rust-itertools-0.8)
-        ("rust-lalrpop-util", rust-lalrpop-util-0.17)
-        ("rust-lazy-static", rust-lazy-static-1.3)
+        ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
+        ("rust-lazy-static" ,rust-lazy-static-1)
         ("rust-libc" ,rust-libc-0.2)
-        ("rust-memsec", rust-memsec-0.5)
+        ("rust-memsec" ,rust-memsec-0.5)
         ("rust-native-tls" ,rust-native-tls-0.2)
-        ("rust-nettle", rust-nettle-7)
+        ("rust-nettle" ,rust-nettle-7)
         ("rust-parity-tokio-ipc" ,rust-parity-tokio-ipc-0.4)
         ("rust-percent-encoding" ,rust-percent-encoding-2.1)
         ("rust-prettytable-rs" ,rust-prettytable-rs-0.8)
         ("rust-proc-macro2" ,rust-proc-macro2-1.0)
-        ("rust-quickcheck", rust-quickcheck-0.9)
-        ("rust-rand", rust-rand-0.7)
-        ("rust-regex", rust-regex-1.3)
+        ("rust-quickcheck" ,rust-quickcheck-0.9)
+        ("rust-rand" ,rust-rand-0.7)
+        ("rust-regex" ,rust-regex-1)
         ("rust-rusqlite" ,rust-rusqlite-0.19)
-        ("rust-tempfile" ,rust-tempfile-3.1)
+        ("rust-structopt" ,rust-structopt-0.3)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-thiserror" ,rust-thiserror-1.0)
         ("rust-tokio" ,rust-tokio-0.1)
         ("rust-tokio-core" ,rust-tokio-core-0.1)
-        ("rust-unicode-normalization", rust-unicode-normalization-0.1)
+        ("rust-unicode-normalization" ,rust-unicode-normalization-0.1)
         ("rust-url" ,rust-url-2.1)
         ("rust-zbase32" ,rust-zbase32-0.1))
        #:cargo-development-inputs
@@ -162,6 +162,14 @@
              ;; FIXME: why do we need to set this here?
              (setenv "LIBCLANG_PATH"
                      (string-append (assoc-ref inputs "clang") "/lib"))
+             #t))
+         (add-after 'unpack 'unpin-deps
+           (lambda _
+             ;; As the comment in that file explains, upstream encourages
+             ;; unpinning, as the pinned version is only to make sure the crate
+             ;; compiles on older versions of rustc
+             (substitute* '("openpgp/Cargo.toml" "tool/Cargo.toml")
+               (("= \"=") "= \""))
              #t)))))
     (home-page "https://sequoia-pgp.org")
     (synopsis "New OpenPGP implementation")
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index be81715116..fc0102caf0 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -60,7 +60,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/USCiLab/cereal.git")
+             (url "https://github.com/USCiLab/cereal")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -145,7 +145,7 @@ serialization.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tarruda/libmpack.git")
+             (url "https://github.com/tarruda/libmpack")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -175,7 +175,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/libmpack/libmpack-lua.git")
+             (url "https://github.com/libmpack/libmpack-lua")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -267,7 +267,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jbeder/yaml-cpp.git")
+             (url "https://github.com/jbeder/yaml-cpp")
              (commit (string-append "yaml-cpp-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -321,7 +321,7 @@ it a convenient format to store user input files.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/open-source-parsers/jsoncpp.git")
+                    (url "https://github.com/open-source-parsers/jsoncpp")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 109baacc30..1ebdfce768 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -64,14 +65,14 @@
 (define-public dash
   (package
     (name "dash")
-    (version "0.5.11")
+    (version "0.5.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://gondor.apana.org.au/~herbert/dash/files/"
                            "dash-" version ".tar.gz"))
        (sha256
-        (base32 "1jwilfsy249d3q7fagg1ga4bgc2bg1fzw63r2nan0m77bznsdnad"))
+        (base32 "048n1rbw3v1ffzsw5mkc6zzvvf1csq7pcri7jraaqag38vqq3j3k"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -99,7 +100,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
 (define-public fish
   (package
     (name "fish")
-    (version "3.1.0")
+    (version "3.1.2")
     (source
      (origin
        (method url-fetch)
@@ -107,7 +108,11 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
                            "releases/download/" version "/"
                            "fish-" version ".tar.gz"))
        (sha256
-        (base32 "0s2356mlx7fp9kgqgw91lm5ds2i9iq9hq071fbqmcp3875l1xnz5"))))
+        (base32 "1vblmb3x2k2cb0db5jdyflppnlqsm7i6jjaidyhmvaaw7ch2gffm"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (delete-file-recursively "pcre2-10.32") #t))))
     (build-system cmake-build-system)
     (inputs
      `(("fish-foreign-env" ,fish-foreign-env)
@@ -121,10 +126,17 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'set-env
+           (lambda _
+             ;; some tests write to $HOME
+             (setenv "HOME" (getcwd))
+             #t))
          (add-after 'unpack 'patch-tests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((coreutils (assoc-ref inputs "coreutils"))
                    (bash (assoc-ref inputs "bash")))
+               ;; This test fails
+               (delete-file "tests/checks/pipeline-pgroup.fish")
                ;; These try to open a terminal
                (delete-file "tests/checks/interactive.fish")
                (delete-file "tests/checks/login-interactive.fish")
@@ -143,8 +155,8 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
                     "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);"))
                   ""))
                (substitute*
-                   (append (find-files "tests" ".*\\.(in|out|err)$")
-                           (find-files "tests/checks" ".*\\.fish"))
+                 (append (find-files "tests" ".*\\.(in|out|err)$")
+                         (find-files "tests/checks" ".*\\.fish"))
                  (("/bin/pwd" pwd) (string-append coreutils pwd))
                  (("/bin/echo" echo) (string-append coreutils echo))
                  (("/bin/sh" sh) (string-append bash sh))
@@ -169,9 +181,9 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
          ;; Embed absolute paths.
          (add-before 'install 'embed-absolute-paths
            (lambda _
-               (substitute* "share/functions/__fish_print_help.fish"
-                 (("nroff") (which "nroff")))
-               #t))
+             (substitute* "share/functions/__fish_print_help.fish"
+               (("nroff") (which "nroff")))
+             #t))
          ;; Enable completions, functions and configurations in user's and
          ;; system's guix profiles by adding them to __extra_* variables.
          (add-before 'install 'patch-fish-extra-paths
@@ -241,7 +253,7 @@ and syntax highlighting.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/oh-my-fish/plugin-foreign-env.git")
+             (url "https://github.com/oh-my-fish/plugin-foreign-env")
              (commit "dddd9213272a0ab848d474d0cbde12ad034e65bc")))
        (file-name (git-file-name name version))
        (sha256
@@ -288,7 +300,7 @@ into fish.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rakitzis/rc.git")
+                    (url "https://github.com/rakitzis/rc")
                     (commit (string-append "v" version))))
               (sha256
                (base32
@@ -732,7 +744,7 @@ The OpenBSD Korn Shell is a cleaned up and enhanced ksh.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dimkr/loksh.git")
+             (url "https://github.com/dimkr/loksh")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -856,12 +868,19 @@ scripts.")
              (sha256
               (base32
                "13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf"))
-             (modules '((guix build utils)))))
+             (modules '((guix build utils)))
+             (snippet
+              '(begin
+                 ;; Allow builds with Guile 3.0.
+                 (substitute* "configure"
+                   (("search=\"2\\.2 2\\.0\"")
+                    "search=\"3.0 2.2 2.0\""))
+                 #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("guile" ,guile-2.2)))
+     `(("guile" ,guile-3.0)))
     (arguments
      '(#:make-flags '("XFAIL_TESTS=tests/redirects.org")))
     (home-page "https://savannah.nongnu.org/projects/gash/")
@@ -882,12 +901,21 @@ as part of the Guix bootstrap process.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))))
+                "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))
+              (patches (search-patches "gash-utils-ls-test.patch"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Allow builds with Guile 3.0.
+                  (substitute* "configure"
+                    (("search=\"2\\.2 2\\.0\"")
+                     "search=\"3.0 2.2 2.0\""))
+                  #t))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("guile" ,guile-2.2)
+     `(("guile" ,guile-3.0)
        ("gash" ,gash)))
     (home-page "https://savannah.nongnu.org/projects/gash/")
     (synopsis "Core POSIX utilities written in Guile Scheme")
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 29e288a402..b1db32a3dc 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -50,7 +50,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/zsh-users/zsh-autosuggestions.git")
+                    (url "https://github.com/zsh-users/zsh-autosuggestions")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -96,7 +96,7 @@ as you type.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/rupa/z.git")
+                    (url "https://github.com/rupa/z")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -194,7 +194,7 @@ are already there.")
     (source
      (origin (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/direnv/direnv.git")
+                   (url "https://github.com/direnv/direnv")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
@@ -248,7 +248,7 @@ environment variables of the current shell.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jhawthorn/fzy.git")
+             (url "https://github.com/jhawthorn/fzy")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -282,7 +282,7 @@ below the current cursor position, scrolling the screen if necessary.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/dvorka/hstr.git")
+                     (url "https://github.com/dvorka/hstr")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -325,7 +325,7 @@ bookmark your favourite commands.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sharkdp/shell-functools.git")
+                    (url "https://github.com/sharkdp/shell-functools")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/simh.scm b/gnu/packages/simh.scm
index bbca246bc1..b911b30b00 100644
--- a/gnu/packages/simh.scm
+++ b/gnu/packages/simh.scm
@@ -33,7 +33,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/simh/simh.git")
+             (url "https://github.com/simh/simh")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1jiq6shj6a9xvzacvmyhxxd6xdyica8q4006qqjh5mh96rxrp15c"))
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index cef5eb90ee..67cf3b3d20 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -295,7 +295,7 @@ systems and other constrained environments, but they work everywhere.")))
 (define-public s6-linux-init
   (package
    (name "s6-linux-init")
-   (version "1.0.4.0")
+   (version "1.0.4.2")
    (source
     (origin
      (method url-fetch)
@@ -303,7 +303,7 @@ systems and other constrained environments, but they work everywhere.")))
            "https://skarnet.org/software/s6-linux-init/s6-linux-init-"
            version ".tar.gz"))
      (sha256
-      (base32 "176mgkqxlp6gb6my66dv73xsp7adfxbjp5hjyh35sykqkr4kfyfy"))))
+      (base32 "0rp4k78555r38ir57a8w9qlxss4x487jqmhpn40ankpidwjs04gm"))))
     (build-system gnu-build-system)
     (inputs
      `(("execline" ,execline)
diff --git a/gnu/packages/sml.scm b/gnu/packages/sml.scm
index d441dcf638..6db8028177 100644
--- a/gnu/packages/sml.scm
+++ b/gnu/packages/sml.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,16 +33,16 @@
 (define-public polyml
   (package
     (name "polyml")
-    (version "5.8")
+    (version "5.8.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/polyml/polyml.git")
+                    (url "https://github.com/polyml/polyml")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jabrf9cnmsppawga6q5pjiq1cdayilxp66fkxykczs6vv2gz7f9"))))
+                "1ag7n55ym1zxksi89dvs17j6iaa58v4mg47s92zpa1b49k4fql1k"))))
     (build-system gnu-build-system)
     (inputs
      `(("gmp" ,gmp)
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
index 8468131ddf..eeb77749d8 100644
--- a/gnu/packages/sqlite.scm
+++ b/gnu/packages/sqlite.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
 
 (define-module (gnu packages sqlite)
   #:use-module (gnu packages)
+  #:use-module (gnu packages hurd)
   #:use-module (gnu packages readline)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -65,6 +67,11 @@
               "1bj936svd8i5g25xd1bj52hj4zca01fgl3sqkj86z9q5pkz4wa32"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
+   (native-inputs (if (hurd-target?)
+                      ;; TODO move into origin on the next rebuild cycle.
+                      `(("hurd-locking-mode.patch"
+                         ,@(search-patches "sqlite-hurd.patch")))
+                      '()))
    (outputs '("out" "static"))
    (arguments
     `(#:configure-flags
@@ -79,6 +86,18 @@
                            ;; Column metadata is required by GNU Jami and Qt, et.al.
                            "-DSQLITE_ENABLE_COLUMN_METADATA"))
       #:phases (modify-phases %standard-phases
+                 ;; TODO: remove in the next rebuild cycle
+                 ,@(if (hurd-target?)
+                       `((add-after 'unpack 'patch-sqlite/hurd
+                           (lambda* (#:key inputs native-inputs
+                                     #:allow-other-keys)
+                             (let ((patch (assoc-ref
+                                           (if ,(%current-target-system)
+                                               native-inputs
+                                               inputs)
+                                           "hurd-locking-mode.patch")))
+                               (invoke "patch" "-p1" "--force" "-i" patch)))))
+                       '())
                  (add-after 'install 'move-static-library
                    (lambda* (#:key outputs #:allow-other-keys)
                      (let* ((out    (assoc-ref outputs "out"))
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index d42971d4f0..50316ea1be 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -70,6 +71,54 @@
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
 
+(define-public hss
+  (package
+    (name "hss")
+    (version "1.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/six-ddc/hss")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1rpysj65j9ls30bf2c5k5hykzzjfknrihs58imp178bx1wqzw4jl"))))
+    (inputs
+     `(("readline" ,readline)))
+    (arguments
+     `(#:make-flags
+       (list ,(string-append "CC=" (cc-for-target))
+             (string-append "INSTALL_BIN=" (assoc-ref %outputs "out") "/bin"))
+       #:tests? #f                      ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-file-names
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("/usr/local/opt/readline")
+                (assoc-ref inputs "readline")))
+             #t))
+         (delete 'configure))))         ; no configure script
+    (build-system gnu-build-system)
+    (home-page "https://github.com/six-ddc/hss/")
+    (synopsis "Interactive SSH client for multiple servers")
+    (description
+     "@command{hss} is an interactive SSH client for multiple servers.  Commands
+are executed on all servers in parallel.  Execution on one server does not need
+to wait for that on another server to finish before starting.  One can run a
+command on hundreds of servers at the same time, with almost the same experience
+as a local Bash shell.
+
+It supports:
+@itemize @bullet
+@item interactive input: based on GNU readline.
+@item history: responding to the @kbd{C-r} key.
+@item auto-completion: @key{TAB}-completion from remote servers for commands and
+file names.
+@end itemize\n")
+    (license license:expat)))
+
 (define-public libssh
   (package
     (name "libssh")
@@ -248,7 +297,7 @@ Additionally, various channel-specific options can be negotiated.")
 (define-public guile-ssh
   (package
     (name "guile-ssh")
-    (version "0.12.0")
+    (version "0.13.0")
     (home-page "https://github.com/artyom-poptsov/guile-ssh")
     (source (origin
               (method git-fetch)
@@ -258,7 +307,7 @@ Additionally, various channel-specific options can be negotiated.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "054hd9rzfhb48gc1hw3rphhp0cnnd4bs5qmidy5ygsyvy9ravlad"))
+                "1q96h98p6x7ah6nc0d2wfx503fmsj36riv9ka9s79z3lzwaf0k26"))
               (modules '((guix build utils)))))
     (build-system gnu-build-system)
     (outputs '("out" "debug"))
@@ -352,26 +401,25 @@ libssh library.")
     (version "2.0")
     (source
      (origin
-       (method url-fetch)
-       ;; The agroman.net domain name expired on 2017-03-23, and the original
-       ;; "http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz" now returns
-       ;; bogus HTML.  Perhaps it will yet return.  Until then, use a mirror.
-       (uri (string-append "https://downloads.openwrt.org/sources/"
-                           "corkscrew-" version ".tar.gz"))
-       (sha256 (base32
-                "1gmhas4va6gd70i2x2mpxpwpgww6413mji29mg282jms3jscn3qd"))))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/patpadgett/corkscrew")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "0g4pkczrc1zqpnxyyjwcjmyzdj5qqcpzwf1bm3965zdwp94bpppf"))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (replace 'configure
            ;; Replace configure phase as the ./configure script does not like
-           ;; CONFIG_SHELL and SHELL passed as parameters
+           ;; CONFIG_SHELL and SHELL passed as parameters.
            (lambda* (#:key outputs build target #:allow-other-keys)
              (let* ((out   (assoc-ref outputs "out"))
                     (bash  (which "bash"))
                     ;; Set --build and --host flags as the provided config.guess
-                    ;; is not able to detect them
+                    ;; is not able to detect them.
                     (flags `(,(string-append "--prefix=" out)
                              ,(string-append "--build=" build)
                              ,(string-append "--host=" (or target build)))))
@@ -381,9 +429,9 @@ libssh library.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (doc (string-append out "/share/doc/" ,name "-" ,version)))
-               (install-file "README" doc)
+               (install-file "README.markdown" doc)
                #t))))))
-    (home-page "http://www.agroman.net/corkscrew")
+    (home-page "https://github.com/patpadgett/corkscrew")
     (synopsis "SSH tunneling through HTTP(S) proxies")
     (description
      "Corkscrew tunnels SSH connections through most HTTP and HTTPS proxies.
@@ -405,6 +453,12 @@ authentication scheme.")
     (arguments
      '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-FHS-file-names
+           (lambda _
+             (substitute* "scripts/mosh.pl"
+               (("/bin/sh")
+                (which "sh")))
+             #t))
          (add-after 'install 'wrap
            (lambda* (#:key outputs #:allow-other-keys)
              ;; Make sure 'mosh' can find 'mosh-client' and
@@ -440,7 +494,7 @@ responsive, especially over Wi-Fi, cellular, and long-distance links.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/MisterTea/EternalTCP.git")
+             (url "https://github.com/MisterTea/EternalTCP")
              (commit (string-append "et-v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -465,7 +519,7 @@ TCP, not the SSH protocol.")
 (define-public dropbear
   (package
     (name "dropbear")
-    (version "2019.78")
+    (version "2020.80")
     (source
      (origin
        (method url-fetch)
@@ -473,7 +527,7 @@ TCP, not the SSH protocol.")
              "https://matt.ucc.asn.au/dropbear/releases/"
              "dropbear-" version ".tar.bz2"))
        (sha256
-        (base32 "19242qlr40pbqfqd0gg6h8qpj38q6lgv03ja6sahj9vj2abnanaj"))))
+        (base32 "0jbrbpdzyv11x5rkljdimzq9p6a7da5siw9k405ibnpjj4dr89yr"))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f))  ; there is no "make check" or anything similar
     ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
@@ -773,7 +827,7 @@ of existing remote shell facilities such as SSH.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/skeeto/endlessh.git")
+              (url "https://github.com/skeeto/endlessh")
               (commit version)))
         (file-name (git-file-name name version))
         (sha256
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 8be3fbfd89..c004e8c21c 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -89,7 +89,8 @@ fundamental object types for C.")
                                   "sssd-" version ".tar.gz"))
               (sha256
                (base32
-                "1h6hwibaf3xa2w6qpzjiiywmfj6zkgbz4r2isf3gd0xm6vq7n6if"))))
+                "1h6hwibaf3xa2w6qpzjiiywmfj6zkgbz4r2isf3gd0xm6vq7n6if"))
+              (patches (search-patches "sssd-fix-samba.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 9e613cd63a..904727df2b 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -160,14 +160,14 @@ simulation not wholly unlike BUGS.  JAGS was written with three aims in mind:
 (define-public libxls
   (package
     (name "libxls")
-    (version "1.5.2")
+    (version "1.5.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/libxls/libxls/releases/download/"
                            "v" version "/libxls-" version ".tar.gz"))
        (sha256
-        (base32 "1akadsyl10rp101ccjmrxr7933c3v641k377bn74jv6cdkcm4zld"))))
+        (base32 "0rl513wpq5qh7wkmdk4g9c68rzffv3mcbz48p4xyg4969zrx8lnm"))))
     (build-system gnu-build-system)
     (home-page "https://github.com/libxls/libxls")
     (synopsis "Read binary (.xls) Excel spreadsheet files")
@@ -184,7 +184,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
 (define r-with-tests
   (package
     (name "r-with-tests")
-    (version "4.0.1")
+    (version "4.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -192,7 +192,7 @@ This package also provides @command{xls2csv} to export Excel files to CSV.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ckgpihkih4b44rx48hpg9p6bv0w67j5z3qc8s4giy6qv2j29zlm"))))
+                "0xdy3dy2bzdiba8z94hjykyra8si8a5q15s0bri7c26scjrymg6k"))))
     (build-system gnu-build-system)
     (arguments
      `(#:disallowed-references (,tzdata-for-tests)
@@ -1097,13 +1097,13 @@ using just two functions: melt and dcast (or acast).")
 (define-public r-ggplot2
   (package
     (name "r-ggplot2")
-    (version "3.3.1")
+    (version "3.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggplot2" version))
        (sha256
-        (base32 "04wvswadlry2n9gnfqlpdqsav1wllnlzb5c9w9ydynllv4vkwfm0"))))
+        (base32 "0wsib5qpzn4d0w1ss3x158xmrawkms8vvsfvr3mh40pvd8g2ibad"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -1187,19 +1187,21 @@ and to generate base64 encoded string from raster matrix.")
 (define-public r-svglite
   (package
     (name "r-svglite")
-    (version "1.2.3")
+    (version "1.2.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "svglite" version))
        (sha256
         (base32
-         "1zivykbi1pxdxhrkc1if1ihdn5p27j0nai2q0abca1dwry3wg2yl"))))
+         "00n8bg4iligl0h24v42cka417w26zmcxrr4r6k8wdal1riwhgmi5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-bh" ,r-bh)
        ("r-gdtools" ,r-gdtools)
        ("r-rcpp" ,r-rcpp)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/hadley/svglite")
     (synopsis "SVG graphics device")
     (description
@@ -1410,13 +1412,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.")
 (define-public r-knitr
   (package
     (name "r-knitr")
-    (version "1.28")
+    (version "1.29")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "knitr" version))
               (sha256
                (base32
-                "0ai382fmpz25qrhdgchs3vph2cdvyd73xyryg4jby5fp67d03vh5"))))
+                "00rcwiq8znmk5h4qgrwd0639xyb38iwbjykqjk3disz3kvrcvbn1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-evaluate" ,r-evaluate)
@@ -1617,13 +1619,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.4.6")
+    (version "0.4.7")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "1jik4lywg4688dfi5fh8jbnmsxvq3382ii0nsw5armjzfq3v309s"))))
+                "0f4rhnhyhgrv874l0yzm80ij6vcqdykfd7bzmnqs0wbgyhkxk8vq"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1635,14 +1637,14 @@ like tidy evaluation.")
 (define-public r-tibble
   (package
     (name "r-tibble")
-    (version "3.0.1")
+    (version "3.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tibble" version))
        (sha256
         (base32
-         "17m7xvn423snq9dmr0bhx42j5rbc53w1viizxx4bvq37nz7m4i8m"))))
+         "0f4yi87w6509lnaz1lhk9s8nm3bzx21ij3273s0zx7vpbp0qlxxz"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cli" ,r-cli)
@@ -2094,14 +2096,14 @@ limited to R.")
 (define-public r-backports
   (package
     (name "r-backports")
-    (version "1.1.7")
+    (version "1.1.8")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "backports" version))
        (sha256
         (base32
-         "02vfkqm1kw54y1qax8cmiyg2nk6bmh8j87fc3j22k7852s3y4xxj"))))
+         "1irc9c23hwliwkky1b3hi0dkzwalhb7zgjj08562ff1k8dqv4qf6"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/backports")
     (synopsis "Reimplementations of functions introduced since R 3.0.0")
@@ -2282,13 +2284,13 @@ tables, autolinks and strikethrough text.")
 (define-public r-roxygen2
   (package
     (name "r-roxygen2")
-    (version "7.1.0")
+    (version "7.1.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "roxygen2" version))
               (sha256
                (base32
-                "00s1wzx5960k8pzgpz4kikjf4k061hyhnd278y65q6n0wzv3d6vy"))))
+                "0qc8akwfwmaqsjaza87f5fi0zk6sh3l6j3assbs6chvx0gnmvidx"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-brew" ,r-brew)
@@ -2304,6 +2306,8 @@ tables, autolinks and strikethrough text.")
        ("r-stringi" ,r-stringi)
        ("r-stringr" ,r-stringr)
        ("r-xml2" ,r-xml2)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://github.com/klutometis/roxygen")
     (synopsis "In-source documentation system for R")
     (description
@@ -2314,19 +2318,20 @@ collation, and NAMESPACE files.")
 (define-public r-openssl
   (package
     (name "r-openssl")
-    (version "1.4.1")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "openssl" version))
        (sha256
         (base32
-         "1ihz2qi33lhngl19xdanq0pbmfaacy63794mg8ll7z2lab3yryzp"))))
+         "17fkc6pr8w5z3rpadg692a689p1v4j7xl5ak0y64is7c74cxgljx"))))
     (build-system r-build-system)
     (inputs
      `(("libressl" ,libressl)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("r-knitr" ,r-knitr)))
     (propagated-inputs
      `(("r-askpass" ,r-askpass)))
     (home-page "https://github.com/jeroenooms/openssl")
@@ -2683,13 +2688,13 @@ certain criterion, e.g., it contains a certain regular file.")
 (define-public r-rmarkdown
   (package
     (name "r-rmarkdown")
-    (version "2.2")
+    (version "2.3")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "rmarkdown" version))
         (sha256
-          (base32 "196r3hq1gcr6iamxllq4k40cb109b16ng24ky0q68bwrll80q1mh"))))
+          (base32 "0vdjq4kcyxkr2m27588kk6yi5g53symjshj4jz4n0j18wz53shji"))))
     (properties `((upstream-name . "rmarkdown")))
     (build-system r-build-system)
     (propagated-inputs
@@ -2871,13 +2876,13 @@ ldap, and also supports cookies, redirects, authentication, etc.")
 (define-public r-xml
   (package
     (name "r-xml")
-    (version "3.99-0.3")
+    (version "3.99-0.4")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "XML" version))
               (sha256
                (base32
-                "0lzpqwajs5xaqdna50vl24qkp9xvh00zypjjzy6kgdzk11isgdw1"))))
+                "1bw6wr17gp0vdnxc5hip47n15nhxwacin3a5992sc7yfb55kaxm5"))))
     (properties
      `((upstream-name . "XML")))
     (build-system r-build-system)
@@ -2994,14 +2999,14 @@ statements.")
 (define-public r-segmented
   (package
     (name "r-segmented")
-    (version "1.1-0")
+    (version "1.2-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "segmented" version))
        (sha256
         (base32
-         "06cxdrqgnpk5fvbam5i7qa4n71wry0yvlj0jpwbxf267mvpx10fh"))))
+         "0r83p36l6m5sy4lxfjbfajn4gcqb0wv9zh7arny02s6c7fb4756y"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/segmented")
     (synopsis "Regression models with breakpoints estimation")
@@ -3154,13 +3159,13 @@ using the multicore functionality of the parallel package.")
 (define-public r-dt
   (package
     (name "r-dt")
-    (version "0.13")
+    (version "0.14")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "DT" version))
               (sha256
                (base32
-                "1db35mi4m4q3kha4vhvh693bv04y7h9pdawhsx8f234qjvz7783r"))))
+                "0xhinw7wasrai5wfswp3r48qfv7ppdfd9jc7py2rp63dn0bnvbab"))))
     (properties
      `((upstream-name . "DT")))
     (build-system r-build-system)
@@ -3233,13 +3238,13 @@ analysis of large sparse or dense matrices.")
 (define-public r-glmnet
   (package
    (name "r-glmnet")
-   (version "4.0")
+   (version "4.0-2")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "glmnet" version))
      (sha256
-      (base32 "1vy8v6filhw9sflk8wwnbgz2mryg70ml4iq4y1c34dlwxczcbzv8"))))
+      (base32 "0qdswxvdwjcnw0by15p9yfzw8laq4f2j0ivpma6q8c5zywldpxxc"))))
    (build-system r-build-system)
    (native-inputs
     `(("gfortran" ,gfortran)
@@ -3247,7 +3252,8 @@ analysis of large sparse or dense matrices.")
    (propagated-inputs
     `(("r-foreach" ,r-foreach)
       ("r-matrix" ,r-matrix)
-      ("r-shape" ,r-shape)))
+      ("r-shape" ,r-shape)
+      ("r-survival" ,r-survival)))
    (home-page "https://www.jstatsoft.org/article/view/v033i01")
    (synopsis "Lasso and elastic-net regularized generalized linear models")
    (description
@@ -3545,13 +3551,13 @@ persistent (on the file system).")
 (define-public r-r-rsp
   (package
     (name "r-r-rsp")
-    (version "0.43.2")
+    (version "0.44.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "R.rsp" version))
               (sha256
                (base32
-                "128zqyvbq9hm9gy86jzhj609lkfw57vr24mdxgh46ncmx66ag4gj"))))
+                "0n9sxrffahgxcc8h9vgxg5i446g14cibixpf82nkpm5bvidhfsc9"))))
     (properties `((upstream-name . "R.rsp")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4211,20 +4217,22 @@ including:
 (define-public r-gplots
   (package
     (name "r-gplots")
-    (version "3.0.3")
+    (version "3.0.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gplots" version))
        (sha256
         (base32
-         "0hs6mk48i9yd43rg9wfjc2nxsjjwrnpifxqvxkv8ah18kvpd6xnp"))))
+         "15ip3v4xiqzbanf8bc5fj90cbwdgixr72aj5jrp34jfdzdx0gxwg"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-catools" ,r-catools)
        ("r-gdata" ,r-gdata)
        ("r-gtools" ,r-gtools)
        ("r-kernsmooth" ,r-kernsmooth)))
+    (native-inputs
+     `(("r-knitr" ,r-knitr)))
     (home-page "https://cran.r-project.org/web/packages/gplots")
     (synopsis "Various R programming tools for plotting data")
     (description
@@ -4280,26 +4288,6 @@ plot can be quickly adjusted using a flexible parameter dispatching
 mechanism.")
     (license license:gpl2+)))
 
-(define-public r-zoo
-  (package
-    (name "r-zoo")
-    (version "1.8-8")
-    (source (origin
-              (method url-fetch)
-              (uri (cran-uri "zoo" version))
-              (sha256
-               (base32
-                "1rrw431jwaxd9xljp73f15rhcxvwc0xlyrmr0ghi5fj7a03c932f"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-lattice" ,r-lattice)))
-    (home-page "http://zoo.R-Forge.R-project.org/")
-    (synopsis "S3 infrastructure for regular and irregular time series")
-    (description "This package contains an S3 class with methods for totally
-ordered indexed observations.  It is particularly aimed at irregular time
-series of numeric vectors/matrices and factors.")
-    (license license:gpl2+)))
-
 (define-public r-ztable
   (package
     (name "r-ztable")
@@ -4860,14 +4848,14 @@ estimation and robust multivariate analysis with high breakdown point.")
 (define-public r-fit-models
   (package
     (name "r-fit-models")
-    (version "0.5-14")
+    (version "0.63")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fit.models" version))
        (sha256
         (base32
-         "0vjbzmx0ambm6yzidb4vbgmhclwzwv2iz2cwl54ccdkvx4cx3fck"))))
+         "0wrrfsgngsfrqnm247f0h6g01807i7lbf5chpyx7hkfdfmm4xbxn"))))
     (properties `((upstream-name . "fit.models")))
     (build-system r-build-system)
     (propagated-inputs
@@ -4937,14 +4925,14 @@ of the points.")
 (define-public r-fpc
   (package
     (name "r-fpc")
-    (version "2.2-5")
+    (version "2.2-7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fpc" version))
        (sha256
         (base32
-         "10504hzivbn89ip0cd5bcxd36ivbgin1lw1xhyh3xfckcm25v1a5"))))
+         "1xnp3j36hggfg675v39mnr6rgvp7i11pfng7nmyy3k2ldgklz0j9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)
@@ -5106,18 +5094,19 @@ using modular prediction and response module classes.")
 (define-public r-quantreg
   (package
     (name "r-quantreg")
-    (version "5.55")
+    (version "5.61")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "quantreg" version))
        (sha256
-        (base32 "1zjc8p95kb0ypxa6nxp0lkdq8armkjmmhf8484m25n5f14a59qfb"))))
+        (base32 "0kby1crnzkdg5sczwqapfpkr58apyzrrx85khigcqggmhhwl44wk"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
     (propagated-inputs
-     `(("r-matrix" ,r-matrix)
+     `(("r-conquer" ,r-conquer)
+       ("r-matrix" ,r-matrix)
        ("r-matrixmodels" ,r-matrixmodels)
        ("r-sparsem" ,r-sparsem)))
     (home-page "https://www.r-project.org")
@@ -5133,14 +5122,14 @@ expected shortfall risk are also included.")
 (define-public r-nloptr
   (package
     (name "r-nloptr")
-    (version "1.2.2.1")
+    (version "1.2.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "nloptr" version))
        (sha256
         (base32
-         "1bhh2v14phzndjhiq7yw9vych6vzn5yy3vk9q35zcp3jhjjbwdyh"))))
+         "0whkilb85k4wixvr3k7rygfw1rcs1fs9h8c18kz4p3y1k9hsj3p8"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr) ; for building vignettes
@@ -5321,14 +5310,14 @@ normals.")
 (define-public r-mnormt
   (package
     (name "r-mnormt")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
         (uri (cran-uri "mnormt" version))
         (sha256
           (base32
-           "1gxhma0zqsx5pkc0871vszq1y7akwdmpm8rhws5b3gr6w9mx4agf"))))
+           "00nn0b6nksn2jbpg0np5wphryp4f9v95vqxf5v628yysnawgkcwq"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-tmvnsim" ,r-tmvnsim)))
@@ -5461,14 +5450,14 @@ genome-wide association studies can be analyzed efficiently.")
 (define-public r-cairo
   (package
     (name "r-cairo")
-    (version "1.5-12")
+    (version "1.5-12.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Cairo" version))
        (sha256
         (base32
-         "02v29am4fac3fyq6y1w6r89zwbqqkxjsxrafcwb5s124ikxyl22f"))))
+         "14hgz5wmnhlbqkd1g662n1agmjnlj3pq69gfng1vb0ivr02l2lnx"))))
     (properties `((upstream-name . "Cairo")))
     (build-system r-build-system)
     (inputs
@@ -5637,30 +5626,6 @@ tools.")
 parameters.")
       (license license:gpl3))))
 
-(define-public r-directlabels
-  (package
-    (name "r-directlabels")
-    (version "2020.1.31")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (cran-uri "directlabels" version))
-       (sha256
-        (base32
-         "08s1gnwp4bn8xahwjaq0f1qzhwh2dvybzhq3z7xyzn8cnyzmis6c"))))
-    (build-system r-build-system)
-    (propagated-inputs
-     `(("r-quadprog" ,r-quadprog)))
-    (home-page "http://directlabels.r-forge.r-project.org/")
-    (synopsis "Direct labels for multicolor plots")
-    (description
-     "This package provides an extensible framework for automatically placing
-direct labels onto multicolor plots.  Label positions are described using
-positioning methods that can be re-used across several different plots.  There
-are heuristics for examining @code{trellis} and @code{ggplot} objects and
-inferring an appropriate positioning method.")
-    (license license:gpl3)))
-
 (define-public r-catterplots
   (let ((commit "ae17cd5e49ddda4ecfe0eba8a4c21df8c88e72c4")
         (revision "3"))
@@ -5670,7 +5635,7 @@ inferring an appropriate positioning method.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/Gibbsdavidl/CatterPlots.git")
+                      (url "https://github.com/Gibbsdavidl/CatterPlots")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -5693,7 +5658,7 @@ shaped points?  Now you can!")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jalvesaq/colorout.git")
+             (url "https://github.com/jalvesaq/colorout")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5902,24 +5867,3 @@ Java package that provides routines for various statistical distributions.")
 Emacs.  It is designed to support editing of scripts and interaction with
 various statistical analysis programs such as R, Julia, and JAGS.")
     (license license:gpl2+)))
-
-(define-public r-boruta
-  (package
-    (name "r-boruta")
-    (version "7.0.0")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (cran-uri "Boruta" version))
-        (sha256
-          (base32
-            "0y2w4wb45kfnzrxcrdsiwgal9fsnlr3wad1sqdc70qv8gp921xbg"))))
-    (properties `((upstream-name . "Boruta")))
-    (build-system r-build-system)
-    (propagated-inputs `(("r-ranger" ,r-ranger)))
-    (home-page "https://gitlab.com/mbq/Boruta/")
-    (synopsis
-      "Wrapper Algorithm for All Relevant Feature Selection")
-    (description
-      "An all relevant feature selection wrapper algorithm.  It finds relevant features by comparing original attributes' importance with importance achievable at random, estimated using their permuted copies (shadows).")
-    (license license:gpl2+)))
diff --git a/gnu/packages/stenography.scm b/gnu/packages/stenography.scm
new file mode 100644
index 0000000000..c462deacfa
--- /dev/null
+++ b/gnu/packages/stenography.scm
@@ -0,0 +1,65 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages stenography)
+  #:use-module (guix build-system python)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages libusb)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages wxwidgets))
+
+(define-public plover
+  (package
+    (name "plover")
+    (version "3.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/openstenoproject/plover")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "114rlxvq471fyifwcdcgdad79ak7q3w2lk8z9nqhz1i9fg05721c"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("python2-mock" ,python2-mock)
+       ("python2-pytest" ,python2-pytest)
+       ("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (inputs
+     `(("python2-appdirs" ,python2-appdirs)
+       ("python2-dbus" ,python2-dbus)
+       ("python2-hidapi" ,python2-hidapi)
+       ("python2-pyserial" ,python2-pyserial)
+       ("python2-wxpython" ,python2-wxpython)
+       ("python2-xlib" ,python2-xlib)))
+    (home-page "https://www.openstenoproject.org/plover/")
+    (synopsis "Stenography engine")
+    (description
+     "Plover (rhymes with @emph{lover}) is a desktop application that
+allows anyone to use stenography to write on their computer, up to
+speeds of 200WPM and beyond.")
+    (license license:gpl2+)))
+
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 481ffade5c..b7d4056635 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,6 +41,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages pkg-config)
@@ -53,14 +55,14 @@
 (define-public ceph
   (package
     (name "ceph")
-    (version "14.2.9")
+    (version "14.2.10")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0zkh1a23v8g1fa5flqa2d53lv08ancab3li57gybpqpnja90k7il"))
+                "0bbs3ag8zav283qpxrrndhvh2z01ykm6126fmwrbc1c5f9jfjq39"))
               (patches
                (search-patches "ceph-disable-cpu-optimizations.patch"))
               (modules '((guix build utils)))
@@ -73,7 +75,7 @@
                               ;"src/xxHash"
                               ;"src/zstd"
                               ;"src/civetweb"
-                              "src/seastar/fmt"
+                              ;"src/seastar/fmt"
                               "src/test/downloads"
                               "src/c-ares"
                               "src/googletest"
@@ -213,6 +215,7 @@
        ("libatomic-ops" ,libatomic-ops)
        ("libcap-ng" ,libcap-ng)
        ("libnl" ,libnl)
+       ("librdkafka" ,librdkafka)
        ("lua" ,lua)
        ("lz4" ,lz4)
        ("oath-toolkit" ,oath-toolkit)
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index c10226bb32..51a82a58d9 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -229,14 +229,14 @@ numbers of user-defined menu items efficiently.")
 (define-public st
   (package
     (name "st")
-    (version "0.8.3")
+    (version "0.8.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.suckless.org/st/st-"
                            version ".tar.gz"))
        (sha256
-        (base32 "0ll5wbw1szs70wdf8zy1y2ig5mfbqw2w4ls8d64r8z3y4gdf76lk"))))
+        (base32 "19j66fhckihbg30ypngvqc9bcva47mp379ch5vinasjdxgn3qbfl"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index c4bc5dd82f..9f1c5e349f 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -64,7 +64,7 @@
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/meganz/MEGAcmd.git")
+              (url "https://github.com/meganz/MEGAcmd")
               (commit (string-append version "_Linux"))
               (recursive? #t)))
         (sha256
@@ -266,7 +266,7 @@ their folder.
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/axkibe/lsyncd.git")
+             (url "https://github.com/axkibe/lsyncd")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -360,14 +360,14 @@ over the Internet in an HTTP and CDN friendly way;
 (define-public rclone
   (package
     (name "rclone")
-    (version "1.52.1")
+    (version "1.52.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/rclone/rclone/releases/download/"
                            "v" version "/rclone-v" version ".tar.gz"))
        (sha256
-        (base32 "0lvmm3qpdix4mnip1dfyawsdvzbcdxw0b0zz7xbgmicbfv1vlpx9"))))
+        (base32 "1y0ysdbqqb1dj8daziwwhz531c7kfr7f9fsvc7xyg4ysppz1qxfq"))))
     ;; FIXME: Rclone bundles some libraries Guix already provides.  Need to
     ;; un-bundle them.
     (build-system go-build-system)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 99bdd7704b..e6a8ab4d31 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -531,7 +531,11 @@ higher-level API for doing so.")
                   "1hfxffnpaw49pr3wrkbzq3pnv3nyzsvk5dxndv0yz70xlrbg8a04"))))
       (build-system go-build-system)
       (arguments
-       `(#:import-path "github.com/rcrowley/go-metrics"))
+       ;; Arbitrary precision tests are known to be broken on aarch64, ppc64le
+       ;; and s390x. See: https://github.com/rcrowley/go-metrics/issues/249
+       `(#:tests? ,(not (string-prefix? "aarch64" (or (%current-target-system)
+                                                      (%current-system))))
+         #:import-path "github.com/rcrowley/go-metrics"))
       (propagated-inputs
        `(("go-github-com-stathat-go" ,go-github-com-stathat-go)))
       (synopsis "Go port of Coda Hale's Metrics library")
@@ -659,7 +663,7 @@ inherent errors.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/chmduquesne/rollinghash.git")
+                 (url "https://github.com/chmduquesne/rollinghash")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -683,7 +687,7 @@ hashes.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/petermattis/goid.git")
+                       (url "https://github.com/petermattis/goid")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -707,7 +711,7 @@ the current goroutine's ID.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/kballard/go-shellquote.git")
+                       (url "https://github.com/kballard/go-shellquote")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -757,7 +761,7 @@ notification library in Go.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/beorn7/perks.git")
+                       (url "https://github.com/beorn7/perks")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -783,7 +787,7 @@ bounds.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/prometheus/client_model.git")
+                       (url "https://github.com/prometheus/client_model")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -816,7 +820,7 @@ bounds.")
           (method git-fetch)
           (uri
             (git-reference
-              (url "https://github.com/matttproud/golang_protobuf_extensions.git")
+              (url "https://github.com/matttproud/golang_protobuf_extensions")
               (commit commit)))
           (file-name (git-file-name name version))
           (sha256
@@ -843,7 +847,7 @@ message streaming.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/prometheus/common.git")
+                       (url "https://github.com/prometheus/common")
                        (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
@@ -886,7 +890,7 @@ Prometheus metrics.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/prometheus/procfs.git")
+                       (url "https://github.com/prometheus/procfs")
                        (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
@@ -911,7 +915,7 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/prometheus/client_golang.git")
+                       (url "https://github.com/prometheus/client_golang")
                        (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
@@ -998,7 +1002,7 @@ language.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                       (url "https://github.com/flynn-archive/go-shlex.git")
+                       (url "https://github.com/flynn-archive/go-shlex")
                        (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -1021,7 +1025,7 @@ quoting, commenting, and escaping.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/AudriusButkevicius/pfilter.git")
+               (url "https://github.com/AudriusButkevicius/pfilter")
                (commit version)))
         (file-name (git-file-name name version))
         (sha256
@@ -1046,7 +1050,7 @@ virtual connections from a single physical connection.")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://github.com/ccding/go-stun.git")
+                 (url "https://github.com/ccding/go-stun")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index da3f852c05..3d858240b7 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -99,15 +99,15 @@ file system, and many more features.")
 (define-public liferea
   (package
     (name "liferea")
-    (version "1.12.6")
+    (version "1.12.8")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lwindolf/liferea/"
                            "releases/download/v" version "/liferea-"
-                           version "b.tar.bz2"))
+                           version ".tar.bz2"))
        (sha256
-        (base32 "03pr1gmiv5y0i92bkhcxr8s311ll91chz19wb96jkixx32xav91d"))))
+        (base32 "1xm5if831llkjcmbq4w9ssgqjgy3zlb5n9y7kh54xpy6afafbsh7"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index 739ea3bd75..1f8f8f351e 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -37,17 +37,17 @@
 (define-public synergy
   (package
     (name "synergy")
-    (version "1.11.0")
+    (version "1.11.1")
     (source
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/symless/synergy-core.git")
-            (commit (string-append version "-stable"))))
+            (url "https://github.com/symless/synergy-core")
+            (commit (string-append "v" version "-stable"))))
       (file-name (git-file-name name version))
       (sha256
        (base32
-        "1jk60xw4h6s5crha89wk4y8rrf1f3bixgh5mzh3cq3xyrkba41gh"))
+        "0dn0h3mdqy0mbg4yyhsh4rhvvsssqlknnln3naplc97my10lk2a0"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove unnecessary bundled source and binaries
@@ -65,7 +65,15 @@
                      (string-append (assoc-ref inputs "avahi")
                                     "/include/avahi-compat-libdns_sd:"
                                     (or (getenv "CPLUS_INCLUDE_PATH") "")))
-             #t)))))
+             #t))
+         (add-after 'install 'patch-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* (string-append out "/share/applications/synergy.desktop")
+                 (("/usr") out))
+               #t))))))
+    (native-inputs
+     `(("qttools" ,qttools)))           ; for Qt5LinguistTools
     (inputs
      `(("avahi" ,avahi)
        ("python"  ,python-wrapper)
@@ -74,7 +82,6 @@
        ("libxi"   ,libxi)
        ("libx11"  ,libx11)
        ("libxtst" ,libxtst)
-       ("xinput"  ,xinput)
        ("qtbase" ,qtbase)))
     (home-page "https://symless.com/synergy")
     (synopsis "Mouse and keyboard sharing utility")
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 4c84ddc85a..4c5e4d5d78 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -102,7 +102,7 @@
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/TimothyGu/libilbc.git")
+         (url "https://github.com/TimothyGu/libilbc")
          (commit
           (string-append "v" version))))
        (file-name
@@ -297,7 +297,7 @@ packet-manipulation library.")
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/wernerd/ZRTPCPP.git")
+         (url "https://github.com/wernerd/ZRTPCPP")
          (commit
           (string-append "V" version))))
        (file-name
@@ -588,6 +588,16 @@ address of one of the participants.")
              (substitute* "src/mumble/Settings.cpp"
                (("bUsage = true;") "bUsage = false;"))
              #t))
+         (add-before 'configure 'fix-mumble-overlay
+           (lambda* (#:key outputs #:allow-other-keys)
+              (with-output-to-file "scripts/mumble-overlay"
+                (lambda ()
+                  (format #t "#!~a~%" (which "bash"))
+                  (format #t "export LD_PRELOAD=\"~a $LD_PRELOAD\"~%"
+                          (string-append (assoc-ref outputs "out")
+                                         "/lib/mumble/libmumble.so.1"))
+                  (format #t "exec \"${@}\"")))
+              #t))
          (add-before 'install 'disable-murmur-ice
            (lambda _
              (substitute* "scripts/murmur.ini.system"
@@ -717,7 +727,7 @@ your calls and messages.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pjsip/pjproject.git")
+             (url "https://github.com/pjsip/pjproject")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -803,7 +813,7 @@ Initiation Protocol (SIP) and a multimedia framework.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/grishka/libtgvoip.git")
+             (url "https://github.com/grishka/libtgvoip")
              (commit version)))
        (file-name (git-file-name name version))
        ;; Fix compilation on i686-linux architecture.
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index b587cbd90e..2ece7e7fde 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -94,7 +94,7 @@
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lanoxx/tilda.git")
+                    (url "https://github.com/lanoxx/tilda")
                     (commit (string-append "tilda-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -365,7 +365,7 @@ combining, and so on, with a simple interface.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/npat-efault/picocom.git")
+                    (url "https://github.com/npat-efault/picocom")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -407,7 +407,7 @@ to all types of devices that provide serial consoles.")
              ;; unmaintained for some time, and vulnerable to at least two CVEs:
              ;; https://github.com/johnath/beep/issues/11#issuecomment-454056858
              ;; Use this maintained fork instead.
-             (url "https://github.com/spkr-beep/beep.git")
+             (url "https://github.com/spkr-beep/beep")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -438,7 +438,7 @@ has no notion of what's interesing, but it's very good at that notifying part.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mauke/unibilium.git")
+             (url "https://github.com/mauke/unibilium")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -708,7 +708,7 @@ desktop installed to have a decent terminal emulator.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/nsf/termbox-go.git")
+                      (url "https://github.com/nsf/termbox-go")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -766,7 +766,7 @@ usable with any list--including files, command history, processes and more.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/howeyc/gopass.git")
+                      (url "https://github.com/howeyc/gopass")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -902,7 +902,7 @@ per-line fullscreen terminal rendering, and keyboard input event reporting.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tmate-io/tmate.git")
+             (url "https://github.com/tmate-io/tmate")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -934,7 +934,7 @@ tmux.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/kovidgoyal/kitty.git")
+             (url "https://github.com/kovidgoyal/kitty")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1041,7 +1041,7 @@ comfortably in a pager or editor.
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/MisterTea/EternalTerminal.git")
+               (url "https://github.com/MisterTea/EternalTerminal")
                (commit (string-append "et-v" version))))
         (file-name (git-file-name name version))
        (sha256
@@ -1081,7 +1081,7 @@ while also supporting native scrolling and @command{tmux} control mode
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/majestrate/wterm.git")
+             (url "https://github.com/majestrate/wterm")
              (commit "0ae42717c08a85a6509214e881422c7fbe7ecc45")))
        (sha256
          (base32
@@ -1137,7 +1137,7 @@ made by suckless.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/jwilm/alacritty.git")
+             (url "https://github.com/jwilm/alacritty")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1207,7 +1207,7 @@ made by suckless.")
         ("rust-embed-resource" ,rust-embed-resource-1.3)
         ("rust-http-req" ,rust-http-req-0.5)
         ("rust-zip" ,rust-zip-0.5)
-        ("rust-tempfile" ,rust-tempfile-3.1)
+        ("rust-tempfile" ,rust-tempfile-3)
         ("rust-named-pipe" ,rust-named-pipe-0.4)
         ("rust-winapi" ,rust-winapi-0.3))
        #:phases
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 47645a3e34..c4f9f6cfb7 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2020 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -35,6 +35,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system qt)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system texlive)
@@ -3093,7 +3094,7 @@ this bundle for use independent of ConTeXt.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lualatex/luaotfload.git")
+                    (url "https://github.com/lualatex/luaotfload")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -6005,22 +6006,30 @@ other things it comes with full Unicode support.")
 (define-public rubber
   (package
     (name "rubber")
-    (version "1.1")
+    (version "1.5.1")
     (source (origin
-             (method url-fetch)
-             (uri (list (string-append "https://launchpad.net/rubber/trunk/"
-                                       version "/+download/rubber-"
-                                       version ".tar.gz")
-                        (string-append "http://ebeffara.free.fr/pub/rubber-"
-                                       version ".tar.gz")))
-             (sha256
-              (base32
-               "1xbkv8ll889933gyi2a5hj7hhh216k04gn8fwz5lfv5iz8s34gbq"))))
-    (build-system gnu-build-system)
-    (arguments '(#:tests? #f))                    ; no `check' target
+              (method url-fetch)
+              (uri (list (string-append "https://launchpad.net/rubber/trunk/"
+                                        version "/+download/rubber-"
+                                        version ".tar.gz")
+                         (string-append "http://ebeffara.free.fr/pub/rubber-"
+                                        version ".tar.gz")))
+              (sha256
+               (base32
+                "178dmrp0mza5gqjiqgk6dqs0c10s0c517pk6k9pjbam86vf47a1p"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f ; no `check' target
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; texlive is required to build the PDF documentation; do not
+             ;; build it.
+             (invoke "python" "setup.py" "build" "--pdf=False" "install"
+                     (string-append "--prefix=" (assoc-ref outputs "out"))))))))
     (native-inputs `(("texinfo" ,texinfo)))
-    (inputs `(("python" ,python-2) ; incompatible with Python 3 (print syntax)
-              ("which" ,which)))
     (home-page "https://launchpad.net/rubber")
     (synopsis "Wrapper for LaTeX and friends")
     (description
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 839cd73d6c..b53b56fbf2 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -250,7 +250,7 @@ Texi2HTML.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/baszoetekouw/pinfo.git")
+                    (url "https://github.com/baszoetekouw/pinfo")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 924dc68c03..c3ee8cfdd0 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -502,7 +502,7 @@ scripts/input/X11/C/Shell/HTML/Dired): 49KB.
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/wereturtle/ghostwriter.git")
+                    (url "https://github.com/wereturtle/ghostwriter")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -559,7 +559,7 @@ environment with Markdown markup.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/olivierkes/manuskript.git")
+             (url "https://github.com/olivierkes/manuskript")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -661,7 +661,7 @@ in plain text file format.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/editorconfig/editorconfig-core-c.git")
+               (url "https://github.com/editorconfig/editorconfig-core-c")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -903,7 +903,7 @@ card.  It offers:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vigna/ne.git")
+                    (url "https://github.com/vigna/ne")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index b6732dbae1..3c765aa887 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
-;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
@@ -200,7 +200,7 @@ encoding, supporting Unicode version 9.0.0.")
 (define-public libconfuse
   (package
     (name "libconfuse")
-    (version "3.2.2")
+    (version "3.3")
     (source
      (origin
        (method url-fetch)
@@ -208,8 +208,10 @@ encoding, supporting Unicode version 9.0.0.")
                            "releases/download/v" version
                            "/confuse-" version ".tar.xz"))
        (sha256
-        (base32 "02r1mmzik2m0iigbc2da3y754vj24i18r3ml5p2wzs027mjhn959"))))
+        (base32 "043hqqykpprgrkw9s2hbdlxr308a7yxwsgxj4m8aadg1401hmm8x"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     (home-page "https://github.com/martinh/libconfuse")
     (synopsis "Configuration file parser library")
     (description "libconfuse is a configuration file parser library.  It
@@ -257,7 +259,7 @@ the Hannon Lab.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/google/cityhash.git")
+                      (url "https://github.com/google/cityhash")
                       (commit commit)))
                 (file-name (string-append name "-" version ".tar.gz"))
                 (sha256
@@ -708,7 +710,7 @@ categories.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/williamh/dotconf.git")
+                    (url "https://github.com/williamh/dotconf")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -876,7 +878,7 @@ source code.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/aflc/editdistance.git")
+               (url "https://github.com/aflc/editdistance")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -1085,7 +1087,7 @@ Mainland China, Taiwan, and Hong-Kong.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/nurse/nkf.git")
+                      (url "https://github.com/nurse/nkf")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 6eefb6c525..e396412e47 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
@@ -140,14 +140,13 @@ saving time.  Almost all of the Olson timezones are supported.")
 (define-public python-pendulum
   (package
     (name "python-pendulum")
-    (version "2.1.0")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pendulum" version))
        (sha256
-        (base32
-         "1zhzk0ai8is8zclw4v73dllf0hx0l5nmm4sbwrh6cl8h5qsang09"))))
+        (base32 "1w4an6ki3l1pc36m2f2xiglaw5czmj9b4imbigln9z6mlnkkjxyr"))))
     (build-system python-build-system)
     ;; XXX: The PyPI distribution lacks tests, and the upstream repository
     ;; lacks a setup.py!
@@ -247,7 +246,7 @@ datetime module, available in Python 2.3+.")
        (method git-fetch)
        ;; The PyPi distribution doesn't include the tests.
        (uri (git-reference
-             (url "https://github.com/closeio/ciso8601.git")
+             (url "https://github.com/closeio/ciso8601")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 37f62c95bf..408a9e1e67 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -891,22 +891,29 @@ then ported to the GNU / Linux environment.")
 (define-public mbedtls-apache
   (package
     (name "mbedtls-apache")
-    (version "2.16.6")
+    ;; XXX Check whether ‘-Wformat-signedness’ still breaks mbedtls-for-hiawatha
+    ;; when updating.
+    (version "2.23.0")
     (source
      (origin
-       (method url-fetch)
-       ;; XXX: The download links on the website are script redirection links
-       ;; which effectively lead to the format listed in the uri here.
-       (uri (string-append "https://tls.mbed.org/download/mbedtls-"
-                           version "-apache.tgz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ARMmbed/mbedtls")
+             (commit (string-append "mbedtls-" version))))
        (sha256
-        (base32
-         "0w0p51vx0cc6fyqfdn59669q6n4187vi64fw5ha302hrlqimwib6"))))
+        (base32 "13fa9h2i989cbf8n8c0j019mshv6wg213va18my1s787lhcq2d62"))
+       (file-name (git-file-name name version))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
        (list "-DUSE_SHARED_MBEDTLS_LIBRARY=ON"
-             "-DUSE_STATIC_MBEDTLS_LIBRARY=OFF")))
+             "-DUSE_STATIC_MBEDTLS_LIBRARY=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-source-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t)))))
     (native-inputs
      `(("perl" ,perl)
        ("python" ,python)))
@@ -925,17 +932,19 @@ coding footprint.")
    (package
      (inherit mbedtls-apache)
      (arguments
-      (substitute-keyword-arguments
-          `(#:phases
-            (modify-phases %standard-phases
-              (add-after 'configure 'configure-extra-features
-                (lambda _
-                  (for-each (lambda (feature)
-                              (invoke "scripts/config.pl" "set" feature))
-                            (list "MBEDTLS_THREADING_C"
-                                  "MBEDTLS_THREADING_PTHREAD"))
-                  #t)))
-            ,@(package-arguments mbedtls-apache)))))))
+      (substitute-keyword-arguments (package-arguments mbedtls-apache)
+        ((#:phases phases)
+         `(modify-phases ,phases
+            (add-before 'configure 'configure-extra-features
+              (lambda _
+                (for-each (lambda (feature)
+                            (invoke "scripts/config.pl" "set" feature))
+                          (list "MBEDTLS_THREADING_C"
+                                "MBEDTLS_THREADING_PTHREAD"))
+                ;; XXX The above enables code that breaks with -Werror…
+                (substitute* "CMakeLists.txt"
+                  ((" -Wformat-signedness") ""))
+                #t)))))))))
 
 (define-public dehydrated
   (package
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index 160dcb3001..c81b526999 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,11 +31,14 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
-  #:use-module (gnu packages ncurses))
-
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages sphinx))
 
 (define-public tmux
   (package
@@ -70,7 +74,7 @@ continue running in the background, then later reattached.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/jimeh/tmux-themepack.git")
+                      (url "https://github.com/jimeh/tmux-themepack")
                       (commit commit)))
                 (sha256
                  (base32
@@ -100,7 +104,7 @@ continue running in the background, then later reattached.")
     (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/jimeh/tmuxifier.git")
+                   (url "https://github.com/jimeh/tmuxifier")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
@@ -138,6 +142,88 @@ command and helper commands provided by tmuxifier to manage Tmux sessions and
 windows.")
     (license license:expat)))
 
+(define-public python-libtmux
+  (package
+    (name "python-libtmux")
+    (version "0.8.2")
+    (source
+     (origin
+       (method git-fetch)
+       ;; PyPI source tarball does not include tests.
+       (uri (git-reference
+             (url "https://github.com/tmux-python/libtmux")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1akjv6aqpc690c4l2cjh0fxbpxxg63sfjggapfjjjaqmcl38g1dz"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("procps" ,procps)))             ;tests need top
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("tmux" ,tmux)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Extend PYTHONPATH so the built package will be found.
+             (setenv "PYTHONPATH"
+                     (string-append (getcwd) "/build/lib:"
+                                    (getenv "PYTHONPATH")))
+             ;; Skip tests that I suspect fail because of a change
+             ;; in behavior in tmux 3 from tmux 2
+             ;; https://github.com/tmux-python/libtmux/issues/281
+             (invoke "pytest" "-vv" "-k"
+                     (string-append "not test_show_option_unknown "
+                                    "and not test_show_window_option_unknown"))
+             #t)))))
+    (home-page "https://github.com/tmux-python/libtmux")
+    (synopsis "Python API for tmux")
+    (description "Libtmux is the tool behind @command{tmuxp}, a tmux workspace
+manager in Python.  It creates object mappings to traverse, inspect and interact
+with live tmux sessions.")
+    (license license:expat)))
+
+(define-public python-daemux
+  (package
+    (name "python-daemux")
+    (version "0.1.0")
+    (source
+     ;; We fetch from the Git repo because there are no tests in the PyPI
+     ;; archive.
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/edouardklein/daemux")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0cb8v552f2hkwz6d3hwsmrz3gd28jikga3lcc3r1zlw8ra7804ph"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (mkdir-p "tmptmux")
+                      (setenv "TMUX_TMPDIR" (string-append (getcwd) "/tmptmux"))
+                      (invoke "tmux" "new-session" "-d")
+                      (invoke "make" "test"))))))
+    (propagated-inputs
+     `(("python-libtmux" ,python-libtmux)))
+    (native-inputs
+     `(("python-coverage" ,python-coverage)
+       ("python-sphinx" ,python-sphinx)
+       ("tmux" ,tmux)))
+    (home-page "https://github.com/edouardklein/daemux")
+    (synopsis "Start, stop, restart and check daemons via tmux")
+    (description
+     "Daemux lets you run daemons in a @command{tmux} pane.  Users can launch
+long-running background tasks, and check these tasks' health by hand, relaunch
+them, etc., by attaching to the corresponding pane in tmux.")
+    (license license:agpl3+)))
+
 (define-public tmux-xpanes
   (package
     (name "tmux-xpanes")
@@ -145,7 +231,7 @@ windows.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/greymd/tmux-xpanes.git")
+                    (url "https://github.com/greymd/tmux-xpanes")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index 19ab5cf374..c852c54a5b 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 André Batista <nandre@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,7 @@
 (define-module (gnu packages tor)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
@@ -52,14 +54,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.4.3.5")
+    (version "0.4.3.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0s6qspi102drn1nk3gfxs51x992xarc44gkfsi8y3l48wr50wsk1"))))
+               "0qmcrkjip0ywq77232m73pjwqiaj0q2klwklqlpbw575shvhcbba"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -86,11 +88,37 @@ location.  Tor works with many of your existing applications, including
 web browsers, instant messaging clients, remote login, and other
 applications based on the TCP protocol.
 
+This package is the full featured @code{tor} which is needed for running
+relays, bridges or directory authorities. If you just want to access the Tor
+network or to setup an onion service you may install @code{tor-client}
+instead.")
+    (license license:bsd-3)))
+
+(define-public tor-client
+  (package
+    (inherit tor)
+    (name "tor-client")
+    (arguments
+     (substitute-keyword-arguments (package-arguments tor)
+       ((#:configure-flags flags)
+        (append flags
+                '("--disable-module-relay")))))
+    (synopsis "Client to the anonymous Tor network")
+    (description
+     "Tor protects you by bouncing your communications around a distributed
+network of relays run by volunteers all around the world: it prevents
+somebody watching your Internet connection from learning what sites you
+visit, and it prevents the sites you visit from learning your physical
+location.  Tor works with many of your existing applications, including
+web browsers, instant messaging clients, remote login, and other
+applications based on the TCP protocol.
+
 To @code{torify} applications (to take measures to ensure that an application,
 which has not been designed for use with Tor such as ssh, will use only Tor for
 internet connectivity, and also ensures that there are no leaks from DNS, UDP or
-the application layer) you need to install @code{torsocks}.")
-    (license license:bsd-3)))
+the application layer) you need to install @code{torsocks}.
+
+This package only provides a client to the Tor Network.")))
 
 (define-public torsocks
   (package
@@ -190,7 +218,7 @@ networks.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/micahflee/onionshare.git")
+              (url "https://github.com/micahflee/onionshare")
               (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index f643e06974..459c0c4953 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -42,7 +42,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mtoyoda/sl.git")
+             (url "https://github.com/mtoyoda/sl")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/usb-modeswitch.scm b/gnu/packages/usb-modeswitch.scm
index 6de810d23d..2ca4da5e3c 100644
--- a/gnu/packages/usb-modeswitch.scm
+++ b/gnu/packages/usb-modeswitch.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright  2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de>
+;;; Copyright  2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
@@ -76,7 +78,7 @@ file for use with USB_ModeSwitch.")
 (define-public usb-modeswitch
   (package
     (name "usb-modeswitch")
-    (version "2.6.0")
+    (version "2.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -84,7 +86,7 @@ file for use with USB_ModeSwitch.")
                     "usb-modeswitch-" version ".tar.bz2"))
               (sha256
                (base32
-                "18wbbxc5cfsmikba0msdvd5qlaga27b32nhrzicyd9mdddp265f2"))))
+                "0d7s8p92r36danjd15y1zaznf6rbk17kxyg9367nabz56vhxk5ai"))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("libusb" ,libusb)
               ("jimtcl" ,jimtcl)
@@ -93,7 +95,8 @@ file for use with USB_ModeSwitch.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                    ; does not support `make check`
-       #:make-flags (list "CC=gcc")
+       #:make-flags
+       (list ,(string-append "CC=" (cc-for-target)))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)          ; no configure script
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 99e1a8ccd1..d2a24c7571 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -154,14 +154,14 @@ as well as the classic centralized workflow.")
 (define-public git
   (package
    (name "git")
-   (version "2.26.2")
+   (version "2.27.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://kernel.org/software/scm/git/git-"
                                 version ".tar.xz"))
             (sha256
              (base32
-              "0j685w6pzkn926z5nf5r8fij4ziipvw4c9yb0wc577nzf4j16rbd"))))
+              "1ybk39ylvs32lywq7ra4l2kdr5izc80r9461hwfnw8pssxs9gjkk"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("native-perl" ,perl)
@@ -178,7 +178,7 @@ as well as the classic centralized workflow.")
                 version ".tar.xz"))
           (sha256
            (base32
-            "0rb4f4jc31zrcg4gyjg4fi07dw7nggkjg2nqfiq5p1aayw2f2ga3"))))
+            "176lkcfhjhqin2w8s814j9wwcian9jr6xx6xzn35i5scn14spjz6"))))
       ;; For subtree documentation.
       ("asciidoc" ,asciidoc-py3)
       ("docbook-xsl" ,docbook-xsl)
@@ -302,12 +302,12 @@ as well as the classic centralized workflow.")
                 ;; specified in the XML, unlike the above substitution.  Instead it
                 ;; uses a hard-coded URL.  Work around it here, but if this is
                 ;; common perhaps we should hardcode this path in xmlto itself.
-                (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\) man")
+                (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
                  (string-append "$(XMLTO) -x "
                                 (string-append (assoc-ref inputs "docbook-xsl")
                                                "/xml/xsl/docbook-xsl-"
                                                ,(package-version docbook-xsl))
-                                "/manpages/docbook.xsl -m $(MANPAGE_XSL) man")))
+                                "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
               (invoke "make")
               (invoke "make" "install")
               (invoke "make" "install-doc")
@@ -723,7 +723,7 @@ write native speed custom Git applications in any language with bindings.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/AGWA/git-crypt.git")
+             (url "https://github.com/AGWA/git-crypt")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -971,7 +971,7 @@ repository")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/davisp/ghp-import.git")
+             (url "https://github.com/davisp/ghp-import")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1102,7 +1102,7 @@ either a pure Python implementation, or the faster, but more resource intensive
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/kward/shflags.git")
+                     (url "https://github.com/kward/shflags")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1185,7 +1185,7 @@ lot easier.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ctmarinas/stgit.git")
+             (url "https://github.com/ctmarinas/stgit")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1237,7 +1237,7 @@ manipulate them in various ways.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/RichiH/vcsh.git")
+             (url "https://github.com/RichiH/vcsh")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1312,7 +1312,7 @@ also walk each side of a merge and test those changes individually.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/sitaramc/gitolite.git")
+             (url "https://github.com/sitaramc/gitolite")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2058,7 +2058,7 @@ output of the @code{git} command.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/0-wiz-0/findnewest.git")
+             (url "https://github.com/0-wiz-0/findnewest")
              (commit (string-append "findnewest-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2130,7 +2130,7 @@ Mercurial, Bazaar, Darcs, CVS, Fossil, and Veracity.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/DanielDent/git-annex-remote-rclone.git")
+             (url "https://github.com/DanielDent/git-annex-remote-rclone")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2399,7 +2399,7 @@ how information about the merge is displayed.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mhagger/git-imerge.git")
+             (url "https://github.com/mhagger/git-imerge")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 4bd2dca909..4120174484 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -42,6 +42,8 @@
 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -134,6 +136,7 @@
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages pretty-print)
@@ -526,7 +529,7 @@ H.264 (MPEG-4 AVC) video streams.")
 (define-public straw-viewer
   (package
     (name "straw-viewer")
-    (version "0.0.2")
+    (version "0.0.6")
     (source
      (origin
        (method git-fetch)
@@ -535,7 +538,8 @@ H.264 (MPEG-4 AVC) video streams.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "067j8wdfy29bi5ahky10xzzs8cr3mn95wl4kyqqjvjzri77a25j3"))))
+        (base32
+         "0a9g10r56jdm2jx2yg9i8j8nczq74x78c29bhannr7ybnm2r6w2a"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -610,7 +614,7 @@ available.")
 (define-public x265
   (package
     (name "x265")
-    (version "3.3")
+    (version "3.4")
     (outputs '("out" "static"))
     (source
       (origin
@@ -620,7 +624,7 @@ available.")
                    (string-append "https://download.videolan.org/videolan/x265/"
                                   "x265_" version ".tar.gz")))
         (sha256
-         (base32 "170b61cgpcs5n35qps0p40dqs1q81vkgagzbs4zv7pzls6718vpj"))
+         (base32 "0wl62hfsdqpf3r3z3s6l9bz7pdb1rcik5ll00b3yaadplqipy162"))
         (patches (search-patches "x265-arm-flags.patch"))
         (modules '((guix build utils)))
         (snippet '(begin
@@ -637,8 +641,7 @@ available.")
        #:configure-flags
          ;; Ensure position independent code for everyone.
          (list "-DENABLE_PIC=TRUE"
-               ,@(if (string-prefix? "armhf" (or (%current-system)
-                                                 (%current-target-system)))
+               ,@(if (target-arm?)
                      '("-DENABLE_ASSEMBLY=OFF")
                      '())
                (string-append "-DCMAKE_INSTALL_PREFIX="
@@ -649,9 +652,6 @@ available.")
            (lambda _
              (delete-file-recursively "build")
              (chdir "source")
-             ;; recognize armv8 in 32-bit mode as ARM
-             (substitute* "CMakeLists.txt"
-              (("armv6l") "armv8l"))
              #t))
          (add-before 'configure 'build-12-bit
            (lambda* (#:key (configure-flags '()) #:allow-other-keys)
@@ -971,7 +971,12 @@ operate properly.")
        ("mesa" ,mesa)
        ("openal" ,openal)
        ("pulseaudio" ,pulseaudio)
-       ("rav1e" ,rav1e)
+       ;; XXX: rav1e depends on rust, which currently only works on x86_64.
+       ;; See also the related configure flag when changing this.
+       ,@(if (string-prefix? "x86_64" (or (%current-target-system)
+                                          (%current-system)))
+             `(("rav1e" ,rav1e))
+             '())
        ("sdl" ,sdl2)
        ("soxr" ,soxr)
        ("speex" ,speex)
@@ -1053,7 +1058,10 @@ operate properly.")
          "--enable-libmp3lame"
          "--enable-libopus"
          "--enable-libpulse"
-         "--enable-librav1e"
+         ,@(if (string-prefix? "x86_64" (or (%current-target-system)
+                                            (%current-system)))
+               '("--enable-librav1e")
+               '())
          "--enable-libsoxr"
          "--enable-libspeex"
          "--enable-libtheora"
@@ -1118,6 +1126,24 @@ convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
     (license license:gpl2+)))
 
+;; ungoogled-chromium crashes with ffmpeg 4.3, so stick with this version for
+;; now.  See <https://issues.guix.gnu.org/41987>.
+(define-public ffmpeg-4.2
+  (package
+    (inherit ffmpeg)
+    (version "4.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0cddkb5sma9dzy8i59sfls19rhjlq40zn9mh3x666dqkxl5ckxlx"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ffmpeg)
+       ((#:configure-flags flags)
+        `(delete "--enable-librav1e" ,flags))))))
+
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
@@ -1146,7 +1172,7 @@ audio/video codec library.")
       (origin
         (method git-fetch)
         (uri (git-reference
-              (url "https://github.com/stepmania/ffmpeg.git")
+              (url "https://github.com/stepmania/ffmpeg")
               (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
         (sha256
          (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
@@ -1172,7 +1198,7 @@ audio/video codec library.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dirkvdb/ffmpegthumbnailer.git")
+                    (url "https://github.com/dirkvdb/ffmpegthumbnailer")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1445,7 +1471,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mpv-player/mpv.git")
+                    (url "https://github.com/mpv-player/mpv")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1507,6 +1533,14 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                 (("\"youtube-dl\",")
                  (string-append "\"" ytdl "/bin/youtube-dl\",")))
               #t)))
+         (add-before 'configure 'build-reproducibly
+           (lambda _
+             ;; Somewhere in the build system library dependencies are enumerated
+             ;; and passed as linker flags, but the order in which they are added
+             ;; varies.  See <https://github.com/mpv-player/mpv/issues/7855>.
+             ;; Set PYTHONHASHSEED as a workaround for deterministic results.
+             (setenv "PYTHONHASHSEED" "1")
+             #t))
          (add-before
           'configure 'setup-waf
           (lambda* (#:key inputs #:allow-other-keys)
@@ -1614,7 +1648,7 @@ To load this plugin, specify the following option when starting mpv:
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2020.06.06")
+    (version "2020.06.16.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1622,7 +1656,7 @@ To load this plugin, specify the following option when starting mpv:
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1qrrr14glv0jv377n61paq55b6k58jpnwbz2sp5xfl4wnxy5hqny"))))
+                "1q0080cvxpfakgbzigbnl9adnga3jz1sqig2rsiq52rarqbc01px"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1766,7 +1800,7 @@ other site that youtube-dl supports.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/soimort/you-get.git")
+                    (url "https://github.com/soimort/you-get")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1805,7 +1839,7 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/trizen/youtube-viewer.git")
+                    (url "https://github.com/trizen/youtube-viewer")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2189,7 +2223,7 @@ capabilities.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vapoursynth/vapoursynth.git")
+                    (url "https://github.com/vapoursynth/vapoursynth")
                     (commit (string-append "R" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2294,7 +2328,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/BasioMeusPuga/twitchy.git")
+               (url "https://github.com/BasioMeusPuga/twitchy")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2333,16 +2367,16 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.18.0")
+    (version "6.20.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/mltframework/mlt.git")
+                    (url "https://github.com/mltframework/mlt")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0iiqym15n8kbnjzj0asmm86gs23yykz0va5b475cc4v2vv5admgx"))))
+                "14kayzas2wisyw0z27qkcm4qnxbdb7bqa0hg7gaj5kbm3nvsnafk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -2363,7 +2397,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              #t)))))
     (inputs
      `(("alsa-lib" ,alsa-lib)
-       ("ffmpeg" ,ffmpeg-3.4)
+       ("ffmpeg" ,ffmpeg)
        ("fftw" ,fftw)
        ("frei0r-plugins" ,frei0r-plugins)
        ("gdk-pixbuf" ,gdk-pixbuf)
@@ -2430,7 +2464,7 @@ be used for realtime video capture via Linux-specific APIs.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/obsproject/obs-studio.git")
+                    (url "https://github.com/obsproject/obs-studio")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -2594,17 +2628,17 @@ making @dfn{screencasts}.")
 (define-public simplescreenrecorder
   (package
     (name "simplescreenrecorder")
-    (version "0.3.11")
+    (version "0.4.2")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/MaartenBaert/ssr.git")
+             (url "https://github.com/MaartenBaert/ssr")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0n702dnv4qshgn3b90ixvplfafjhgz6040yir5vy8khjdpciysq4"))))
+         "1dzp5yzqlha65crzklx2qlan6ssw1diwzfpc4svd7gnr858q2292"))))
     (build-system cmake-build-system)
     ;; Although libx11, libxfixes, libxext are listed as build dependencies in
     ;; README.md, the program builds and functions properly without them.
@@ -2615,6 +2649,7 @@ making @dfn{screencasts}.")
        ("glu" ,glu)
        ("jack" ,jack-1)
        ("libxi" ,libxi)
+       ("libxinerama" ,libxinerama)
        ("pulseaudio" ,pulseaudio)
        ("qtbase" ,qtbase)
        ("qtx11extras" ,qtx11extras)))
@@ -2711,14 +2746,14 @@ specifications.")
 (define-public libaacs
   (package
     (name "libaacs")
-    (version "0.9.0")
+    (version "0.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://ftp.videolan.org/pub/videolan/libaacs/"
-                           version "/" name "-" version ".tar.bz2"))
+                           version "/libaacs-" version ".tar.bz2"))
        (sha256
-        (base32 "1kms92i0c7i1yl659kqjf19lm8172pnpik5lsxp19xphr74vvq27"))))
+        (base32 "1zhjdcph8sqx7ak35s22kc736icwq135jlypggkp6vqyyygb3xlk"))))
     (inputs
      `(("libgcrypt" ,libgcrypt)))
     (native-inputs
@@ -2739,7 +2774,7 @@ Content System specification.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mps-youtube/mps-youtube.git")
+             (url "https://github.com/mps-youtube/mps-youtube")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -3194,7 +3229,7 @@ and ITU-T H.222.0.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/FFMS/ffms2.git")
+                    (url "https://github.com/FFMS/ffms2")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -3296,7 +3331,7 @@ tools for styling them, including a built-in real-time video preview.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/pitivi/gst-transcoder.git")
+             (url "https://github.com/pitivi/gst-transcoder")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -3410,7 +3445,7 @@ It counts more than 100 plugins.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Motion-Project/motion.git")
+                    (url "https://github.com/Motion-Project/motion")
                     (commit (string-append "release-" version))))
               (sha256
                (base32
@@ -3424,7 +3459,7 @@ It counts more than 100 plugins.")
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libjpeg" ,libjpeg-turbo)
-       ("ffmpeg" ,ffmpeg-3.4)
+       ("ffmpeg" ,ffmpeg)
        ("libmicrohttpd" ,libmicrohttpd)
        ("sqlite" ,sqlite)))
     (arguments
@@ -3457,7 +3492,7 @@ changed.  Or in other words, it can detect motion.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/alexanderwink/subdl.git")
+                      (url "https://github.com/alexanderwink/subdl")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3491,7 +3526,7 @@ save it to the appropriate filename.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/l-smash/l-smash.git")
+                    (url "https://github.com/l-smash/l-smash")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -3555,7 +3590,7 @@ online.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/georgmartius/vid.stab.git")
+                      (url "https://github.com/georgmartius/vid.stab")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -3704,7 +3739,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.7.0")
+    (version "0.7.1")
     (source
       (origin
         (method url-fetch)
@@ -3712,7 +3747,7 @@ transitions, and effects and then export your film to many common formats.")
                             "/dav1d/" version "/dav1d-" version ".tar.xz"))
         (sha256
          (base32
-          "0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk"))))
+          "1hnkfcg57bv5rib6cnj39dy1jx0q7zi5fb2fz52hf2y0bv8bad1k"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
@@ -3731,7 +3766,7 @@ speed and correctness.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/atomnuker/wlstream.git")
+               (url "https://github.com/atomnuker/wlstream")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3828,7 +3863,7 @@ to convenience of translating and batch processing of multiple documents.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/FNA-XNA/Theorafile.git")
+               (url "https://github.com/FNA-XNA/Theorafile")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -3885,16 +3920,16 @@ transcode or reformat the videos in any way, producing perfect backups.")
 (define-public svt-av1
   (package
     (name "svt-av1")
-    (version "0.8.3")
+    (version "0.8.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/OpenVisualCloud/SVT-AV1.git")
+                     (url "https://github.com/OpenVisualCloud/SVT-AV1")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1rh4sz1bmrsxyxfxajsffw5jd17djcrymhwsi877v02fgln027qr"))))
+                "0xad35q9sv5w0iihcf9q1f1m7br5anl3vsyx9svnx128iqf0n997"))))
     (build-system cmake-build-system)
     ;; SVT-AV1 only supports Intel-compatible CPUs.
     (supported-systems '("x86_64-linux" "i686-linux"))
@@ -3950,7 +3985,7 @@ result in several formats:
 (define-public rav1e
   (package
     (name "rav1e")
-    (version "0.3.0")
+    (version "0.3.3")
     (source
       (origin
         (method url-fetch)
@@ -3959,60 +3994,54 @@ result in several formats:
          (string-append name "-" version ".tar.gz"))
         (sha256
          (base32
-          "1bsmj8kqzs5pf8dl98rsl6a67cljj1gkj3b5hmd8hn8wdy4ya173"))))
+          "053bh8hc6jj81ydq4gcak01b0ady59hvkl7d87im3y8nafg7xzb4"))))
     (build-system cargo-build-system)
     (arguments
      `(#:cargo-inputs
-       (("rust-simd-helpers" ,rust-simd-helpers-0.1)
-        ("rust-ivf" ,rust-ivf-0.1)
-        ("rust-cfg-if" ,rust-cfg-if-0.1)
-        ("rust-paste" ,rust-paste-0.1)
-        ("rust-signal-hook" ,rust-signal-hook-0.1)
-        ("rust-aom-sys" ,rust-aom-sys-0.1)
-        ("rust-nasm-rs" ,rust-nasm-rs-0.1)
+       (("rust-aom-sys" ,rust-aom-sys-0.1)
         ("rust-arbitrary" ,rust-arbitrary-0.2)
-        ("rust-better-panic" ,rust-better-panic-0.2)
-        ("rust-noop-proc-macro"
-         ,rust-noop-proc-macro-0.2)
-        ("rust-num-traits" ,rust-num-traits-0.2)
-        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
-        ("rust-err-derive" ,rust-err-derive-0.2)
-        ("rust-interpolate-name"
-         ,rust-interpolate-name-0.2)
-        ("rust-rustc-version" ,rust-rustc-version-0.2)
-        ("rust-scan-fmt" ,rust-scan-fmt-0.2)
-        ("rust-libc" ,rust-libc-0.2)
-        ("rust-image" ,rust-image-0.22)
-        ("rust-arg-enum-proc-macro"
-         ,rust-arg-enum-proc-macro-0.3)
-        ("rust-num-derive" ,rust-num-derive-0.3)
-        ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
+        ("rust-arg-enum-proc-macro" ,rust-arg-enum-proc-macro-0.3)
+        ("rust-arrayvec" ,rust-arrayvec-0.5)
         ("rust-backtrace" ,rust-backtrace-0.3)
+        ("rust-bitstream-io" ,rust-bitstream-io-0.8)
+        ("rust-byteorder" ,rust-byteorder-1.3)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-console" ,rust-console-0.11)
+        ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
+        ("rust-fern" ,rust-fern-0.6)
+        ("rust-image" ,rust-image-0.23)
+        ("rust-interpolate-name" ,rust-interpolate-name-0.2)
+        ("rust-itertools" ,rust-itertools-0.9)
+        ("rust-ivf" ,rust-ivf-0.1)
+        ("rust-libc" ,rust-libc-0.2)
         ("rust-log" ,rust-log-0.4)
-        ("rust-y4m" ,rust-y4m-0.5)
-        ("rust-arrayvec" ,rust-arrayvec-0.5)
-        ("rust-toml" ,rust-toml-0.5)
-        ("rust-fern" ,rust-fern-0.5)
-        ("rust-rust-hawktracer"
-         ,rust-rust-hawktracer-0.7)
+        ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.2)
+        ("rust-num-derive" ,rust-num-derive-0.3)
+        ("rust-num-traits" ,rust-num-traits-0.2)
+        ("rust-paste" ,rust-paste-0.1)
         ("rust-rand" ,rust-rand-0.7)
-        ("rust-itertools" ,rust-itertools-0.8)
-        ("rust-bitstream-io" ,rust-bitstream-io-0.8)
-        ("rust-console" ,rust-console-0.9)
+        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
+        ("rust-rayon" ,rust-rayon-1)
+        ("rust-rust-hawktracer" ,rust-rust-hawktracer-0.7)
+        ("rust-scan-fmt" ,rust-scan-fmt-0.2)
         ("rust-serde" ,rust-serde-1.0)
+        ("rust-signal-hook" ,rust-signal-hook-0.1)
+        ("rust-simd-helpers" ,rust-simd-helpers-0.1)
+        ("rust-thiserror" ,rust-thiserror-1.0)
+        ("rust-toml" ,rust-toml-0.5)
+        ("rust-y4m" ,rust-y4m-0.5)
         ("rust-cc" ,rust-cc-1.0)
-        ("rust-rayon" ,rust-rayon-1.3)
-        ("rust-byteorder" ,rust-byteorder-1.3)
-        ("rust-clap" ,rust-clap-2)
+        ("rust-nasm-rs" ,rust-nasm-rs-0.1)
+        ("rust-rustc-version" ,rust-rustc-version-0.2)
         ("rust-vergen" ,rust-vergen-3.1))
        #:cargo-development-inputs
-       (("rust-rand-chacha" ,rust-rand-chacha-0.2)
-        ("rust-interpolate-name"
-         ,rust-interpolate-name-0.2)
+       (("rust-assert-cmd" ,rust-assert-cmd-1)
         ("rust-criterion" ,rust-criterion-0.3)
-        ("rust-pretty-assertions"
-         ,rust-pretty-assertions-0.6)
+        ("rust-interpolate-name" ,rust-interpolate-name-0.2)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
         ("rust-rand" ,rust-rand-0.7)
+        ("rust-rand-chacha" ,rust-rand-chacha-0.2)
         ("rust-semver" ,rust-semver-0.9))
        #:phases
        (modify-phases %standard-phases
@@ -4039,7 +4068,7 @@ result in several formats:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/phw/peek.git")
+             (url "https://github.com/phw/peek")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -4073,7 +4102,7 @@ can also directly record to WebM or MP4 if you prefer.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ammen99/wf-recorder.git")
+                    (url "https://github.com/ammen99/wf-recorder")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -4134,3 +4163,60 @@ brightness, contrast, and frame rate.")
 
     ;; 'COPYING' is GPLv3 but source headers say GPLv2+.
     (license license:gpl2+)))
+
+(define-public get-iplayer
+  (package
+    (name "get-iplayer")
+    (version "3.26")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/get-iplayer/get_iplayer")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0lsz5hz1ia5j612540rb0f31y7j2k5gf7x5i43l8k06b90wi73d6"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:tests? #f  ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man/man1")))
+               (install-file "get_iplayer" bin)
+               (install-file "get_iplayer.cgi" bin)
+               (install-file "get_iplayer.1" man))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (perllib (string-append out "/lib/perl5/site_perl/"
+                                            ,(package-version perl))))
+               (wrap-program (string-append out "/bin/get_iplayer")
+                 `("PERL5LIB" ":"
+                   prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
+               (wrap-program (string-append out "/bin/get_iplayer.cgi")
+                 `("PERL5LIB" ":"
+                   prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
+               #t))))))
+    (inputs
+     `(("perl-mojolicious" ,perl-mojolicious)
+       ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
+       ("perl-xml-libxml" ,perl-xml-libxml)))
+    (home-page "https://github.com/get-iplayer/get_iplayer")
+    (synopsis "Download or stream available BBC iPlayer TV and radio programmes")
+    (description "@code{get_iplayer} lists, searches and records BBC iPlayer
+TV/Radio, BBC Podcast programmes.  Other third-party plugins may be available.
+@code{get_iplayer} has three modes: recording a complete programme for later
+playback, streaming a programme directly to a playback application, such as
+mplayer; and as a @dfn{Personal Video Recorder} (PVR), subscribing to search
+terms and recording programmes automatically.  It can also stream or record live
+BBC iPlayer output.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 2d9447d211..ab3492fe25 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -70,7 +70,7 @@
 (define-public vim
   (package
     (name "vim")
-    (version "8.2.0411")
+    (version "8.2.1145")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -79,28 +79,35 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "0idjbf15yqk5jz2dqbh2lzj7glxcwn1jl5pp9kk908ps02vzqyai"))))
+               "01z5hgi7m8d63gl1fgfn4p9rsdaqbl5xn4vr247nbxjq5x5hrs7a"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
        #:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-after 'configure 'patch-config-files
+         (add-after 'configure 'patch-absolute-paths
            (lambda _
              (substitute* "runtime/tools/mve.awk"
                (("/usr/bin/nawk") (which "gawk")))
              (substitute* '("src/testdir/Makefile"
                             "src/testdir/test_normal.vim"
-                            "src/testdir/test_terminal.vim")
+                            "src/testdir/test_system.vim"
+                            "src/testdir/test_terminal.vim"
+                            "src/testdir/test_terminal2.vim")
                (("/bin/sh") (which "sh")))
+             (substitute* "src/testdir/test_autocmd.vim"
+               (("/bin/kill") (which "kill")))
              #t))
-         (add-before 'check 'set-TZDIR
+         (add-before 'check 'set-environment-variables
            (lambda* (#:key inputs #:allow-other-keys)
              ;; One of the tests tests timezone-dependent functions.
              (setenv "TZDIR"
                      (string-append (assoc-ref inputs "tzdata")
                                     "/share/zoneinfo"))
+
+             ;; Make sure the TERM environment variable is set for the tests
+             (setenv "TERM" "xterm")
              #t))
          (add-before 'check 'skip-failing-tests
            (lambda _
@@ -113,6 +120,14 @@
              (substitute* "src/testdir/test_swap.vim"
                (("if !IsRoot\\(\\)") "if 0"))
 
+             ;; These tests fail on upstream's CI on FreeBSD because they are
+             ;; run as root.  They fail for us because PID 1 and the test suite
+             ;; are run by the same user.
+             (substitute* '("src/testdir/test_backup.vim"
+                            "src/testdir/test_writefile.vim")
+               (("CheckNotBSD") "throw 'Skipped: this test fails on Guix'")
+               (("'bsd'") "'unix'"))
+
              ;; This test checks how the terminal looks after executing some
              ;; actions.  The path of the bash binary is shown, which results in
              ;; a difference being detected.  Patching the expected result is
@@ -200,26 +215,6 @@ with the editor vim.")))
        ,@(substitute-keyword-arguments (package-arguments vim)
            ((#:phases phases)
             `(modify-phases ,phases
-               (add-before 'check 'skip-previewpopup
-                 ;; This test fails when the path to the source is long. See:
-                 ;; https://github.com/vim/vim/issues/5615
-                 (lambda _
-                   (substitute* "src/testdir/test_popupwin.vim"
-                     ((".*Test_previewpopup.*" line)
-                      (string-append line "return\n")))))
-               (add-before 'check 'skip-test87
-                 ;; This test fails for unknown reasons after switching
-                 ;; to a git checkout.
-                 (lambda _
-                   (delete-file "src/testdir/test87.ok")
-                   (delete-file "src/testdir/test87.in")
-                   (substitute* '("src/Makefile"
-                                  "src/testdir/Make_vms.mms")
-                     (("test87") ""))
-                   (substitute* "src/testdir/Make_all.mak"
-                     (("test86.out \\\\") "test86")
-                     (("test87.out") ""))
-                   #t))
                (add-before 'check 'start-xserver
                  (lambda* (#:key inputs #:allow-other-keys)
                    ;; Some tests require an X server, but does not start one.
@@ -463,7 +458,7 @@ trouble using them, because you do not have to remember each snippet name.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/tpope/vim-fugitive.git")
+               (url "https://github.com/tpope/vim-fugitive")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -579,7 +574,7 @@ are detected, the user is notified.")
       (origin
         (method git-fetch)
         (uri (git-reference
-               (url "https://github.com/editorconfig/editorconfig-vim.git")
+               (url "https://github.com/editorconfig/editorconfig-vim")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
@@ -798,13 +793,13 @@ With the package comes a plugin to use vifm as a vim file selector.")
 (define-public python-pynvim
   (package
     (name "python-pynvim")
-    (version "0.3.2")
+    (version "0.4.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pynvim" version))
               (sha256
                (base32
-                "01dybk4vs452pljn1q3il5z2sd313ki0lgiglc0xmjc6wp290r6g"))))
+                "0n2cx22lrmbq7xk7356lyn6k77ryqvkxplw9k0fglk35ckb1isam"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-greenlet" ,python-greenlet)
@@ -900,3 +895,31 @@ bound by synchronicity.  Kick off builds and test suites using one of several
 asynchronous adapters (including tmux, screen, and a headless mode), and when
 the job completes, errors will be loaded and parsed automatically.")
     (license license:vim)))
+
+(define-public vim-eunuch
+  (let ((commit "33e875b31c8b811a0a47908884a5e2339106bbe8")
+        (revision "1"))
+    (package
+      (name "vim-eunuch")
+      (version (git-version "1.2" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/tpope/vim-eunuch")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1xadb22kd40swmww0qxmmkcpcq6viy8l167pjck5q32hfngll5d3"))))
+      (build-system copy-build-system)
+      (arguments
+       '(#:install-plan
+         '(("doc" "share/vim/vimfiles/")
+           ("plugin" "share/vim/vimfiles/"))))
+      (home-page "https://github.com/tpope/vim-eunuch")
+      (synopsis "Vim sugar for the UNIX shell commands")
+      (description "Vim sugar for the UNIX shell commands that need it the most.
+This package includes commands such as @code{SudoWrite} and @code{SudoEdit} and
+help working on Vim buffers and the files they reference with one command.")
+      (license license:vim))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 26c0bb54cb..d0223bce3d 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -38,6 +38,7 @@
   #:use-module (gnu packages attr)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
@@ -45,6 +46,7 @@
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages debian)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages dns)
   #:use-module (gnu packages docbook)
@@ -60,11 +62,19 @@
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages haskell)
+  #:use-module (gnu packages haskell-apps)
+  #:use-module (gnu packages haskell-check)
+  #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
+  #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages networking)
@@ -75,6 +85,7 @@
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages pulseaudio)
@@ -82,6 +93,7 @@
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages spice)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -349,6 +361,512 @@ server and embedded PowerPC, and S390 guests.")
                     "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"
                     "libcacard")))))
 
+(define (system->qemu-target system)
+  (cond
+   ((string-prefix? "i686" system)
+    "qemu-system-i386")
+   ((string-prefix? "arm" system)
+    "qemu-system-arm")
+   (else
+    (string-append "qemu-system-" (match (string-split system #\-)
+                                    ((arch kernel) arch)
+                                    (_ system))))))
+
+(define-public ganeti
+  (package
+    (name "ganeti")
+    ;; Note: we use a pre-release for Python 3 compatibility as well as many
+    ;; other fixes.
+    (version "3.0.0beta1-24-g024cc9fa2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ganeti/ganeti")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32 "1ll34qd2mifni3bhg7cnir3xfnkafig8ch33qndqwrsby0y5ssia"))
+              (file-name (git-file-name name version))
+              (patches (search-patches "ganeti-shepherd-support.patch"
+                                       "ganeti-shepherd-master-failover.patch"
+                                       "ganeti-deterministic-manual.patch"
+                                       "ganeti-drbd-compat.patch"
+                                       "ganeti-os-disk-size.patch"
+                                       "ganeti-haskell-pythondir.patch"
+                                       "ganeti-disable-version-symlinks.patch"
+                                       "ganeti-preserve-PYTHONPATH.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:imported-modules (,@%gnu-build-system-modules
+                           (guix build haskell-build-system)
+                           (guix build python-build-system))
+       #:modules (,@%gnu-build-system-modules
+                  ((guix build haskell-build-system) #:prefix haskell:)
+                  ((guix build python-build-system) #:select (python-version))
+                  (ice-9 rdelim))
+
+       ;; The default test target includes a lot of checks that are only really
+       ;; relevant for developers such as NEWS file checking, line lengths, etc.
+       ;; We are only interested in the "py-tests" and "hs-tests" targets: this
+       ;; is the closest we've got even though it includes a little more.
+       #:test-target "check-TESTS"
+
+       #:configure-flags
+       (list "--localstatedir=/var"
+             "--sharedstatedir=/var"
+             "--sysconfdir=/etc"
+             "--enable-haskell-tests"
+
+             ;; By default, the build system installs everything to versioned
+             ;; directories such as $libdir/3.0 and relies on a $libdir/default
+             ;; symlink pointed from /etc/ganeti/{lib,share} to actually function.
+             ;; This is done to accommodate installing multiple versions in
+             ;; parallel, but is of little use to us as Guix users can just
+             ;; roll back and forth.  Thus, disable it for simplicity.
+             "--disable-version-links"
+
+             ;; Ganeti can optionally take control over SSH host keys and
+             ;; distribute them to nodes as they are added, and also rotate keys
+             ;; with 'gnt-cluster renew-crypto --new-ssh-keys'.  Thus it needs to
+             ;; know how to restart the SSH daemon.
+             "--with-sshd-restart-command='herd restart ssh-daemon'"
+
+             ;; Look for OS definitions in this directory by default.  It can
+             ;; be changed in the cluster configuration.
+             "--with-os-search-path=/run/current-system/profile/share/ganeti/os"
+
+             ;; The default QEMU executable to use.  We don't use the package
+             ;; here because this entry is stored in the cluster configuration.
+             (string-append "--with-kvm-path=/run/current-system/profile/bin/"
+                            ,(system->qemu-target (%current-system))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'create-vcs-version
+           (lambda _
+             ;; If we are building from a git checkout, we need to create a
+             ;; 'vcs-version' file manually because the build system does
+             ;; not have access to the git repository information.
+             (unless (file-exists? "vcs-version")
+               (call-with-output-file "vcs-version"
+                 (lambda (port)
+                   (format port "v~a~%" ,version))))
+             #t))
+         (add-after 'unpack 'patch-absolute-file-names
+           (lambda _
+             (substitute* '("lib/utils/process.py"
+                            "lib/utils/text.py"
+                            "src/Ganeti/Constants.hs"
+                            "src/Ganeti/HTools/CLI.hs"
+                            "test/py/ganeti.config_unittest.py"
+                            "test/py/ganeti.hooks_unittest.py"
+                            "test/py/ganeti.utils.process_unittest.py"
+                            "test/py/ganeti.utils.text_unittest.py"
+                            "test/py/ganeti.utils.wrapper_unittest.py")
+               (("/bin/sh") (which "sh"))
+               (("/bin/bash") (which "bash"))
+               (("/usr/bin/env") (which "env"))
+               (("/bin/true") (which "true")))
+
+             ;; This script is called by the node daemon at startup to perform
+             ;; sanity checks on the cluster IP addresses, and it is also used
+             ;; in a master-failover scenario.  Add absolute references to
+             ;; avoid propagating these executables.
+             (substitute* "tools/master-ip-setup"
+               (("arping") (which "arping"))
+               (("ndisc6") (which "ndisc6"))
+               (("fping") (which "fping"))
+               (("grep") (which "grep"))
+               (("ip addr") (string-append (which "ip") " addr")))
+             #t))
+         (add-after 'unpack 'override-builtin-PATH
+           (lambda _
+             ;; Ganeti runs OS install scripts and similar with a built-in
+             ;; hard coded PATH.  Patch so it works on Guix System.
+             (substitute* "src/Ganeti/Constants.hs"
+               (("/sbin:/bin:/usr/sbin:/usr/bin")
+                "/run/setuid-programs:/run/current-system/profile/sbin:\
+/run/current-system/profile/bin"))
+             #t))
+         (add-after 'bootstrap 'patch-sphinx-version-detection
+           (lambda _
+             ;; The build system runs 'sphinx-build --version' to verify that
+             ;; the Sphinx is recent enough, but does not expect the
+             ;; .sphinx-build-real executable name created by the Sphinx wrapper.
+             (substitute* "configure"
+               (("\\$SPHINX --version 2>&1")
+                "$SPHINX --version 2>&1 | sed 's/.sphinx-build-real/sphinx-build/g'"))
+             #t))
+
+         ;; The build system invokes Cabal and GHC, which do not work with
+         ;; GHC_PACKAGE_PATH: <https://github.com/haskell/cabal/issues/3728>.
+         ;; Tweak the build system to do roughly what haskell-build-system does.
+         (add-before 'configure 'configure-haskell
+           (assoc-ref haskell:%standard-phases 'setup-compiler))
+         (add-after 'configure 'do-not-use-GHC_PACKAGE_PATH
+           (lambda _
+             (unsetenv "GHC_PACKAGE_PATH")
+             (substitute* "Makefile"
+               (("\\$\\(CABAL\\)")
+                "$(CABAL) --package-db=../package.conf.d")
+               (("\\$\\(GHC\\)")
+                "$(GHC) -package-db=../package.conf.d"))
+             #t))
+
+         (add-after 'configure 'fix-installation-directories
+           (lambda _
+             (substitute* "Makefile"
+               ;; Do not attempt to create /var during install.
+               (("\\$\\(DESTDIR\\)\\$\\{localstatedir\\}")
+                "$(DESTDIR)${prefix}${localstatedir}")
+               ;; Similarly, do not attempt to install the sample ifup scripts
+               ;; to /etc/ganeti.
+               (("\\$\\(DESTDIR\\)\\$\\(ifupdir\\)")
+                "$(DESTDIR)${prefix}$(ifupdir)"))
+             #t))
+         (add-before 'build 'adjust-tests
+           (lambda _
+             ;; Disable tests that can not run.  Do it early to prevent
+             ;; touching the Makefile later and triggering a needless rebuild.
+             (substitute* "Makefile"
+               ;; These tests expect the presence of a 'root' user (via
+               ;; ganeti/runtime.py), which fails in the build environment.
+               (("test/py/ganeti\\.asyncnotifier_unittest\\.py") "")
+               (("test/py/ganeti\\.backend_unittest\\.py") "")
+               (("test/py/ganeti\\.daemon_unittest\\.py") "")
+               (("test/py/ganeti\\.tools\\.ensure_dirs_unittest\\.py") "")
+               (("test/py/ganeti\\.utils\\.io_unittest-runasroot\\.py") "")
+               ;; Disable the bash_completion test, as it requires the full
+               ;; bash instead of bash-minimal.
+               (("test/py/bash_completion\\.bash")
+                "")
+               ;; This test requires networking.
+               (("test/py/import-export_unittest\\.bash")
+                ""))
+
+             ;; Many of the Makefile targets reset PYTHONPATH before running
+             ;; the Python interpreter, which does not work very well for us.
+             (substitute* "Makefile"
+               (("PYTHONPATH=")
+                (string-append "PYTHONPATH=" (getenv "PYTHONPATH") ":")))
+             #t))
+         (add-after 'build 'build-bash-completions
+           (lambda _
+             (let ((orig-pythonpath (getenv "PYTHONPATH")))
+               (setenv "PYTHONPATH" (string-append ".:" orig-pythonpath))
+               (invoke "./autotools/build-bash-completion")
+               (setenv "PYTHONPATH" orig-pythonpath)
+               #t)))
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Set TZDIR so that time zones are found.
+             (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata")
+                                            "/share/zoneinfo"))
+
+             ;; This test checks whether PYTHONPATH is untouched, and extends
+             ;; it to include test directories if so.  Add an else branch for
+             ;; our modified PYTHONPATH, in order to prevent a confusing test
+             ;; failure where expired certificates are not cleaned because
+             ;; check-cert-expired is silently crashing.
+             (substitute* "test/py/ganeti-cleaner_unittest.bash"
+               (("then export PYTHONPATH=(.*)" all testpath)
+                (string-append all "else export PYTHONPATH="
+                               (getenv "PYTHONPATH") ":" testpath "\n")))
+
+             (substitute* "test/py/ganeti.utils.process_unittest.py"
+               ;; This test attempts to run an executable with
+               ;; RunCmd(..., reset_env=True), which fails because the default
+               ;; PATH from Constants.hs does not exist in the build container.
+               ((".*def testResetEnv.*" all)
+                (string-append "  @unittest.skipIf(True, "
+                               "\"cannot reset env in the build container\")\n"
+                               all))
+
+               ;; XXX: Somehow this test fails in the build container, but
+               ;; works in 'guix environment -C', even without /bin/sh?
+               ((".*def testPidFile.*" all)
+                (string-append "  @unittest.skipIf(True, "
+                               "\"testPidFile fails in the build container\")\n"
+                               all)))
+
+             ;; XXX: Why are these links not added automatically.
+             (with-directory-excursion "test/hs"
+               (for-each (lambda (file)
+                           (symlink "../../src/htools" file))
+                         '("hspace" "hscan" "hinfo" "hbal" "hroller"
+                           "hcheck" "hail" "hsqueeze")))
+             #t))
+         (add-after 'install 'install-bash-completions
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (compdir (string-append out "/etc/bash_completion.d")))
+               (mkdir-p compdir)
+               (copy-file "doc/examples/bash_completion"
+                             (string-append compdir "/ganeti"))
+               ;; The one file contains completions for many different
+               ;; executables.  Create symlinks for found completions.
+               (with-directory-excursion compdir
+                 (for-each
+                  (lambda (prog) (symlink "ganeti" prog))
+                  (call-with-input-file "ganeti"
+                    (lambda (port)
+                      (let loop ((line (read-line port))
+                                 (progs '()))
+                        (if (eof-object? line)
+                            progs
+                            (if (string-prefix? "complete" line)
+                                (loop (read-line port)
+                                      ;; Extract "prog" from lines of the form:
+                                      ;; "complete -F _prog -o filenames prog".
+                                      ;; Note that 'burnin' is listed with the
+                                      ;; absolute file name, which is why we
+                                      ;; run everything through 'basename'.
+                                      (cons (basename (car (reverse (string-split
+                                                                     line #\ ))))
+                                            progs))
+                                (loop (read-line port) progs))))))))
+               #t)))
+         ;; Wrap all executables with PYTHONPATH.  We can't borrow the phase
+         ;; from python-build-system because we also need to wrap the scripts
+         ;; in $out/lib/ganeti such as "node-daemon-setup".
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (sbin (string-append out "/sbin"))
+                    (lib (string-append out "/lib"))
+                    (python (assoc-ref inputs "python"))
+                    (major+minor (python-version python))
+                    (PYTHONPATH (string-append lib "/python" major+minor
+                                               "/site-packages:"
+                                               (getenv "PYTHONPATH"))))
+               (define (shell-script? file)
+                 (call-with-ascii-input-file file
+                   (lambda (port)
+                     (let ((shebang (false-if-exception (read-line port))))
+                       (and shebang
+                            (string-prefix? "#!" shebang)
+                            (or (string-contains shebang "/bin/bash")
+                                (string-contains shebang "/bin/sh")))))))
+
+               (define (wrap? file)
+                 ;; Do not wrap shell scripts because some are meant to be
+                 ;; sourced, which breaks if they are wrapped.  We do wrap
+                 ;; the Haskell executables because some call out to Python
+                 ;; directly.
+                 (and (executable-file? file)
+                      (not (symbolic-link? file))
+                      (not (shell-script? file))))
+
+               (for-each (lambda (file)
+                           (wrap-program file
+                             `("PYTHONPATH" ":" prefix (,PYTHONPATH))))
+                         (filter wrap?
+                                 (append (find-files (string-append lib "/ganeti"))
+                                         (find-files sbin))))
+               #t))))))
+    (native-inputs
+     `(("haskell" ,ghc)
+       ("cabal" ,cabal-install)
+       ("m4" ,m4)
+
+       ;; These inputs are necessary to bootstrap the package, because we
+       ;; have patched the build system.
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+
+       ;; For the documentation.
+       ("python-docutils" ,python-docutils)
+       ("sphinx" ,python-sphinx)
+       ("pandoc" ,ghc-pandoc)
+       ("dot" ,graphviz)
+
+       ;; Test dependencies.
+       ("fakeroot" ,fakeroot)
+       ("ghc-temporary" ,ghc-temporary)
+       ("ghc-test-framework" ,ghc-test-framework)
+       ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+       ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
+       ("python-mock" ,python-mock)
+       ("python-pyyaml" ,python-pyyaml)
+       ("openssh" ,openssh)
+       ("procps" ,procps)
+       ("shelltestrunner" ,shelltestrunner)
+       ("tzdata" ,tzdata-for-tests)))
+    (inputs
+     `(("arping" ,iputils)              ;must be the iputils version
+       ("curl" ,curl)
+       ("fping" ,fping)
+       ("iproute2" ,iproute)
+       ("ndisc6" ,ndisc6)
+       ("socat" ,socat)
+       ("qemu" ,qemu-minimal)           ;for qemu-img
+       ("ghc-attoparsec" ,ghc-attoparsec)
+       ("ghc-base64-bytestring" ,ghc-base64-bytestring)
+       ("ghc-cryptonite" ,ghc-cryptonite)
+       ("ghc-curl" ,ghc-curl)
+       ("ghc-hinotify" ,ghc-hinotify)
+       ("ghc-hslogger" ,ghc-hslogger)
+       ("ghc-json" ,ghc-json)
+       ("ghc-lens" ,ghc-lens)
+       ("ghc-lifted-base" ,ghc-lifted-base)
+       ("ghc-network" ,ghc-network)
+       ("ghc-old-time" ,ghc-old-time)
+       ("ghc-psqueue" ,ghc-psqueue)
+       ("ghc-regex-pcre" ,ghc-regex-pcre)
+       ("ghc-utf8-string" ,ghc-utf8-string)
+       ("ghc-zlib" ,ghc-zlib)
+
+       ;; For the optional metadata daemon.
+       ("ghc-snap-core" ,ghc-snap-core)
+       ("ghc-snap-server" ,ghc-snap-server)
+
+       ("python" ,python)
+       ("python-pyopenssl" ,python-pyopenssl)
+       ("python-simplejson" ,python-simplejson)
+       ("python-pyparsing" ,python-pyparsing)
+       ("python-pyinotify" ,python-pyinotify)
+       ("python-pycurl" ,python-pycurl)
+       ("python-bitarray" ,python-bitarray)
+       ("python-paramiko" ,python-paramiko)
+       ("python-psutil" ,python-psutil)))
+    (home-page "http://www.ganeti.org/")
+    (synopsis "Cluster-based virtual machine management system")
+    (description
+     "Ganeti is a virtual machine management tool built on top of existing
+virtualization technologies such as Xen or KVM.  Ganeti controls:
+
+@itemize @bullet
+@item Disk creation management;
+@item Operating system installation for instances (in co-operation with
+OS-specific install scripts); and
+@item Startup, shutdown, and failover between physical systems.
+@end itemize
+
+Ganeti is designed to facilitate cluster management of virtual servers and
+to provide fast and simple recovery after physical failures, using
+commodity hardware.")
+    (license license:bsd-2)))
+
+(define-public ganeti-instance-guix
+  (package
+    (name "ganeti-instance-guix")
+    (version "0.6")
+    (home-page "https://github.com/mbakke/ganeti-instance-guix")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0aa08irpcpns6mhjgsplc5f0p8ab1qcr9ah1gj5z66kxgqyflzrp"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var")))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("util-linux" ,util-linux)
+       ("qemu-img" ,qemu-minimal)))
+    (synopsis "Guix OS integration for Ganeti")
+    (description
+     "This package provides a guest OS definition for Ganeti that uses
+Guix to build virtual machines.")
+    (license license:gpl3+)))
+
+(define-public ganeti-instance-debootstrap
+  (package
+    (name "ganeti-instance-debootstrap")
+    ;; We need two commits on top of the latest release for compatibility
+    ;; with newer sfdisk, as well as gnt-network integration.
+    (version "0.16-2-ge145396")
+    (home-page "https://github.com/ganeti/instance-debootstrap")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0f2isw9d8lawzj21rrq1q9xhq8xfa65rqbhqmrn59z201x9q1336"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'add-absolute-references
+                    (lambda _
+                      (substitute* "common.sh.in"
+                        (("/sbin/blkid") (which "blkid"))
+                        (("kpartx -")
+                         (string-append (which "kpartx") " -")))
+                      (substitute* "import"
+                        (("restore -r")
+                         (string-append (which "restore") " -r")))
+                      (substitute* "export"
+                        (("dump -0")
+                         (string-append (which "dump") " -0")))
+                      (substitute* "create"
+                        (("debootstrap") (which "debootstrap"))
+                        (("`which run-parts`") (which "run-parts"))
+                        ;; Here we actually need to hard code /bin/passwd
+                        ;; because it's called via chroot, which fails if
+                        ;; "/bin" is not in PATH.
+                        (("passwd") "/bin/passwd"))
+                      #t))
+                  (add-after 'unpack 'set-dpkg-arch
+                    (lambda* (#:key system #:allow-other-keys)
+                      ;; The create script passes --arch to debootstrap,
+                      ;; and defaults to `dpkg --print-architecture` when
+                      ;; ARCH is not set in variant.conf.  Hard code the
+                      ;; build-time architecture to avoid the dpkg dependency.
+                      (let ((dpkg-arch
+                             (cond ((string-prefix? "x86_64" system)
+                                    "amd64")
+                                   ((string-prefix? "i686" system)
+                                    "i386")
+                                   ((string-prefix? "aarch64" system)
+                                    "arm64")
+                                   (else (car (string-split system #\-))))))
+                        (substitute* "create"
+                          (("`dpkg --print-architecture`")
+                           dpkg-arch))
+                        #t)))
+                  (add-after 'configure 'adjust-Makefile
+                    (lambda _
+                      ;; Do not attempt to create /etc/ganeti/instance-debootstrap
+                      ;; and /etc/default/ganeti-instance-debootstrap during install.
+                      ;; They are created by the Ganeti service.
+                      (substitute* "Makefile"
+                        (("\\$\\(variantsdir\\)")
+                         "$(prefix)/etc/ganeti/instance-debootstrap/variants")
+                        (("\\$\\(defaultsdir\\)")
+                         "$(prefix)/etc/default/ganeti-instance-debootstrap"))
+                      #t))
+                  (add-after 'install 'make-variants.list-symlink
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; The Ganeti OS API mandates a variants.list file that
+                      ;; describes all supported "variants" of this OS.
+                      ;; Guix generates this file, so make the original file
+                      ;; a symlink to it.
+                      (with-directory-excursion (string-append
+                                                 (assoc-ref outputs "out")
+                                                 "/share/ganeti/os/debootstrap")
+                        (delete-file "variants.list")
+                        (symlink "/etc/ganeti/instance-debootstrap/variants/variants.list"
+                                 "variants.list"))
+                      #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("debianutils" ,debianutils)
+       ("debootstrap" ,debootstrap)
+       ("dump" ,dump)
+       ("kpartx" ,multipath-tools)
+       ("util-linux" ,util-linux)))
+    (synopsis "Debian OS integration for Ganeti")
+    (description
+     "This package provides a guest OS definition for Ganeti.  It installs
+Debian or a derivative using @command{debootstrap}.")
+    (license license:gpl2+)))
+
 (define-public libosinfo
   (package
     (name "libosinfo")
@@ -730,7 +1248,6 @@ virtualization library.")
        ("vte" ,vte)
        ("python-libvirt" ,python-libvirt)
        ("python-requests" ,python-requests)
-       ("python-ipaddress" ,python-ipaddress)
        ("python-pycairo" ,python-pycairo)
        ("python-pygobject" ,python-pygobject)
        ("python-libxml2" ,python-libxml2)
@@ -878,7 +1395,7 @@ mainly implemented in user space.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/abbbi/qmpbackup.git")
+                     (url "https://github.com/abbbi/qmpbackup")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1024,19 +1541,19 @@ Open Container Initiative specification.")
 (define-public umoci
   (package
     (name "umoci")
-    (version "0.4.5")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/openSUSE/umoci/releases/download/v"
-                    version "/umoci.tar.xz"))
-              (file-name (string-append "umoci-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0x1yyvpllz6fyy9xip6f7b6c94v984n3faf8p50fr9y4ygkgi15a"))))
+    (version "0.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/opencontainers/umoci/releases/download/v"
+             version "/umoci.tar.xz"))
+       (file-name (string-append "umoci-" version ".tar.xz"))
+       (sha256
+        (base32 "06q7xfwnqysc013hapx31jhlzmyg8qb467qfkynj673qc7p9bd6h"))))
     (build-system go-build-system)
     (arguments
-     '(#:import-path "github.com/openSUSE/umoci"
+     '(#:import-path "github.com/opencontainers/umoci"
        #:install-source? #f
        #:phases
        (modify-phases %standard-phases
@@ -1197,7 +1714,7 @@ virtual machines.")
     (inputs
      `(("libcap" ,libcap)))
     (native-inputs
-     `(("python-2" ,python-2)
+     `(("python" ,python-wrapper)
        ("util-linux" ,util-linux)))
     (home-page "https://github.com/containers/bubblewrap")
     (synopsis "Unprivileged sandboxing tool")
diff --git a/gnu/packages/vlang.scm b/gnu/packages/vlang.scm
new file mode 100644
index 0000000000..6722258aa1
--- /dev/null
+++ b/gnu/packages/vlang.scm
@@ -0,0 +1,116 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages vlang)
+  #:use-module (gnu packages c)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+(define-public v
+  (package
+   (name "v")
+   (version "0.1.27")
+   (source
+    (origin
+     (method git-fetch)
+     (uri (git-reference
+           (url "https://github.com/vlang/v")
+           (commit version)))
+     (file-name (git-file-name name version))
+     (sha256
+      (base32 "1d9qhacllvkqif42jaayixhjyhx7pzslh8p1yr5p19447q763fq1"))))
+   (build-system gnu-build-system)
+   (arguments
+    '(#:tests? #f ; tests are broken in v 0.1.27
+      #:make-flags
+      `("CC=gcc"
+        "GITCLEANPULL=true"
+        "GITFASTCLONE=mkdir -p"
+        "TCCREPO="
+        "TMPTCC=tcc"
+        ,(string-append "TMPVC=" (assoc-ref %build-inputs "vc"))
+        "VCREPO="
+        "VERBOSE=1"
+        "V_ALWAYS_CLEAN_TMP=false")
+      #:phases
+      (modify-phases %standard-phases
+        (delete 'configure)
+        (add-before 'build 'patch-makefile
+          (lambda _
+            (substitute* "Makefile"
+              (("rm -rf") "true")
+              (("v self") "v -cc gcc cmd/v"))
+            #t))
+        ;; A few tests are broken in v 0.1.27. This function should be
+        ;; enabled to run tests in the next release.
+        ;; (replace 'check
+        ;;   (lambda _
+        ;;     (let* ((tmpbin "tmp/bin")
+        ;;            (gcc (which "gcc")))
+        ;;       (mkdir-p tmpbin)
+        ;;       (symlink gcc (string-append tmpbin "/cc"))
+        ;;       (setenv "PATH" (string-append tmpbin ":" (getenv "PATH")))
+        ;;       (invoke "./v" "test-fixed"))
+        ;;     #t))
+        (replace 'install
+          (lambda _
+            (let* ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+                   (tools (string-append bin "/cmd/tools"))
+                   (thirdparty (string-append bin "/thirdparty"))
+                   (vlib (string-append bin "/vlib"))
+                   (vmod (string-append bin "/v.mod")))
+              (mkdir-p bin)
+              (copy-file "./v" (string-append bin "/v"))
+              ;; v requires as of 0.1.27 that these other components are in the
+              ;; same directory. In a future release we may be able to move
+              ;; these into other output folders.
+              (copy-recursively "cmd/tools" tools)
+              (copy-recursively "thirdparty" thirdparty)
+              (copy-recursively "vlib" vlib)
+              (copy-file "v.mod" vmod))
+            #t)))))
+   (inputs
+    `(("glib" ,glib)
+      ("gcc" ,gcc)))
+   (native-inputs
+    `(("vc"
+       ,(let ((vc-version "0884d7092f4c2a4f8ca16da6f1792efa235247be"))
+          ;; v bootstraps from generated c source code from a dedicated
+          ;; repository. It's readable, as generated source goes, and not at all
+          ;; obfuscated, and it's about 15kb. The original source written in
+          ;; golang is lost to the forces of entropy; modifying the generated c
+          ;; source by hand has been a commonly used technique for iterating on
+          ;; the codebase.
+          (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "https://github.com/vlang/vc")
+                  (commit vc-version)))
+            (file-name (git-file-name "vc" vc-version))
+            (sha256
+             (base32 "17bs09iwxfd0si70j48n9nd16gfgcj8imd0azypk3xzzbz4wybnz")))))))
+   (home-page "https://vlang.io/")
+   (synopsis "Compiler for the V programming language")
+   (description
+    "V is a systems programming language.  It provides memory safety and thread
+safety guarantees with minimal abstraction.")
+   (license license:expat)))
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index dcfbe89829..ab89bad7aa 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2019 Todor Kondić <tk.code@protonmail.com>
 ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,7 +52,7 @@
                 (method git-fetch)
                 (uri
                  (git-reference
-                  (url "https://github.com/TigerVNC/tigervnc.git")
+                  (url "https://github.com/TigerVNC/tigervnc")
                   (commit commit)))
                 (sha256
                  (base32
@@ -233,19 +234,25 @@ where the server is installed.")))
 (define-public libvnc
   (package
     (name "libvnc")
-    (version "0.9.12")
+    (version "0.9.13")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/LibVNC/libvncserver.git")
+             (url "https://github.com/LibVNC/libvncserver")
              (commit (string-append "LibVNCServer-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1226hb179l914919f5nm2mlf8rhaarqbf48aa649p4rwmghyx9vm"))
-       (patches (search-patches "libvnc-CVE-2018-20750.patch"
-                                "libvnc-CVE-2019-15681.patch"))))
+        (base32 "0zz0hslw8b1p3crnfy3xnmrljik359h83dpk64s697dqdcrzy141"))))
     (build-system cmake-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-cc-reference
+                    (lambda _
+                      (substitute* "test/includetest.sh"
+                        (("^cc -I")
+                         "gcc -I"))
+                      #t)))))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 4a26ced824..65cf5bd355 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -227,7 +227,7 @@ the entire VPN in a network namespace accessible only through SSH.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/cernekee/ocproxy.git")
+                     (url "https://github.com/cernekee/ocproxy")
                      (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -327,7 +327,7 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
        ;; Thus, fetch code from Git.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ProtonVPN/linux-cli.git")
+             (url "https://github.com/ProtonVPN/linux-cli")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -462,7 +462,7 @@ with configuration options for most of @command{sshuttle}’s features.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ambrop72/badvpn.git")
+             (url "https://github.com/ambrop72/badvpn")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -501,7 +501,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
 (define-public wireguard-linux-compat
   (package
     (name "wireguard-linux-compat")
-    (version "1.0.20200520")
+    (version "1.0.20200623")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://git.zx2c4.com/wireguard-linux-compat/"
@@ -509,7 +509,7 @@ The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
                                   ".tar.xz"))
               (sha256
                (base32
-                "1hvpbfpdd3v2k27ypa1y1j422irx7hxpz87f50s28jvkxx5sxrqn"))))
+                "0iclixsqfckaz6kz6a4lhzdary3xhfy1d0pz0pgrwy8m8mr3f28k"))))
     (build-system linux-module-build-system)
     (outputs '("out"
                "kernel-patch"))
@@ -648,10 +648,10 @@ public keys and can roam across IP addresses.")
                   (delete 'configure) ;no configure script
                   (add-before 'build 'setup-environment
                     (lambda* (#:key inputs #:allow-other-keys)
-                      (setenv "CFLAGS"
-                              (string-append "-DPPD=\""
-                                             (assoc-ref inputs "ppp")
-                                             "/sbin/pppd\""))
+                      (substitute* "l2tp.h"
+                        (("/usr/sbin/pppd")
+                         (string-append (assoc-ref inputs "ppp")
+                                        "/sbin/pppd")))
                       (setenv "KERNELSRC"
                               (assoc-ref inputs "linux-libre-headers"))
                       #t)))
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index d5f5be6816..fe37b59e26 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -102,6 +102,51 @@ SPIR-V modules.  The project includes an assembler, binary module
 parser,disassembler, validator, and optimizer for SPIR-V.")
     (license license:asl2.0)))
 
+(define-public spirv-cross
+  (package
+    (name "spirv-cross")
+    (version "2020-05-19")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KhronosGroup/SPIRV-Cross")
+             (commit version)))
+       (sha256
+        (base32 "0zyijp9zx9wbd4i5lwjap7n793iz6yjkf27la60dsffxl75yy9pd"))
+       (file-name (git-file-name name version))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DSPIRV_CROSS_SHARED=YES")
+       ;; FIXME: The following tests fail:
+       ;;   15 - spirv-cross-test-opt
+       ;;   16 - spirv-cross-test-metal-opt
+       ;;   17 - spirv-cross-test-hlsl-opt
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-tests-to-find-deps
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{CMAKE_(.*)_DIR\\}/external/glslang(.*)/bin")
+                (string-append (assoc-ref inputs "glslang") "/bin")))
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{CMAKE_(.*)_DIR\\}/external/spirv-tools(.*)/bin")
+                (string-append (assoc-ref inputs "spirv-tools") "/bin")))
+             #t)))))
+    (inputs
+     `(("glslang" ,glslang)
+       ("spirv-headers" ,spirv-headers)
+       ("spirv-tools" ,spirv-tools)))
+    (native-inputs `(("python" ,python)))
+    (home-page "https://github.com/KhronosGroup/SPIRV-Cross")
+    (synopsis "Parser for and converter of SPIR-V to other shader languages")
+    (description
+     "SPIRV-Cross tries hard to emit readable and clean output from the
+SPIR-V, aiming to emit GLSL or MSL that looks like human-written code.")
+    (license license:asl2.0)))
+
 (define-public glslang
   (package
     (name "glslang")
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index c30a4ff3a2..65ab7732bc 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages web-browsers)
+  #:use-module (guix build-system asdf)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go)
+  #:use-module (guix build-system python)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (gnu packages)
@@ -38,16 +47,19 @@
   #:use-module (gnu packages fltk)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
-  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnome-xyz)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp)
   #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages lua)
-  #:use-module (gnu packages gnome)
-  #:use-module (gnu packages gnome-xyz)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -55,20 +67,10 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages image)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages webkit)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages gcc)
-  #:use-module (guix download)
-  #:use-module (guix git-download)
-  #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix build-system glib-or-gtk)
-  #:use-module (guix build-system python)
-  #:use-module (guix build-system asdf)
-  #:use-module (guix build-system go))
+  #:use-module (gnu packages xorg))
 
 (define-public midori
   (package
@@ -187,14 +189,16 @@ older or slower computers and embedded systems.")
                        (string-append "--prefix=" out)
                        "--enable-graphics")
                #t))))))
-    (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("zlib" ,zlib)
-              ("openssl" ,openssl)
-              ("libjpeg" ,libjpeg-turbo)
-              ("libtiff" ,libtiff)
+    (native-inputs `(("linux-libre-headers" ,linux-libre-headers)
+                     ("pkg-config" ,pkg-config)))
+    (inputs `(("gpm" ,gpm)
               ("libevent" ,libevent)
+              ("libjpeg" ,libjpeg-turbo)
               ("libpng" ,libpng)
-              ("libxt" ,libxt)))
+              ("libtiff" ,libtiff)
+              ("libxt" ,libxt)
+              ("openssl" ,openssl)
+              ("zlib" ,zlib)))
     (synopsis "Text and graphics mode web browser")
     (description "Links is a graphics and text mode web browser, with many
 features including, tables, builtin image display, bookmarks, SSL and more.")
@@ -215,7 +219,7 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/luakit/luakit.git")
+                     (url "https://github.com/luakit/luakit")
                      (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -340,7 +344,7 @@ access.")
 (define-public qutebrowser
   (package
     (name "qutebrowser")
-    (version "1.12.0")
+    (version "1.13.1")
     (source
      (origin
        (method url-fetch)
@@ -348,7 +352,7 @@ access.")
                            "qutebrowser/releases/download/v" version "/"
                            "qutebrowser-" version ".tar.gz"))
        (sha256
-        (base32 "0pywyhi4v6ymxpn85grrdr1agmcxsnm5jfqf3rlxqx5swbnxbfs1"))))
+        (base32 "1n72dvrv4dch4i07lsis76p7g16a039fwx8rk7w8q9f60wgqb5i8"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-attrs" ,python-attrs))) ; for tests
@@ -452,247 +456,136 @@ vim editor and also easily configurable during runtime.  Vimb is mostly keyboard
 driven and does not detract you from your daily work.")
     (license license:gpl3+)))
 
-(define next-gtk-webkit
-  (package
-    (name "next-gtk-webkit")
-    (version "1.5.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             ;; TODO: Mirror seems to hang, let's fallback to GitHub for now.
-             ;; (url "https://source.atlas.engineer/public/next")
-             (url "https://github.com/atlas-engineer/next")
-             (commit version)))
-       (sha256
-        (base32
-         "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy"))
-       (file-name (git-file-name "next" version))))
-    (build-system glib-or-gtk-build-system)
-    (arguments
-     `(#:tests? #f                      ; no tests
-       #:make-flags (list "gtk-webkit"
-                          "CC=gcc"
-                          (string-append "PREFIX=" %output))
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (replace 'install
-           (lambda* (#:key (make-flags '()) #:allow-other-keys)
-             (apply invoke "make" "install-gtk-webkit" make-flags))))))
-    (inputs
-     `(("glib-networking" ,glib-networking)
-       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
-       ("webkitgtk" ,webkitgtk)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "https://next.atlas.engineer")
-    (synopsis "Extensible web-browser in Common Lisp")
-    (description "Next is a keyboard-oriented, extensible web-browser
+(define-public nyxt
+  ;; 1.5.0 does not build anymore, let's use the master which is more stable anyways.
+  (let ((commit "9440980a9c5f75232b08ca98183b22be4a3d9bc3"))
+    (package
+      (name "nyxt")
+      (version (git-version "1.5.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               ;; TODO: Mirror seems to hang, let's fallback to GitHub for now.
+               ;; (url "https://source.atlas.engineer/public/nyxt")
+               (url "https://github.com/atlas-engineer/nyxt")
+               (commit commit)))
+         (sha256
+          (base32
+           "079n5ffsa8136i9ik5mn4rwa3iv0avncw6y973gj3hlf8sf4wv7g"))
+         (file-name (git-file-name "nyxt" version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list "nyxt" "NYXT_INTERNAL_QUICKLISP=false"
+                            (string-append "DESTDIR=" (assoc-ref %outputs "out"))
+                            "PREFIX=")
+         #:strip-binaries? #f           ; Stripping breaks SBCL binaries.
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-version ; Version is guessed from .git which Guix does not have.
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((version (format #f "~a" ,version)))
+                 (substitute* "source/global.lisp"
+                   (("version\\)\\)\\)")
+                    (string-append "version)))"
+                                   "\n"
+                                   "(setf +version+ \"" version "\")"))))
+               #t))
+           (add-before 'build 'make-desktop-version-number
+             (lambda _
+               (with-output-to-file "version"
+                 (lambda _
+                   (format #t "~a" ,version)))))
+
+           (delete 'configure)
+           (add-before 'build 'fix-common-lisp-cache-folder
+             (lambda _
+               (setenv "HOME" "/tmp")
+               #t))
+           (add-after 'install 'wrap-program
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((bin (string-append (assoc-ref outputs "out") "/bin/nyxt"))
+                      (glib-networking (assoc-ref inputs "glib-networking"))
+                      (libs '("gsettings-desktop-schemas"))
+                      (path (string-join
+                             (map (lambda (lib)
+                                    (string-append (assoc-ref inputs lib) "/lib"))
+                                  libs)
+                             ":"))
+                      (gi-path (string-join
+                                (map (lambda (lib)
+                                       (string-append (assoc-ref inputs lib) "/lib/girepository-1.0"))
+                                     libs)
+                                ":"))
+                      (xdg-path (string-join
+                                 (map (lambda (lib)
+                                        (string-append (assoc-ref inputs lib) "/share"))
+                                      libs)
+                                 ":")))
+                 (wrap-program bin
+                   `("GIO_EXTRA_MODULES" prefix
+                     (,(string-append glib-networking "/lib/gio/modules")))
+                   `("GI_TYPELIB_PATH" prefix (,gi-path))
+                   `("LD_LIBRARY_PATH" ":" prefix (,path))
+                   `("XDG_DATA_DIRS" ":" prefix (,xdg-path)))
+                 #t))))))
+      (native-inputs
+       `(("prove" ,sbcl-prove)
+         ("sbcl" ,sbcl)))
+      (inputs
+       ;; We need to avoid sbcl-* inputs (sbcl-cl-cffi-gtk in particular) as they
+       ;; seem to cause Nyxt to hang into a hogging process in about 10 minutes.
+       ;; Probably an issue between CFFI and how we build SBCL packages.
+       ;; See https://github.com/atlas-engineer/nyxt/issues/680.
+       `(("alexandria" ,cl-alexandria)
+         ("bordeaux-threads" ,cl-bordeaux-threads)
+         ("cl-containers" ,cl-containers)
+         ("cl-css" ,cl-css)
+         ("cl-json" ,cl-json)
+         ("cl-markup" ,cl-markup)
+         ("cl-ppcre" ,cl-ppcre)
+         ("cl-prevalence" ,cl-prevalence)
+         ("closer-mop" ,cl-closer-mop)
+         ("cluffer" ,cl-cluffer)
+         ("dexador" ,cl-dexador)
+         ("enchant" ,cl-enchant)
+         ("fset" ,cl-fset)
+         ("iolib" ,cl-iolib)
+         ("local-time" ,cl-local-time)
+         ("log4cl" ,cl-log4cl)
+         ("lparallel" ,cl-lparallel)
+         ("mk-string-metrics" ,cl-mk-string-metrics)
+         ("moptilities" ,cl-moptilities)
+         ("osicat" ,sbcl-osicat)       ; SBCL version needed for libosicat.so.
+         ("parenscript" ,cl-parenscript)
+         ("plump" ,cl-plump)
+         ("quri" ,cl-quri)
+         ("serapeum" ,cl-serapeum)
+         ("str" ,cl-str)
+         ("swank" ,cl-slime-swank)
+         ("trivia" ,cl-trivia)
+         ("trivial-clipboard" ,cl-trivial-clipboard)
+         ("trivial-features" ,cl-trivial-features)
+         ("trivial-package-local-nicknames" ,cl-trivial-package-local-nicknames)
+         ("trivial-types" ,cl-trivial-types)
+         ("unix-opts" ,cl-unix-opts)
+         ;; WebKitGTK deps
+         ("cl-cffi-gtk" ,cl-cffi-gtk)
+         ("cl-webkit" ,cl-webkit)
+         ("glib-networking" ,glib-networking)
+         ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
+      (synopsis "Extensible web-browser in Common Lisp")
+      (home-page "https://nyxt.atlas.engineer")
+      (description "Nyxt is a keyboard-oriented, extensible web-browser
 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
-  (package
-    (inherit next-gtk-webkit)
-    (name "sbcl-next-download-manager")
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:tests? #f                      ; Need online access.
-       #:asd-file "next.asd"
-       #:asd-system-name "next/download-manager"))
-    (inputs
-     `(("cl-ppcre" ,sbcl-cl-ppcre)
-       ("dexador" ,sbcl-dexador)
-       ("log4cl" ,sbcl-log4cl)
-       ("lparallel" ,sbcl-lparallel)
-       ("quri" ,sbcl-quri)
-       ("str" ,sbcl-cl-str)))
-    (native-inputs
-     `(("trivial-features" ,sbcl-trivial-features)
-       ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Extensible web-browser in Common Lisp (download manager)")))
-
-(define sbcl-next-ring
-  (package
-    (inherit next-gtk-webkit)
-    (name "sbcl-next-ring")
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:tests? #t
-       #:asd-file "next.asd"
-       #:asd-system-name "next/ring"))
-    (native-inputs
-     `(("trivial-features" ,sbcl-trivial-features)
-       ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Extensible web-browser in Common Lisp (ring)")))
-
-(define sbcl-next-history-tree
-  (package
-    (inherit next-gtk-webkit)
-    (name "sbcl-next-history-tree")
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:tests? #t
-       #:asd-file "next.asd"
-       #:asd-system-name "next/history-tree"))
-    (native-inputs
-     `(("trivial-features" ,sbcl-trivial-features)
-       ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Extensible web-browser in Common Lisp (history-tree)")))
-
-(define sbcl-next-password-manager
-  (package
-    (inherit next-gtk-webkit)
-    (name "sbcl-next-password-manager")
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:tests? #t
-       #:asd-file "next.asd"
-       #:asd-system-name "next/password-manager"))
-    (inputs
-     `(("bordeaux-threads" ,sbcl-bordeaux-threads)
-       ("cl-annot" ,sbcl-cl-annot)
-       ("cl-ppcre" ,sbcl-cl-ppcre)
-       ("str" ,sbcl-cl-str)
-       ("trivial-clipboard" ,sbcl-trivial-clipboard)))
-    (native-inputs
-     `(("trivial-features" ,sbcl-trivial-features)
-       ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Extensible web-browser in Common Lisp (password manager)")))
-
-(define sbcl-next-hooks
-  (package
-    (inherit next-gtk-webkit)
-    (name "sbcl-next-hooks")
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:tests? #t
-       #:asd-file "next.asd"
-       #:asd-system-name "next/hooks"))
-    (inputs
-     `(("alexandria" ,sbcl-alexandria)
-       ("serapeum" ,sbcl-serapeum)))
-    (native-inputs
-     `(("trivial-features" ,sbcl-trivial-features)
-       ("prove-asdf" ,sbcl-prove-asdf)))
-    (synopsis "Infinitely extensible web-browser (hooks)")))
+      (license license:bsd-3))))
 
 (define-public next
-  (let ((version (package-version next-gtk-webkit)))
-    (package
-      (inherit next-gtk-webkit)
-      (name "next")
-      (build-system asdf-build-system/sbcl)
-      (outputs '("out" "lib"))
-      (arguments
-       `(#:tests? #f                    ; no tests
-         #:asd-system-name "next"
-         #:phases (modify-phases %standard-phases
-                    (add-after 'unpack 'patch-platform-port-path
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        (substitute* "source/ports/gtk-webkit.lisp"
-                          (("\"next-gtk-webkit\"")
-                           (string-append "\"" (assoc-ref inputs "next-gtk-webkit")
-                                          "/bin/next-gtk-webkit\"")))
-                        #t))
-                    (add-after 'patch-platform-port-path 'patch-version
-                      ;; When the version is not just dot-separated numerals
-                      ;; (e.g. a git-commit version), Guix modifies the .asd with
-                      ;; an illegal version number, and then Next fails to query
-                      ;; it.  So we hard-code it here.
-                      (lambda* (#:key inputs #:allow-other-keys)
-                        (let ((version (format #f "~a" ,version)))
-                          (substitute* "source/global.lisp"
-                            (("version\\)\\)\\)")
-                             (string-append "version)))
-(setf +version+ \"" version "\")"))))
-                        #t))
-                    (add-before 'cleanup 'move-bundle
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        (define lib (assoc-ref outputs "lib"))
-                        (define actual-fasl (string-append
-                                             lib
-                                             "/lib/sbcl/next.fasl"))
-                        (define expected-fasl (string-append
-                                               lib
-                                               "/lib/sbcl/next--system.fasl"))
-                        (copy-file actual-fasl expected-fasl)
-                        #t))
-                    (add-after 'create-symlinks 'build-program
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        (build-program
-                         (string-append (assoc-ref outputs "out") "/bin/next")
-                         outputs
-                         #:entry-program '((next:entry-point) 0))))
-                    (add-before 'build 'install-assets
-                      ;; Since the ASDF build system generates a new .asd with a
-                      ;; possibly suffixed and thus illegal version number, assets
-                      ;; should not be installed after the 'build phase or else
-                      ;; the illegal version will result in NIL in the .desktop
-                      ;; file.
-                      (lambda* (#:key outputs #:allow-other-keys)
-                        (with-output-to-file "version"
-                          (lambda _
-                            (format #t "~a" ,(package-version next-gtk-webkit))))
-                        (invoke "make" "install-assets"
-                                (string-append "PREFIX="
-                                               (assoc-ref outputs "out")))))
-                    (add-after 'unpack 'fix-lambda-list
-                      ;; Starting from SBCL 2.0.2, Next 1.5.0 won't build
-                      ;; because of a weird lambda list type.
-                      (lambda _
-                        (substitute* "source/keymap.lisp"
-                          (("^\\(declaim .* define-key\\)\\)") ""))
-                        (substitute* "source/search-buffer.lisp"
-                          (("define-key :keymap keymap \"C-s\"") "define-key \"C-s\"")
-                          (("\\(update-selection-highlight-hint :follow t :scroll t\\)\\)\\)")
-                           "(update-selection-highlight-hint :follow t :scroll t)) :keymap keymap)")))))))
-      (inputs
-       `(("alexandria" ,sbcl-alexandria)
-         ("bordeaux-threads" ,sbcl-bordeaux-threads)
-         ("cl-annot" ,sbcl-cl-annot)
-         ("cl-ansi-text" ,sbcl-cl-ansi-text)
-         ("cl-css" ,sbcl-cl-css)
-         ("cl-json" ,sbcl-cl-json)
-         ("cl-markup" ,sbcl-cl-markup)
-         ("cl-ppcre" ,sbcl-cl-ppcre)
-         ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
-         ("cl-prevalence" ,sbcl-cl-prevalence)
-         ("closer-mop" ,sbcl-closer-mop)
-         ("dbus" ,cl-dbus)
-         ("dexador" ,sbcl-dexador)
-         ("ironclad" ,sbcl-ironclad)
-         ("local-time" ,sbcl-local-time)
-         ("log4cl" ,sbcl-log4cl)
-         ("lparallel" ,sbcl-lparallel)
-         ("mk-string-metrics" ,sbcl-mk-string-metrics)
-         ("parenscript" ,sbcl-parenscript)
-         ("plump" ,sbcl-plump)
-         ("quri" ,sbcl-quri)
-         ("serapeum" ,sbcl-serapeum)
-         ("sqlite" ,sbcl-cl-sqlite)
-         ("str" ,sbcl-cl-str)
-         ("swank" ,sbcl-slime-swank)
-         ("trivia" ,sbcl-trivia)
-         ("trivial-clipboard" ,sbcl-trivial-clipboard)
-         ("unix-opts" ,sbcl-unix-opts)
-         ;; Local deps
-         ("next-gtk-webkit" ,next-gtk-webkit)
-         ("next-download-manager" ,sbcl-next-download-manager)
-         ("next-ring" ,sbcl-next-ring)
-         ("next-history-tree" ,sbcl-next-history-tree)
-         ("next-password-manager" ,sbcl-next-password-manager)
-         ("next-hooks" ,sbcl-next-hooks)))
-      (native-inputs
-       `(("trivial-features" ,sbcl-trivial-features)
-         ("trivial-types" ,sbcl-trivial-types)
-         ("prove-asdf" ,sbcl-prove-asdf)))
-      (synopsis "Extensible web-browser in Common Lisp"))))
+  (deprecated-package "next" nyxt))
 
 (define-public sbcl-next
-  (deprecated-package "sbcl-next" next))
+  (deprecated-package "sbcl-next" nyxt))
 
 (define-public bombadillo
   (package
@@ -728,7 +621,7 @@ key-bindings and is fully configurable and extensible in Common Lisp.")
                           (install-file "bombadillo.1" mandir)
                           (install-file "bombadillo-icon.png" pixdir)
                           #t)))))))
-    (home-page "http://bombadillo.colorfield.space")
+    (home-page "https://bombadillo.colorfield.space")
     (synopsis "Terminal browser for the gopher, gemini, and finger protocols")
     (description "Bombadillo is a non-web browser for the terminal with
 vim-like key bindings, a document pager, configurable settings, and robust
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index ce86c9e6de..6907e133e6 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -198,7 +198,7 @@ and its related documentation.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/GrahamDumpleton/mod_wsgi.git")
+                    (url "https://github.com/GrahamDumpleton/mod_wsgi")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -423,7 +423,7 @@ documentation.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/giom/nginx_accept_language_module.git")
+               (url "https://github.com/giom/nginx_accept_language_module")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -647,7 +647,7 @@ APIs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/gnosek/fcgiwrap.git")
+             (url "https://github.com/gnosek/fcgiwrap")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -844,7 +844,7 @@ It aims to conform to RFC 7159.")
               ;; do not use auto-generated tarballs
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/udp/json-parser.git")
+                    (url "https://github.com/udp/json-parser")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -874,7 +874,7 @@ project)
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/flavio/qjson.git")
+                    (url "https://github.com/flavio/qjson")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -914,7 +914,7 @@ instances, while JSON's objects will be mapped to @code{QVariantMap}.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/ayoy/qoauth.git")
+                    (url "https://github.com/ayoy/qoauth")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1045,7 +1045,7 @@ current version of any major web browser.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/Tencent/rapidjson.git")
+                    (url "https://github.com/Tencent/rapidjson")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1086,7 +1086,7 @@ style API.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/lloyd/yajl.git")
+                    (url "https://github.com/lloyd/yajl")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1117,7 +1117,7 @@ parser written in ANSI C and a small validating JSON generator.")
               ;; things from Git.
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/warmcat/libwebsockets.git")
+                    (url "https://github.com/warmcat/libwebsockets")
                     (commit (string-append "v" version
                                            "-chrome37-firefox30"))))
               (sha256
@@ -1196,7 +1196,7 @@ other systems that want to manipulate WebAssembly files.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/zaphoyd/websocketpp.git")
+             (url "https://github.com/zaphoyd/websocketpp")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1225,16 +1225,16 @@ high performance.")
 (define-public wslay
   (package
     (name "wslay")
-    (version "1.1.0")
+    (version "1.1.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tatsuhiro-t/wslay.git")
+             (url "https://github.com/tatsuhiro-t/wslay")
              (commit (string-append "release-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0ak9a6hsanhys40yhv7c2gqkfghpm6jx36j1pnml8ajvgaky5q98"))))
+        (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
     (build-system gnu-build-system)
     (arguments
      ;; Parallel builds don't reliably succeed.
@@ -1406,7 +1406,7 @@ of people.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/novnc/websockify.git")
+                    (url "https://github.com/novnc/websockify")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1492,14 +1492,12 @@ hash/signatures.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "http://pyyaml.org/download/libyaml/yaml-"
-             version ".tar.gz"))
+       (uri (string-append "https://pyyaml.org/download/libyaml/yaml-"
+                           version ".tar.gz"))
        (sha256
-        (base32
-         "0mq5wf17ifcwwxq3kbimhi53jn3fg23vcynqpzxjcz3vfjlfs2nq"))))
+        (base32 "0mq5wf17ifcwwxq3kbimhi53jn3fg23vcynqpzxjcz3vfjlfs2nq"))))
     (build-system gnu-build-system)
-    (home-page "http://pyyaml.org/wiki/LibYAML")
+    (home-page "https://pyyaml.org/wiki/LibYAML")
     (synopsis "YAML 1.1 parser and emitter written in C")
     (description
      "LibYAML is a YAML 1.1 parser and emitter written in C.")
@@ -1667,7 +1665,7 @@ minimum to provide high performance operation.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sass/libsass.git")
+                    (url "https://github.com/sass/libsass")
                     (commit version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1701,7 +1699,7 @@ stylesheets, you'll need to use another program that uses this library,
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/sass/sassc.git")
+                    (url "https://github.com/sass/sassc")
                     (commit  version)))
               (file-name (git-file-name name version))
               (sha256
@@ -1758,7 +1756,7 @@ language known as SASS.")
            (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/sass/libsass.git")
+                   (url "https://github.com/sass/libsass")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -5021,7 +5019,7 @@ written in C.  It is developed as part of the NetSurf project.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/tlsa/libcyaml.git")
+             (url "https://github.com/tlsa/libcyaml")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5041,8 +5039,7 @@ written in C.  It is developed as part of the NetSurf project.")
     (inputs
      `(("libyaml" ,libyaml)))
     (native-inputs
-     `(("git", git)
-       ("pkg-config", pkg-config)))
+     `(("pkg-config", pkg-config)))
     (synopsis "C library for reading and writing YAML")
     (description
      "LibCYAML is a C library written in ISO C11 for reading and writing
@@ -5748,7 +5745,7 @@ additional capabilities.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/openSUSE/xinetd.git")
+             (url "https://github.com/openSUSE/xinetd")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -5823,7 +5820,7 @@ functions of Tidy.")
 (define-public hiawatha
   (package
     (name "hiawatha")
-    (version "10.10")
+    (version "10.11")
     (source
      (origin
        (method url-fetch)
@@ -5836,7 +5833,7 @@ functions of Tidy.")
                              (list "extra/nghttp2.tgz" "mbedtls"))
                    #t))
        (sha256
-        (base32 "1nd46cx1qp5lh2kwnn2mlwk9zm8jm7pgf90xs9vpwr7saxbnzr5m"))))
+        (base32 "09wpgilbv13zal71v9lbsqr8c3fignygadykpd1p1pb8blb5vn3r"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests included
@@ -7233,7 +7230,10 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.")
              `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation
        ("libev" ,libev)
        ("libxml2" ,libxml2)             ; for ‘nghttp -a’
-       ("openssl" ,openssl)))
+       ("openssl" ,openssl)
+       ,@(if (hurd-target?)
+             `(("openssl-static" ,openssl "static"))
+             '())))
     (arguments
      `(#:configure-flags
        (list (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
@@ -7309,7 +7309,7 @@ compressed JSON header blocks.
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/UMCUGenetics/hpcguix-web.git")
+                      (url "https://github.com/UMCUGenetics/hpcguix-web")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -7370,9 +7370,10 @@ compressed JSON header blocks.
          ("uglify-js" ,uglify-js)
          ("pkg-config" ,pkg-config)))
       (inputs
-       `(("guix" ,guix)))
+       `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
+         ("guix" ,guix)))
       (propagated-inputs
-       `(("guile" ,guile-3.0)
+       `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
          ("guile-commonmark" ,guile-commonmark)
          ("guile-json" ,guile-json-4)))
       (home-page "https://github.com/UMCUGenetics/hpcguix-web")
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 3804209841..fd70ad435a 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -121,14 +121,14 @@ engine that uses Wayland for graphics output.")
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.28.2")
+    (version "2.28.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   "webkitgtk-" version ".tar.xz"))
               (sha256
                (base32
-                "1g9hik3bprki5s9d7y5288q5irwckbzajr6rnlvjrlnqrwjkblmr"))
+                "08imj2q6h975mz7714dqdrmbav0s884990gf98xf2862fb08m2gh"))
               (patches (search-patches "webkitgtk-share-store.patch"))))
     (build-system cmake-build-system)
     (outputs '("out" "doc"))
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index aeec63a1b9..047542a367 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -76,7 +76,7 @@
 (define-public wine
   (package
     (name "wine")
-    (version "5.3")
+    (version "5.12")
     (source
      (origin
        (method url-fetch)
@@ -88,7 +88,7 @@
               (string-append "https://dl.winehq.org/wine/source/" dir
                              "wine-" version ".tar.xz")))
        (sha256
-        (base32 "1pkzj3656ad0vmc7ciwfzn45lb2kxwbyymfwnqaa105dicicf6wv"))))
+        (base32 "0bl4ii4h1w4z8kb6dpdc1pgwk0wrhm61c2q2nzpcckkrqra75wc7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
@@ -328,7 +328,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
     (name "wine-staging-patchset-data")
-    (version "5.8")
+    (version "5.12.1")
     (source
      (origin
        (method git-fetch)
@@ -337,7 +337,7 @@ integrate Windows applications into your desktop.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07i11alcymkfj1vgadcxd6khvjk1ay0x2dddwrvnc4gag9lvkddr"))))
+        (base32 "135ddf4zsxwbi0nhvjpqfvqjrh18f3c6hmhcsbm5mc8zmpjpmzdj"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("bash" ,bash)
@@ -375,19 +375,20 @@ integrate Windows applications into your desktop.")
     (name "wine-staging")
     (version (package-version wine-staging-patchset-data))
     (source
-     (origin
-       (method url-fetch)
-       (uri (let ((dir (string-append
-                        (version-major version)
-                        (if (string-suffix? ".0" (version-major+minor version))
-                            ".0"
-                            ".x"))))
-              (string-append
-               "https://dl.winehq.org/wine/source/" dir
-               "/wine-" version ".tar.xz")))
-       (file-name (string-append name "-" version ".tar.xz"))
-       (sha256
-        (base32 "1krk68lsfvisi0zpx7890cz0z5bp7jl7rka5d70vwyj3c7109bfb"))))
+     (let* ((wine-version (version-major+minor version))
+            (subdirectory (string-append
+                           (version-major version)
+                           (if (string-suffix? ".0" wine-version)
+                               ".0"
+                               ".x"))))
+       (origin
+         (method url-fetch)
+         (uri (string-append "https://dl.winehq.org/wine/source/"
+                             subdirectory "/"
+                             "wine-" wine-version ".tar.xz"))
+         (file-name (string-append name "-" wine-version ".tar.xz"))
+         (sha256
+          (base32 "0bl4ii4h1w4z8kb6dpdc1pgwk0wrhm61c2q2nzpcckkrqra75wc7")))))
     (inputs `(("autoconf" ,autoconf)    ; for autoreconf
               ("ffmpeg" ,ffmpeg)
               ("gtk+" ,gtk+)
diff --git a/gnu/packages/wireservice.scm b/gnu/packages/wireservice.scm
index 0d772b54d1..e3bfe8d478 100644
--- a/gnu/packages/wireservice.scm
+++ b/gnu/packages/wireservice.scm
@@ -67,7 +67,7 @@
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/wireservice/leather.git")
+                   (url "https://github.com/wireservice/leather")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -93,7 +93,7 @@ charts now and don't care if they're perfect.")))
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/wireservice/agate.git")
+                   (url "https://github.com/wireservice/agate")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -126,7 +126,7 @@ code.  Agate was previously known as journalism.")))
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/wireservice/agate-sql.git")
+                   (url "https://github.com/wireservice/agate-sql")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -152,7 +152,7 @@ support to all @code{agate.Table} instances.")))
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/wireservice/agate-dbf.git")
+                   (url "https://github.com/wireservice/agate-dbf")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
@@ -177,7 +177,7 @@ for dbf files support to all @code{agate.Table} instances.")))
    (source (origin
              (method git-fetch)
              (uri (git-reference
-                   (url "https://github.com/wireservice/agate-excel.git")
+                   (url "https://github.com/wireservice/agate-excel")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 61cbedef5c..2849873329 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -121,7 +121,7 @@
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/baskerville/bspwm.git")
+             (url "https://github.com/baskerville/bspwm")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -403,7 +403,7 @@ Despite the name it should work with any X11 window manager.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vivien/i3blocks.git")
+                    (url "https://github.com/vivien/i3blocks")
                     (commit version)))
               (sha256
                (base32
@@ -458,7 +458,7 @@ You can then subscribe to events or send messages and receive their replies.")
        ;; for years.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ziberna/i3-py.git")
+             (url "https://github.com/ziberna/i3-py")
              (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
        (sha256
         (base32
@@ -503,7 +503,7 @@ subscribe to events.")
          ;; instead of the release.
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/proxypoke/quickswitch-for-i3.git")
+               (url "https://github.com/proxypoke/quickswitch-for-i3")
                (commit commit)))
          (sha256
           (base32
@@ -541,7 +541,7 @@ prompt.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/PandorasFox/i3lock-color.git")
+             (url "https://github.com/PandorasFox/i3lock-color")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -584,7 +584,7 @@ Features include:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/meskarune/i3lock-fancy.git")
+             (url "https://github.com/meskarune/i3lock-fancy")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1012,14 +1012,14 @@ dynamic and extensible using the Lua programming language.")
 (define-public menumaker
   (package
     (name "menumaker")
-    (version "0.99.11")
+    (version "0.99.12")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/menumaker/"
                            "menumaker-" version ".tar.gz"))
        (sha256
-        (base32 "0dprndnhwm7b803zkp4pisiq06ic9iv8vr42in5is47jmvdim0wx"))))
+        (base32 "034v5204bsgkzzk6zfa5ia63q95gln47f7hwf96yvad5hrhmd8z3"))))
     (build-system gnu-build-system)
     (inputs
      `(("python" ,python)))
@@ -1109,7 +1109,7 @@ Keybinder works with GTK-based applications using the X Window System.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/conformal/spectrwm.git")
+             (url "https://github.com/conformal/spectrwm")
              (commit
               (string-append "SPECTRWM_"
                              (string-join (string-split version #\.) "_")))))
@@ -1317,7 +1317,7 @@ functionality to display information about the most commonly used services.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/wlroots.git")
+             (url "https://github.com/swaywm/wlroots")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1362,7 +1362,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/sway.git")
+             (url "https://github.com/swaywm/sway")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1414,7 +1414,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swayidle.git")
+             (url "https://github.com/swaywm/swayidle")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1440,7 +1440,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swaylock.git")
+             (url "https://github.com/swaywm/swaylock")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1468,7 +1468,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swaybg.git")
+             (url "https://github.com/swaywm/swaybg")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1493,7 +1493,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Alexays/Waybar.git")
+             (url "https://github.com/Alexays/Waybar")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1531,7 +1531,7 @@ Wlroots based compositors.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emersion/mako.git")
+             (url "https://github.com/emersion/mako")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1559,7 +1559,7 @@ compositors that support the layer-shell protocol.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stumpwm/stumpwm.git")
+             (url "https://github.com/stumpwm/stumpwm")
              (commit version)))
        (file-name (git-file-name "stumpwm" version))
        (sha256
@@ -1669,8 +1669,9 @@ productive, customizable lisp based systems.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/stumpwm/stumpwm-contrib.git")
+               (url "https://github.com/stumpwm/stumpwm-contrib")
                (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml"))))
       (build-system asdf-build-system/sbcl)
@@ -1742,7 +1743,7 @@ rendering.")
          (add-after 'unpack 'chdir
            (lambda _ (chdir "util/pass") #t)))))
     (home-page "https://github.com/stumpwm/stumpwm-contrib")
-    (synopsis "Integrate @code{pass} wih StumpWM")
+    (synopsis "Integrate @code{pass} with StumpWM")
     (description "This package provides an interface which integrates
 password-store into StumpWM.")
     (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 2cdff17404..7141b2f4b8 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -162,7 +162,7 @@ and many other languages.")
             (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/wxWidgets/wxWidgets.git")
+                    (url "https://github.com/wxWidgets/wxWidgets")
                     (commit (string-append "v" version))))
               (file-name (git-file-name "wxwidgets" version))
               (sha256
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 7cf8cc9a67..20702c3a4f 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -37,6 +37,8 @@
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
+;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -220,7 +222,7 @@ used to further tweak the behaviour of the different profiles.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Cloudef/bemenu.git")
+             (url "https://github.com/Cloudef/bemenu")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -264,7 +266,7 @@ with X11 or Wayland, or in a text terminal with ncurses.")
   (source (origin
             (method git-fetch)
             (uri (git-reference
-                   (url "https://github.com/hluk/CopyQ.git")
+                   (url "https://github.com/hluk/CopyQ")
                    (commit (string-append "v" version))))
             (file-name (git-file-name name version))
             (sha256
@@ -295,7 +297,7 @@ application.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/astrand/xclip.git")
+             (url "https://github.com/astrand/xclip")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -626,17 +628,18 @@ move windows, switch between desktops, etc.).")
 (define-public scrot
   (package
     (name "scrot")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/resurrecting-open-source-projects/scrot.git")
+         (url "https://github.com/resurrecting-open-source-projects/scrot")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0x70hd59ik37kqd8xqpwrz46np01jv324iz28x2s0kk36d7sblsj"))))
+        (base32
+         "12xq6glg70icwsvbnfw9gm4dahlbnrc7b6adpd0mpf89h4sj2gds"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -646,6 +649,7 @@ move windows, switch between desktops, etc.).")
      `(("giblib" ,giblib)
        ("libx11" ,libx11)
        ("libXcursor" ,libxcursor)
+       ("libxcomposite" ,libxcomposite)
        ("libXfixes" ,libxfixes)))
     (home-page "https://github.com/resurrecting-open-source-projects/scrot")
     (synopsis "Command-line screen capture utility for X Window System")
@@ -664,7 +668,7 @@ of the screen selected by mouse.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/naelstrof/slop.git")
+                    (url "https://github.com/naelstrof/slop")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -697,7 +701,7 @@ selection's dimensions to stdout.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/naelstrof/maim.git")
+                    (url "https://github.com/naelstrof/maim")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1050,7 +1054,7 @@ within a single process.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alols/xcape.git")
+                    (url "https://github.com/alols/xcape")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1080,7 +1084,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "1.3")
+    (version "1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1088,7 +1092,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "0g48cdg2qpvrr2nk8ccibjg3iv7iqskdv66izxacqx70w47y1771"))))
+                "1rk661cymmahak9rw0wcssnfszbngq74vp7zc2cwyg6yrjbif1lh"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -1243,7 +1247,7 @@ color temperature should be set to match the lamps in your room.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/minus7/redshift.git")
+                      (url "https://github.com/minus7/redshift")
                       (commit commit)))
                 (file-name (string-append name "-" version))
                 (sha256
@@ -1360,6 +1364,44 @@ demos.  It also acts as a nice screen locker.")
                "http://metadata.ftp-master.debian.org/changelogs/"
                "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
 
+(define-public xssproxy
+  (package
+    (name "xssproxy")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/timakro/xssproxy")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7"))))
+    (build-system gnu-build-system)
+    (arguments `(#:make-flags `("bindir=/bin"
+                                "man1dir=/share/man/man1"
+                                ,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+                                "CC=gcc")
+                 #:phases (modify-phases %standard-phases
+                            (delete 'configure)
+                            (delete 'check))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("dbus" ,dbus)))
+    (synopsis "Forward freedesktop.org Idle Inhibition Service calls to Xss")
+    (description "xssproxy implements the @code{org.freedesktop.ScreenSaver}
+D-Bus interface described in the Idle Inhibition Service Draft by the
+freedesktop.org developers.  The inhibition of the screensaver is then
+controlled using the XScreenSaverSuspend function from the Xss (X11 Screen
+Saver extension) library.")
+    (home-page "https://github.com/timakro/xssproxy")
+    (license license:gpl3+)))
+
 (define-public xsel
   (package
     (name "xsel")
@@ -1513,7 +1555,7 @@ actions, a built-in clock, a battery monitor and a system tray.")
      (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/robm/dzen.git")
+                    (url "https://github.com/robm/dzen")
                     (commit commit)))
               (file-name (string-append name "-" version))
               (sha256
@@ -1683,7 +1725,7 @@ invert colors on a specific display/screen.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dusxmt/nxbelld.git")
+                    (url "https://github.com/dusxmt/nxbelld")
                     (commit version)))
               (sha256
                (base32
@@ -1879,7 +1921,7 @@ to automatically turn it on on login.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/zoltanp/xrandr-invert-colors.git")
+                    (url "https://github.com/zoltanp/xrandr-invert-colors")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -2014,7 +2056,7 @@ binary to setuid-binaries:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bugaevc/wl-clipboard.git")
+             (url "https://github.com/bugaevc/wl-clipboard")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2064,7 +2106,7 @@ The cutbuffer and clipboard selection are always synchronized.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/johanmalm/jgmenu.git")
+             (url "https://github.com/johanmalm/jgmenu")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2108,7 +2150,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.")
 (define-public xwallpaper
   (package
     (name "xwallpaper")
-    (version "0.6.4")
+    (version "0.6.5")
     (source
      (origin
        (method git-fetch)
@@ -2117,8 +2159,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "175fzifvia58vah2x7509drvfn3xfv5d9szgh9x1w1a1w8rcs2hx"))))
+        (base32 "121ai4dc0v65qk12gn9w62ixly8hc8a5qrygkbb82vy8ck4jqxj7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -2184,7 +2225,7 @@ Xwrits hides itself until you should take another break.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/derat/xsettingsd.git")
+             (url "https://github.com/derat/xsettingsd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2250,7 +2291,7 @@ configuring visual settings in different UI toolkits separately.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cdown/clipnotify.git")
+             (url "https://github.com/cdown/clipnotify")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2301,7 +2342,7 @@ tools to complement clipnotify.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cdown/clipmenu.git")
+               (url "https://github.com/cdown/clipmenu")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2380,7 +2421,7 @@ After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/qnikst/kbdd.git")
+             (url "https://github.com/qnikst/kbdd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2416,7 +2457,7 @@ create layout indicator widgets.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/enkore/j4-dmenu-desktop.git")
+                    (url "https://github.com/enkore/j4-dmenu-desktop")
                     (commit (string-append "r" version))))
               (file-name (git-file-name name version))
               (sha256
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 89a4206363..0c38be5b5a 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -1284,7 +1284,7 @@ core or CPU.")
 (define-public xfce4-eyes-plugin
   (package
    (name "xfce4-eyes-plugin")
-   (version "4.5.0")
+   (version "4.5.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/panel-plugins/"
@@ -1293,7 +1293,7 @@ core or CPU.")
                                   "/xfce4-eyes-plugin-" version ".tar.bz2"))
               (sha256
                (base32
-                "17gj6fbvvrdzvz61czmia8hqynllsnmhk61fs4aml443cc1h1bpx"))))
+                "1iaszzkagl1mb0cdafrvlfjnjklhhs9y90517par34sjiqbq1dsd"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 7c71bf0a28..7487858fd3 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
@@ -410,7 +410,7 @@ decoding .opus files.")
 (define opusfile
   (package
     (name "opusfile")
-    (version "0.11")
+    (version "0.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -418,8 +418,10 @@ decoding .opus files.")
                     ".tar.gz"))
               (sha256
                (base32
-                "1gq3aszzl5glgbajw5p1f5a1kdyf23w5vjdmwwrk246syin9pkkl"))))
+                "02smwc5ah8nb3a67mnkjzqmrzk43j356hgj2a97s9midq40qd38i"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     ;; Required by opusfile.pc and opusurl.pc.
     (propagated-inputs
      `(("libogg" ,libogg)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 90181a1773..c3a9a1cfeb 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -1108,7 +1108,7 @@ C++ programming language.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/leethomason/tinyxml2.git")
+             (url "https://github.com/leethomason/tinyxml2")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1216,7 +1216,7 @@ elements to their parents
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dilshod/xlsx2csv.git")
+             (url "https://github.com/dilshod/xlsx2csv")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1628,7 +1628,7 @@ with XPath too.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/elharo/xom.git")
+                    (url "https://github.com/elharo/xom")
                     (commit (string-append "XOM_" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1767,7 +1767,7 @@ package is in maintenance mode.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dom4j/dom4j.git")
+                    (url "https://github.com/dom4j/dom4j")
                     (commit (string-append "version-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1840,7 +1840,7 @@ low memory footprint.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/stefanhaustein/kxml2.git")
+                    (url "https://github.com/stefanhaustein/kxml2")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1914,7 +1914,7 @@ and from a Java application.  It provides a standard pull parser interface.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/codehaus/jettison.git")
+                    (url "https://github.com/codehaus/jettison")
                     (commit (string-append "jettison-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1946,7 +1946,7 @@ implements @code{XMLStreamWriter} and @code{XMLStreamReader} and supports
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/hunterhacker/jdom.git")
+                    (url "https://github.com/hunterhacker/jdom")
                     (commit (string-append "JDOM-" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1974,7 +1974,7 @@ outputting XML data from Java code.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/x-stream/xstream.git")
+             (url "https://github.com/x-stream/xstream")
              (commit (string-append
                       "XSTREAM_"
                       (string-map (lambda (x) (if (eq? x #\.) #\_ x))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index e5fe3e14cf..e1a877703f 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2405,7 +2405,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
 (define-public xev
   (package
     (name "xev")
-    (version "1.2.3")
+    (version "1.2.4")
     (source
       (origin
         (method url-fetch)
@@ -2415,7 +2415,7 @@ DRI (Direct Rendering Infrastructure) drivers.")
                ".tar.bz2"))
         (sha256
           (base32
-            "02ddsdx138g7szhwklpbzi0cxr34871iay3k28kdcihrz8f4zg36"))))
+            "1ql592pdhddhkipkrsxn929y9l2nn02a5fh2z3dx47kmzs5y006p"))))
     (build-system gnu-build-system)
     (inputs
       `(("libxrender" ,libxrender)
@@ -2827,10 +2827,26 @@ X server.")
 X server.")
     (license license:x11)))
 
-
-;; non-free license
-;; (define-public xf86-video-dummy
-
+(define-public xf86-video-dummy
+  (package
+    (name "xf86-video-dummy")
+    (version "0.3.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://xorg/individual/driver/"
+                           "xf86-video-dummy-" version ".tar.bz2"))
+       (sha256
+        (base32 "1fcm9vwgv8wnffbvkzddk4yxrh3kc0np6w65wj8k88q7jf3bn4ip"))))
+    (build-system gnu-build-system)
+    (inputs `(("xorg-server" ,xorg-server)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "https://www.x.org/wiki/")
+    (synopsis "Dummy video driver for X server")
+    (description
+     "Virtual/offscreen frame buffer driver for the Xorg X server.")
+    ;; per https://lists.freedesktop.org/archives/xorg/2020-June/060316.html
+    (license license:x11)))
 
 (define-public xf86-video-fbdev
   (package
@@ -3012,8 +3028,8 @@ X server.")
 
 
 (define-public xf86-video-intel
-  (let ((commit "f66d39544bb8339130c96d282a80f87ca1606caf")
-        (revision "15"))
+  (let ((commit "5ca3ac1a90af177eb111a965e9b4dd8a27cc58fc")
+        (revision "16"))
     (package
       (name "xf86-video-intel")
       (version (git-version "2.99.917" revision commit))
@@ -3026,7 +3042,7 @@ X server.")
                (commit commit)))
          (sha256
           (base32
-           "14rwbbn06l8qpx7s5crxghn80vgcx8jmfc7qvivh72d81r0kvywl"))
+           "1y1v6cp3r3isq3bc7mypkvypwjygi205k06slmidx2q3sz4h4mjc"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (inputs `(("mesa" ,mesa)
@@ -3540,7 +3556,7 @@ X server.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/mjanusz/v86d.git")
+             (url "https://github.com/mjanusz/v86d")
              (commit (string-append name "-" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -5310,16 +5326,15 @@ over Xlib, including:
 (define-public xorg-server
   (package
     (name "xorg-server")
-    (version "1.20.7")
+    (version "1.20.8")
     (source
       (origin
         (method url-fetch)
-        (uri (string-append
-              "mirror://xorg/individual/xserver/"
-              "xorg-server-" version ".tar.bz2"))
+        (uri (string-append "mirror://xorg/individual/xserver/"
+                            "xorg-server-" version ".tar.bz2"))
         (sha256
          (base32
-          "18bfl04ihw1jr3h0fs522nnxxq5ixjay77y9dcymnkzk23q8cndx"))
+          "0ih15m7gh1z1ly6z7g82bkni719yisqmbk61a1wgp82bxrmn8yyi"))
         (patches
          (list
           ;; See:
@@ -5438,10 +5453,19 @@ draggable titlebars and borders.")
 ;; This package is intended to be used when building GTK+.
 ;; Note: It's currently marked as "hidden" to avoid having two non-eq?
 ;; packages with the same name and version.
+;; TODO: Update this in the next rebuild cycle.
 (define-public xorg-server-for-tests
   (hidden-package
    (package
-     (inherit xorg-server))))
+     (inherit xorg-server)
+     (version "1.20.7")
+     (source (origin
+               (inherit (package-source xorg-server))
+               (uri (string-append "mirror://xorg/individual/xserver/"
+                                   "xorg-server-" version ".tar.bz2"))
+               (sha256
+                (base32
+                 "18bfl04ihw1jr3h0fs522nnxxq5ixjay77y9dcymnkzk23q8cndx")))))))
 
 (define-public xorg-server-xwayland
   (package
@@ -5623,17 +5647,15 @@ Intrinsics (Xt) Library.")
 (define-public twm
   (package
     (name "twm")
-    (version "1.0.10")
+    (version "1.0.11")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append
-             "mirror://xorg/individual/app/" name "-"
-             version
-             ".tar.bz2"))
+       (uri (string-append "mirror://xorg/individual/app/twm-"
+                           version ".tar.xz"))
        (sha256
         (base32
-         "1ms5cj1w3g26zg6bxdv1j9hl0pxr4300qnv003cz1q3cl7ffljb4"))))
+         "1iv8kdb18n9vk3is5fyh6l40ipq9mkgx8ppj86byf464vr1ais7l"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxt" ,libxt)
@@ -6260,7 +6282,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.5.3")
+    (version "4.0.2")
     (source
      (origin
        (method url-fetch)
@@ -6268,85 +6290,108 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1ys35lj28903alccks9p055psy1fsk1nxi8ncchvw8bfxkkkvbys"))))
+         "1cs39jzi59hkl421xmhi549ndmdfzkg0ap45f4nlsn9zr9zwmp3x"))
+       (patches (search-patches "xpra-4.0.1-systemd-run.patch"))))
     (build-system python-build-system)
-    (inputs `(("ffmpeg" ,ffmpeg)
-              ("flac" ,flac)
-              ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet
+    ;; see also http://xpra.org/trac/wiki/Dependencies
+    (inputs `(
+              ;; Essential dependencies.
               ("libjpeg" ,libjpeg-turbo)
-              ("libpng" ,libpng)
-              ("libvpx" ,libvpx)
-              ("libx264" ,libx264)
-              ("libxcomposite" ,libxcomposite)
-              ("libxdamage" ,libxdamage)
-              ("libxi" ,libxi)
-              ("libxkbfile" ,libxkbfile)
+              ("libwebp" ,libwebp)
+              ("ffmpeg" ,ffmpeg)
+              ("libx11" ,libx11)
               ("libxrandr" ,libxrandr)
               ("libxtst" ,libxtst)
-              ("lzo" ,lzo)
-              ("python2-cryptography" ,python2-cryptography)
-              ("python2-dbus" ,python2-dbus)
-              ("python2-lz4" ,python2-lz4)
-              ("python2-lzo" ,python2-lzo)
-              ("python2-netifaces" ,python2-netifaces)
-              ("python2-numpy" ,python2-numpy)
-              ("python2-pillow" ,python2-pillow)
-              ("python2-pycairo" ,python2-pycairo)
-              ("python2-pycrypto" ,python2-pycrypto)
-              ("python2-pygobject" ,python2-pygobject)
-              ("python2-pyopengl" ,python2-pyopengl)
-              ("python2-pyopengl-accelerate" ,python2-pyopengl-accelerate)
-              ("python2-pygtk" ,python2-pygtk)
-              ("python2-rencode" ,python2-rencode)
-              ("xorg-server" ,xorg-server)))
+              ("libxfixes" ,libxfixes)
+              ("libxkbfile" ,libxkbfile)
+              ("libxcomposite" ,libxcomposite)
+              ("libxdamage" ,libxdamage)
+              ("libxext" ,libxext)
+              ("gtk+" ,gtk+)
+              ("python-pycairo" ,python-pycairo)
+              ("python-pygobject" ,python-pygobject)
+              ("xauth" ,xauth)
+              ("xorg-server" ,xorg-server)
+              ("xf86-video-dummy" ,xf86-video-dummy)
+              ("xf86-input-mouse" ,xf86-input-mouse)
+              ("xf86-input-keyboard" ,xf86-input-keyboard)
+              ("python-pillow" ,python-pillow)
+              ;; Optional dependencies.
+              ("python-rencode" ,python-rencode) ; For speed.
+              ("python-numpy", python-numpy)
+              ("python-pyopengl" ,python-pyopengl) ; Drawing acceleration.
+              ("python-pyopengl-accelerate" ,python-pyopengl-accelerate) ; Same.
+              ("python-paramiko" ,python-paramiko) ; Tunneling over SSH.
+              ("python-dbus" ,python-dbus) ; For desktop notifications.
+              ("dbus" ,dbus)               ; For dbus-launch command.
+              ("python-lz4" ,python-lz4) ; Faster compression than zlib.
+              ("python-netifaces" ,python-netifaces)))
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("python2-cython" ,python2-cython)))
+                     ("python-cython" ,python-cython)))
     (arguments
-     `(#:python ,python-2 ;; no full Python 3 support yet
-       #:configure-flags '("--with-tests"
-                           "--with-bundle_tests"
-                           "--without-Xdummy" ;; We use Xvfb instead.
-                           "--without-Xdummy_wrapper"
-                           "--without-strict")
+     `(#:configure-flags '("--without-Xdummy"
+						   "--without-Xdummy_wrapper"
+                           "--with-opengl"
+                           "--without-debug"
+                           "--without-strict") ; Ignore compiler warnings.
        #:modules ((guix build python-build-system)
                   (guix build utils))
-
+       #:tests? #f ; Do not run test-cases. This would rebuild all modules and
+                                        ; they seem to require python2.
        #:phases
        (modify-phases %standard-phases
+         ;; built by 'install phase
          (delete 'build)
-         (delete 'check) ;; There's no test suite at the moment.
-
-         ;; Remove BUILD_CPU, BUILD_DATE, BUILD_TIME from build info to
-         ;; prevent deterministic issues.  Also correct some directories and
-         ;; use the xvfb binary instead of xorg-server (which doesn't seem to
-         ;; work).
-         (add-before 'install 'remove-timestamps&set-file-names
+         (add-before 'install 'fix-paths
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (substitute* "add_build_info.py"
-               ((".*\"BUILD_CPU\", get_cpuinfo.*") ""))
-             (substitute* "add_build_info.py"
-               ((".*\"BUILD_DATE\", datetime.*") ""))
-             (substitute* "add_build_info.py"
-               ((".*\"BUILD_TIME\", datetime.*") ""))
-             (substitute* "setup.py"
-               (("/etc/init.d/")
-                (string-append (assoc-ref outputs "out")
-                               "/etc/init.d/")))
-             (substitute* "setup.py"
-               (("/usr/lib/")
-                (string-append (assoc-ref outputs "out") "/lib/")))
-             ;; Use Xvfb with '-nolisten local' to disable abstract X11 sockets.
-             (substitute* "./xpra/scripts/config.py"
-               ((":.*join.*xvfb.*")
-                (string-append ": \"" (assoc-ref inputs "xorg-server")
-                               "/bin/Xvfb +extension Composite"
-                               " -screen 0 5760x2560x24+32 -dpi 96 -nolisten"
-                               " tcp -nolisten local -noreset -auth"
-                               " $XAUTHORITY\",\n")))
+             ;; Fix binary paths.
+             (substitute* '("xpra/scripts/config.py" "xpra/x11/vfb_util.py")
+               (("\"Xvfb\"")
+                (string-append "\"" (assoc-ref inputs "xorg-server") "/bin/Xvfb\""))
+               (("\"Xorg\"")
+                (string-append "\"" (assoc-ref inputs "xorg-server") "/bin/Xorg\""))
+               (("\"xauth\"")
+                (string-append "\"" (assoc-ref inputs "xauth") "/bin/xauth\"")))
+             ;; Fix directory of config files.
+             (substitute* '("xpra/scripts/config.py" "xpra/platform/xposix/paths.py")
+               (("\"/etc/xpra/?\"")
+                (string-append "\"" (assoc-ref outputs "out") "/etc/xpra/\"")))
+             ;; XXX: Stolen from (gnu packages linux)
+             (define (append-to-file name body)
+               (let ((file (open-file name "a")))
+                 (display body file)
+                 (close-port file)))
+             ;; Add Xorg module paths.
+             (append-to-file
+              "etc/xpra/xorg.conf"
+              (string-append "\nSection \"Files\"\nModulePath \""
+                             (assoc-ref inputs "xf86-video-dummy") "/lib/xorg/modules,"
+                             (assoc-ref inputs "xf86-input-mouse") "/lib/xorg/modules,"
+                             (assoc-ref inputs "xf86-input-keyboard") "/lib/xorg/modules,"
+                             (assoc-ref inputs "xorg-server") "/lib/xorg/modules\"\n"
+                             "EndSection\n\n"))
+             (substitute* '("xpra/scripts/config.py"
+                            "etc/xpra/conf.d/60_server.conf.in"
+                            "unittests/unit/server/mixins/notification_test.py")
+               ;; The trailing -- is intentional, so we only replace it inside
+               ;; a command line.
+               (("dbus-launch --")
+                (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch --")))
+             ;; /run/user does not exist on guix system
              (substitute* "./xpra/scripts/config.py"
                (("socket-dir.*: \"\",")
                 "socket-dir\"        : \"~/.xpra\","))
-             #t)))))
+             #t))
+         ;; GTK3 will not be found, if GI can’t find its typelibs.
+         (add-after
+             'install 'wrap-program
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref outputs "out")
+                                        "/bin/xpra")))
+               ;; XXX: only export typelibs in inputs
+               (wrap-program prog
+                 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))
+               #t))))))
     (home-page "https://www.xpra.org/")
     (synopsis "Remote access to individual applications or full desktops")
     (description "Xpra is a persistent remote display server and client for
@@ -6615,15 +6660,15 @@ output.")
 (define-public console-setup
   (package
     (name "console-setup")
-    (version "1.195")
+    (version "1.196")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://salsa.debian.org/installer-team/console-setup.git")
-             (commit "38512eb9a97f57ead1f87f6aee6df455f721c645"))) ; no tag
+             (commit version)))
        (sha256
-        (base32 "0d0xagigs5k3appzz5lzxdjncvnkgz4amz6ks7imiq8kkjixvmfy"))
+        (base32 "0c79rycgpna8910as6blw3z3sajzzakz4qlvr6js2yr8zq2d0ylg"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
@@ -6698,7 +6743,7 @@ Thai).")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/eworm-de/xcur2png.git")
+             (url "https://github.com/eworm-de/xcur2png")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
diff --git a/gnu/services.scm b/gnu/services.scm
index 27e5558231..6509a9014e 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -31,6 +31,7 @@
   #:use-module (guix sets)
   #:use-module (guix ui)
   #:use-module ((guix utils) #:select (source-properties->location))
+  #:autoload   (guix openpgp) (openpgp-format-fingerprint)
   #:use-module (guix modules)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
@@ -88,6 +89,7 @@
 
             system-service-type
             provenance-service-type
+            system-provenance
             boot-service-type
             cleanup-service-type
             activation-service-type
@@ -392,19 +394,49 @@ by the initrd once the root file system is mounted.")))
 (define (channel->code channel)
   "Return code to build CHANNEL, ready to be dropped in a 'channels.scm'
 file."
-  `(channel (name ',(channel-name channel))
-            (url ,(channel-url channel))
-            (branch ,(channel-branch channel))
-            (commit ,(channel-commit channel))))
+  ;; Since the 'introduction' field is backward-incompatible, and since it's
+  ;; optional when using the "official" 'guix channel, include it if and only
+  ;; if we're referring to a different channel.
+  (let ((intro (and (not (equal? (list channel) %default-channels))
+                    (channel-introduction channel))))
+    `(channel (name ',(channel-name channel))
+              (url ,(channel-url channel))
+              (branch ,(channel-branch channel))
+              (commit ,(channel-commit channel))
+              ,@(if intro
+                    `((introduction
+                       (make-channel-introduction
+                        ,(channel-introduction-first-signed-commit intro)
+                        (openpgp-fingerprint
+                         ,(openpgp-format-fingerprint
+                           (channel-introduction-first-commit-signer
+                            intro))))))
+                    '()))))
 
 (define (channel->sexp channel)
   "Return an sexp describing CHANNEL.  The sexp is _not_ code and is meant to
 be parsed by tools; it's potentially more future-proof than code."
+  ;; TODO: Add CHANNEL's introduction.  Currently we can't do that because
+  ;; older 'guix system describe' expect exactly name/url/branch/commit
+  ;; without any additional fields.
   `(channel (name ,(channel-name channel))
             (url ,(channel-url channel))
             (branch ,(channel-branch channel))
             (commit ,(channel-commit channel))))
 
+(define (sexp->channel sexp)
+  "Return the channel corresponding to SEXP, an sexp as found in the
+\"provenance\" file produced by 'provenance-service-type'."
+  (match sexp
+    (('channel ('name name)
+               ('url url)
+               ('branch branch)
+               ('commit commit)
+               rest ...)
+     ;; XXX: In the future REST may include a channel introduction.
+     (channel (name name) (url url)
+              (branch branch) (commit commit)))))
+
 (define (provenance-file channels config-file)
   "Return a 'provenance' file describing CHANNELS, a list of channels, and
 CONFIG-FILE, which can be either #f or a <local-file> containing the OS
@@ -456,6 +488,24 @@ channels in use and CONFIG-FILE, if it is true."
 itself: the channels used when building the system, and its configuration
 file, when available.")))
 
+(define (system-provenance system)
+  "Given SYSTEM, the file name of a system generation, return two values: the
+list of channels SYSTEM is built from, and its configuration file.  If that
+information is missing, return the empty list (for channels) and possibly
+#false (for the configuration file)."
+  (catch 'system-error
+    (lambda ()
+      (match (call-with-input-file (string-append system "/provenance")
+               read)
+        (('provenance ('version 0)
+                      ('channels channels ...)
+                      ('configuration-file config-file))
+         (values (map sexp->channel channels)
+                 config-file))
+        (_
+         (values '() #f))))
+    (lambda _
+      (values '() #f))))
 
 ;;;
 ;;; Cleanup.
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 6ea7ef8e7e..491f35702a 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -177,6 +177,8 @@
             pam-limits-service-type
             pam-limits-service
 
+            references-file
+
             %base-services))
 
 ;;; Commentary:
@@ -1481,7 +1483,7 @@ archive' public keys, with GUIX."
 
 (define %default-authorized-guix-keys
   ;; List of authorized substitute keys.
-  (list (file-append guix "/share/guix/berlin.guixsd.org.pub")))
+  (list (file-append guix "/share/guix/berlin.guix.gnu.org.pub")))
 
 (define-record-type* <guix-configuration>
   guix-configuration make-guix-configuration
diff --git a/gnu/services/ganeti.scm b/gnu/services/ganeti.scm
new file mode 100644
index 0000000000..8d30472371
--- /dev/null
+++ b/gnu/services/ganeti.scm
@@ -0,0 +1,1109 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services ganeti)
+  #:use-module (gnu packages virtualization)
+  #:use-module (gnu services)
+  #:use-module (gnu services mcron)
+  #:use-module (gnu services shepherd)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+
+  #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match)
+
+  #:export (ganeti-noded-configuration
+            ganeti-noded-configuration?
+            ganeti-noded-configuration-ganeti
+            ganeti-noded-configuration-port
+            ganeti-noded-configuration-address
+            ganeti-noded-configuration-interface
+            ganeti-noded-configuration-max-clients
+            ganeti-noded-configuration-ssl?
+            ganeti-noded-configuration-ssl-key
+            ganeti-noded-configuration-ssl-cert
+            ganeti-noded-configuration-debug?
+            ganeti-noded-service-type
+
+            ganeti-confd-configuration
+            ganeti-confd-configuration?
+            ganeti-confd-configuration-ganeti
+            ganeti-confd-configuration-port
+            ganeti-confd-configuration-address
+            ganeti-confd-configuration-debug
+            ganeti-confd-service-type
+
+            ganeti-wconfd-configuration
+            ganeti-wconfd-configuration?
+            ganeti-wconfd-configuration-ganeti
+            ganeti-wconfd-configuration-no-voting?
+            ganeti-wconfd-configuration-debug?
+            ganeti-wconfd-service-type
+
+            ganeti-luxid-configuration
+            ganeti-luxid-configuration?
+            ganeti-luxid-configuration-ganeti
+            ganeti-luxid-configuration-no-voting?
+            ganeti-luxid-configuration-debug?
+            ganeti-luxid-service-type
+
+            ganeti-rapi-configuration
+            ganeti-rapi-configuration?
+            ganeti-rapi-configuration-ganeti
+            ganeti-rapi-configuration-require-authentication?
+            ganeti-rapi-configuration-port
+            ganeti-rapi-configuration-address
+            ganeti-rapi-configuration-interface
+            ganeti-rapi-configuration-max-clients
+            ganeti-rapi-configuration-ssl?
+            ganeti-rapi-configuration-ssl-key
+            ganeti-rapi-configuration-ssl-cert
+            ganeti-rapi-configuration-debug?
+            ganeti-rapi-service-type
+
+            ganeti-kvmd-configuration
+            ganeti-kvmd-configuration?
+            ganeti-kvmd-configuration-ganeti
+            ganeti-kvmd-configuration-debug?
+            ganeti-kvmd-service-type
+
+            ganeti-mond-configuration
+            ganeti-mond-configuration?
+            ganeti-mond-configuration-ganeti
+            ganeti-mond-configuration-port
+            ganeti-mond-configuration-address
+            ganeti-mond-configuration-debug?
+            ganeti-mond-service-type
+
+            ganeti-metad-configuration
+            ganeti-metad-configuration?
+            ganeti-metad-configuration-ganeti
+            ganeti-metad-configuration-port
+            ganeti-metad-configuration-address
+            ganeti-metad-configuration-debug?
+            ganeti-metad-service-type
+
+            ganeti-watcher-configuration
+            ganeti-watcher-configuration?
+            ganeti-watcher-configuration-ganeti
+            ganeti-watcher-configuration-schedule
+            ganeti-watcher-configuration-rapi-ip
+            ganeti-watcher-configuration-job-age
+            ganeti-watcher-configuration-verify-disks?
+            ganeti-watcher-configuration-debug?
+            ganeti-watcher-service-type
+
+            ganeti-cleaner-configuration
+            ganeti-cleaner-configuration?
+            ganeti-cleaner-configuration-ganeti
+            ganeti-cleaner-configuration-master-schedule
+            ganeti-cleaner-configuration-node-schedule
+            ganeti-cleaner-service-type
+
+            ganeti-os
+            ganeti-os?
+            ganeti-os-name
+            ganeti-os-extension
+            ganeti-os-variants
+
+            ganeti-os-variant
+            ganeti-os-variant?
+            ganeti-os-variant-name
+            ganeti-os-variant-configuration
+
+            %debootstrap-interfaces-hook
+            %debootstrap-grub-hook
+            %default-debootstrap-hooks
+            %default-debootstrap-extra-pkgs
+            debootstrap-configuration
+            debootstrap-configuration?
+            debootstrap-configuration-hooks
+            debootstrap-configuration-proxy
+            debootstrap-configuration-mirror
+            debootstrap-configuration-arch
+            debootstrap-configuration-suite
+            debootstrap-configuration-extra-pkgs
+            debootstrap-configuration-components
+            debootstrap-configuration-generate-cache?
+            debootstrap-configuration-clean-cache
+            debootstrap-configuration-partition-style
+            debootstrap-configuration-partition-alignment
+
+            debootstrap-variant
+            debootstrap-os
+            %default-debootstrap-variants
+
+            guix-variant
+            guix-os
+            %default-guix-variants
+
+            %default-ganeti-os
+
+            ganeti-configuration
+            ganeti-configuration?
+            ganeti-configuration-noded-configuration
+            ganeti-configuration-confd-configuration
+            ganeti-configuration-wconfd-configuration
+            ganeti-configuration-luxid-configuration
+            ganeti-configuration-rapi-configuration
+            ganeti-configuration-kvmd-configuration
+            ganeti-configuration-mond-configuration
+            ganeti-configuration-metad-configuration
+            ganeti-configuration-watcher-configuration
+            ganeti-configuration-cleaner-configuration
+            ganeti-configuration-file-storage-paths
+            ganeti-configuration-os
+            ganeti-service-type))
+
+;;;
+;;; Service definitions for running a Ganeti cluster.
+;;;
+;;; Planned improvements: run daemons (except ganeti-noded) under unprivileged
+;;; user accounts and/or containers.  The account names must match the ones
+;;; given to Ganetis configure script.  metad needs "setcap" or root in order
+;;; to bind on port 80.
+
+;; Set PATH so the various daemons are able to find the 'ip' executable, LVM,
+;; Ceph, Gluster, etc, without having to add absolute references to everything.
+(define %default-ganeti-environment-variables
+  (list (string-append "PATH="
+                       (string-join '("/run/setuid-programs"
+                                      "/run/current-system/profile/sbin"
+                                      "/run/current-system/profile/bin")
+                                    ":"))))
+
+(define-record-type* <ganeti-noded-configuration>
+  ganeti-noded-configuration make-ganeti-noded-configuration
+  ganeti-noded-configuration?
+  (ganeti      ganeti-noded-configuration-ganeti        ;<package>
+               (default ganeti))
+  (port        ganeti-noded-configuration-port          ;integer
+               (default 1811))
+  (address     ganeti-noded-configuration-address       ;string
+               (default "0.0.0.0"))
+  (interface   ganeti-noded-configuration-interface     ;string | #f
+               (default #f))
+  (max-clients ganeti-noded-configuration-max-clients   ;integer
+               (default 20))
+  (ssl?        ganeti-noded-configuration-ssl?          ;Boolean
+               (default #t))
+  (ssl-key     ganeti-noded-configuration-ssl-key       ;string
+               (default "/var/lib/ganeti/server.pem"))
+  (ssl-cert    ganeti-noded-configuration-ssl-cert      ;string
+               (default "/var/lib/ganeti/server.pem"))
+  (debug?      ganeti-noded-configuration-debug?        ;Boolean
+               (default #f)))
+
+(define ganeti-noded-service
+  (match-lambda
+    (($ <ganeti-noded-configuration> ganeti port address interface max-clients
+                                     ssl? ssl-key ssl-cert debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti node daemon.")
+            (provision '(ganeti-noded))
+            (requirement '(user-processes networking))
+
+            ;; If the daemon stops, it is probably for a good reason;
+            ;; otherwise ganeti-watcher will restart it for us anyway.
+            (respawn? #f)
+
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-noded")
+                            #$(string-append "--port=" (number->string port))
+                            #$(string-append "--bind=" address)
+                            #$@(if interface
+                                   #~((string-append "--interface=" #$interface))
+                                   #~())
+                            #$(string-append "--max-clients="
+                                             (number->string max-clients))
+                            #$@(if ssl?
+                                   #~((string-append "--ssl-key=" #$ssl-key)
+                                      (string-append "--ssl-cert=" #$ssl-cert))
+                                   #~("--no-ssl"))
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:environment-variables
+                      '#$%default-ganeti-environment-variables
+                      #:pid-file "/var/run/ganeti/ganeti-noded.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-noded-service-type
+  (service-type (name 'ganeti-noded)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-noded-service)))
+                (default-value (ganeti-noded-configuration))
+                (description
+                 "@command{ganeti-noded} is the daemon which is responsible
+for the node functions in the Ganeti system.")))
+
+(define-record-type* <ganeti-confd-configuration>
+  ganeti-confd-configuration make-ganeti-confd-configuration
+  ganeti-confd-configuration?
+  (ganeti      ganeti-confd-configuration-ganeti        ;<package>
+               (default ganeti))
+  (port        ganeti-confd-configuration-port          ;integer
+               (default 1814))
+  (address     ganeti-confd-configuration-address       ;string
+               (default "0.0.0.0"))
+  (debug?      ganeti-confd-configuration-debug?        ;Boolean
+               (default #f)))
+
+(define ganeti-confd-service
+  (match-lambda
+    (($ <ganeti-confd-configuration> ganeti port address debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti confd daemon.")
+            (provision '(ganeti-confd))
+            (requirement '(user-processes networking))
+            (respawn? #f)
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-confd")
+                            #$(string-append "--port=" (number->string port))
+                            #$(string-append "--bind=" address)
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:environment-variables
+                      '#$%default-ganeti-environment-variables
+                      #:pid-file "/var/run/ganeti/ganeti-confd.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-confd-service-type
+  (service-type (name 'ganeti-confd)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-confd-service)))
+                (default-value (ganeti-confd-configuration))
+                (description
+                 "@command{ganeti-confd} is a daemon used to answer queries
+related to the configuration of a Ganeti cluster.")))
+
+(define-record-type* <ganeti-wconfd-configuration>
+  ganeti-wconfd-configuration make-ganeti-wconfd-configuration
+  ganeti-wconfd-configuration?
+  (ganeti      ganeti-wconfd-configuration-ganeti       ;<package>
+               (default ganeti))
+  (no-voting?  ganeti-wconfd-configuration-no-voting?   ;Boolean
+               (default #f))
+  (debug?      ganeti-wconfd-configuration-debug?       ;Boolean
+               (default #f)))
+
+;; If this file exists, the wconfd daemon will be forcefully started even on
+;; non-master nodes.  It is used to accommodate a master-failover scenario.
+(define %wconfd-force-node-hint
+  "/var/lib/ganeti/guix_wconfd_force_node_hint")
+
+(define (wconfd-wrapper ganeti args)
+  ;; Wrapper for the wconfd daemon that looks for the force-node hint.
+  (program-file
+   "wconfd-wrapper"
+   #~(begin
+       (let ((wconfd #$(file-append ganeti "/sbin/ganeti-wconfd"))
+             (force-node? (file-exists? #$%wconfd-force-node-hint)))
+         (if force-node?
+             (execl wconfd wconfd "--force-node" "--no-voting" "--yes-do-it" #$@args)
+             (execl wconfd wconfd #$@args))))))
+
+(define shepherd-wconfd-force-start-action
+  ;; Shepherd action to create the force-node hint and start wconfd.
+  (shepherd-action
+   (name 'force-start)
+   (documentation
+    "Forcefully start wconfd even on non-master nodes (dangerous!).")
+   (procedure #~(lambda _
+                  (format #t "Forcefully starting the wconfd daemon...~%")
+                  (action 'ganeti-wconfd 'enable)
+                  (dynamic-wind
+                    (lambda ()
+                      (false-if-exception
+                       (call-with-output-file #$%wconfd-force-node-hint
+                         (lambda (port)
+                           (const #t)))))
+                    (lambda ()
+                      (action 'ganeti-wconfd 'restart))
+                    (lambda ()
+                      (delete-file #$%wconfd-force-node-hint)))
+                    #t))))
+
+(define ganeti-wconfd-service
+  (match-lambda
+    (($ <ganeti-wconfd-configuration> ganeti no-voting? debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti wconfd daemon.")
+            (provision '(ganeti-wconfd))
+            (requirement '(user-processes))
+
+            ;; Shepherd action to support a master-failover scenario.  It is
+            ;; automatically invoked during 'gnt-cluster master-failover' (see
+            ;; related Ganeti patch) and not intended for interactive use.
+            (actions (list shepherd-wconfd-force-start-action))
+
+            ;; wconfd will disable itself when not running on the master
+            ;; node.  Don't attempt to restart it.
+            (respawn? #f)
+
+            (start
+             #~(make-forkexec-constructor
+                (list #$(wconfd-wrapper ganeti
+                                        (append
+                                         (if no-voting?
+                                             '("--no-voting" "--yes-do-it")
+                                             '())
+                                         (if debug?
+                                             '("--debug")
+                                             '()))))
+                #:environment-variables
+                '#$%default-ganeti-environment-variables
+                #:pid-file "/var/run/ganeti/ganeti-wconfd.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-wconfd-service-type
+  (service-type (name 'ganeti-wconfd)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-wconfd-service)))
+                (default-value (ganeti-wconfd-configuration))
+                (description
+                 "@command{ganeti-wconfd} is the daemon that has authoritative
+knowledge about the configuration and is the only entity that can accept changes
+to it.  All jobs that need to modify the configuration will do so by sending
+appropriate requests to this daemon.")))
+
+(define-record-type* <ganeti-luxid-configuration>
+  ganeti-luxid-configuration make-ganeti-luxid-configuration
+  ganeti-luxid-configuration?
+  (ganeti      ganeti-luxid-configuration-ganeti        ;<package>
+               (default ganeti))
+  (no-voting?  ganeti-luxid-configuration-no-voting?    ;Boolean
+               (default #f))
+  (debug?      ganeti-luxid-configuration-debug?        ;Boolean
+               (default #f)))
+
+(define ganeti-luxid-service
+  (match-lambda
+    (($ <ganeti-luxid-configuration> ganeti no-voting? debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti LUXI daemon.")
+            (provision '(ganeti-luxid))
+            (requirement '(user-processes))
+
+            ;; This service will automatically disable itself when not
+            ;; running on the master node.  Don't attempt to restart it.
+            (respawn? #f)
+
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-luxid")
+                            #$@(if no-voting?
+                                   #~("--no-voting" "--yes-do-it")
+                                   #~())
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:environment-variables
+                      '#$%default-ganeti-environment-variables
+                      #:pid-file "/var/run/ganeti/ganeti-luxid.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-luxid-service-type
+  (service-type (name 'ganeti-luxid)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-luxid-service)))
+                (default-value (ganeti-luxid-configuration))
+                (description
+                 "@command{ganeti-luxid} is a daemon used to answer queries
+related to the configuration and the current live state of a Ganeti cluster.
+Additionally, it is the autorative daemon for the Ganeti job queue.  Jobs can
+be submitted via this daemon and it schedules and starts them.")))
+
+(define-record-type* <ganeti-rapi-configuration>
+  ganeti-rapi-configuration make-ganeti-rapi-configuration
+  ganeti-rapi-configuration?
+  (ganeti      ganeti-rapi-configuration-ganeti         ;<package>
+               (default ganeti))
+  (require-authentication?
+   ganeti-rapi-configuration-require-authentication?    ;Boolean
+   (default #f))
+  (port        ganeti-rapi-configuration-port           ;integer
+               (default 5080))
+  (address     ganeti-rapi-configuration-address        ;string
+               (default "0.0.0.0"))
+  (interface   ganeti-rapi-configuration-interface      ;string | #f
+               (default #f))
+  (max-clients ganeti-rapi-configuration-max-clients    ;integer
+               (default 20))
+  (ssl?        ganeti-rapi-configuration-ssl?           ;Boolean
+               (default #t))
+  (ssl-key     ganeti-rapi-configuration-ssl-key        ;string
+               (default "/var/lib/ganeti/server.pem"))
+  (ssl-cert    ganeti-rapi-configuration-ssl-cert       ;string
+               (default "/var/lib/ganeti/server.pem"))
+  (debug?      ganeti-rapi-configuration-debug?         ;Boolean
+               (default #f)))
+
+(define ganeti-rapi-service
+  (match-lambda
+    (($ <ganeti-rapi-configuration> ganeti require-authentication? port address
+                                    interface max-clients ssl? ssl-key ssl-cert
+                                    debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti RAPI daemon.")
+            (provision '(ganeti-rapi))
+            (requirement '(user-processes networking))
+
+            ;; This service will automatically disable itself when not
+            ;; running on the master node.  Don't attempt to restart it.
+            (respawn? #f)
+
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-rapi")
+                            #$@(if require-authentication?
+                                   #~("--require-authentication")
+                                   #~())
+                            #$(string-append "--port=" (number->string port))
+                            #$(string-append "--bind=" address)
+                            #$@(if interface
+                                   #~((string-append "--interface=" #$interface))
+                                   #~())
+                            #$(string-append "--max-clients="
+                                             (number->string max-clients))
+                            #$@(if ssl?
+                                   #~((string-append "--ssl-key=" #$ssl-key)
+                                      (string-append "--ssl-cert=" #$ssl-cert))
+                                   #~("--no-ssl"))
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:environment-variables
+                      '#$%default-ganeti-environment-variables
+                      #:pid-file "/var/run/ganeti/ganeti-rapi.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-rapi-service-type
+  (service-type (name 'ganeti-rapi)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-rapi-service)))
+                (default-value (ganeti-rapi-configuration))
+                (description
+                 "@command{ganeti-rapi} is the daemon providing a remote API
+for Ganeti clusters.")))
+
+(define-record-type* <ganeti-kvmd-configuration>
+  ganeti-kvmd-configuration make-ganeti-kvmd-configuration
+  ganeti-kvmd-configuration?
+  (ganeti      ganeti-kvmd-configuration-ganeti         ;<package>
+               (default ganeti))
+  (debug?      ganeti-kvmd-configuration-debug?         ;Boolean
+               (default #f)))
+
+(define ganeti-kvmd-service
+  (match-lambda
+    (($ <ganeti-kvmd-configuration> ganeti debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti KVM daemon.")
+            (provision '(ganeti-kvmd))
+            (requirement '(user-processes))
+
+            ;; This service will automatically disable itself when not
+            ;; needed.  Don't attempt to restart it.
+            (respawn? #f)
+
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-kvmd")
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:environment-variables
+                      '#$%default-ganeti-environment-variables
+                      #:pid-file "/var/run/ganeti/ganeti-kvmd.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-kvmd-service-type
+  (service-type (name 'ganeti-kvmd)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-kvmd-service)))
+                (default-value (ganeti-kvmd-configuration))
+                (description
+                 "@command{ganeti-kvmd} is responsible for determining whether
+a given KVM instance was shutdown by an administrator or a user.
+
+The KVM daemon monitors, using @code{inotify}, KVM instances through their QMP
+sockets, which are provided by KVM.  Using the QMP sockets, the KVM daemon
+listens for particular shutdown, powerdown, and stop events which will determine
+if a given instance was shutdown by the user or Ganeti, and this result is
+communicated to Ganeti via a special file in the filesystem.")))
+
+(define-record-type* <ganeti-mond-configuration>
+  ganeti-mond-configuration make-ganeti-mond-configuration
+  ganeti-mond-configuration?
+  (ganeti      ganeti-mond-configuration-ganeti         ;<package>
+               (default ganeti))
+  (port        ganeti-mond-configuration-port           ;integer
+               (default 1815))
+  (address     ganeti-mond-configuration-address        ;string
+               (default "0.0.0.0"))
+  (debug?      ganeti-mond-configuration-debug?         ;Boolean
+               (default #f)))
+
+(define ganeti-mond-service
+  (match-lambda
+    (($ <ganeti-mond-configuration> ganeti port address debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti monitoring daemon.")
+            (provision '(ganeti-mond))
+            (requirement '(user-processes networking))
+            (respawn? #f)
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-mond")
+                            #$(string-append "--port=" (number->string port))
+                            #$(string-append "--bind=" address)
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:pid-file "/var/run/ganeti/ganeti-mond.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-mond-service-type
+  (service-type (name 'ganeti-mond)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-mond-service)))
+                (default-value (ganeti-mond-configuration))
+                (description
+                 "@command{ganeti-mond} is a daemon providing monitoring
+functionality.  It is responsible for running the data collectors and to
+provide the collected information through a HTTP interface.")))
+
+(define-record-type* <ganeti-metad-configuration>
+  ganeti-metad-configuration make-ganeti-metad-configuration
+  ganeti-metad-configuration?
+  (ganeti      ganeti-metad-configuration-ganeti        ;<package>
+               (default ganeti))
+  (port        ganeti-metad-configuration-port          ;integer
+               (default 80))
+  (address     ganeti-metad-configuration-address       ;string | #f
+               (default #f))
+  (debug?      ganeti-metad-configuration-debug?        ;Boolean
+               (default #f)))
+
+(define ganeti-metad-service
+  (match-lambda
+    (($ <ganeti-metad-configuration> ganeti port address debug?)
+     (list (shepherd-service
+            (documentation "Run the Ganeti metadata daemon.")
+            (provision '(ganeti-metad))
+            (requirement '(user-processes networking))
+            (respawn? #f)
+            (start #~(make-forkexec-constructor
+                      (list #$(file-append ganeti "/sbin/ganeti-metad")
+                            #$(string-append "--port=" (number->string port))
+                            #$@(if address
+                                   #~((string-append "--bind=" #$address))
+                                   #~())
+                            #$@(if debug?
+                                   #~("--debug")
+                                   #~()))
+                      #:pid-file "/var/run/ganeti/ganeti-metad.pid"))
+            (stop #~(make-kill-destructor)))))))
+
+(define ganeti-metad-service-type
+  (service-type (name 'ganeti-metad)
+                (extensions
+                 (list (service-extension shepherd-root-service-type
+                                          ganeti-metad-service)))
+                (default-value (ganeti-metad-configuration))
+                (description
+                 "@command{ganeti-metad} is a daemon that can be used to pass
+information to OS install scripts or instances.")))
+
+(define-record-type* <ganeti-watcher-configuration>
+  ganeti-watcher-configuration make-ganeti-watcher-configuration
+  ganeti-watcher-configuration?
+  (ganeti        ganeti-watcher-configuration-ganeti        ;<package>
+                 (default ganeti))
+  (schedule      ganeti-watcher-configuration-schedule      ;list | string
+                 (default '(next-second-from
+                            ;; Run every five minutes.
+                            (next-minute (range 0 60 5)))))
+  (rapi-ip       ganeti-watcher-configuration-rapi-ip       ;#f | string
+                 (default #f))
+  (job-age       ganeti-watcher-configuration-job-age       ;integer
+                 (default (* 6 3600)))
+  (verify-disks? ganeti-watcher-configuration-verify-disks? ;Boolean
+                 (default #t))
+  (debug?        ganeti-watcher-configuration-debug?        ;Boolean
+                 (default #f)))
+
+(define ganeti-watcher-command
+  (match-lambda
+    (($ <ganeti-watcher-configuration> ganeti _ rapi-ip job-age verify-disks?
+                                       debug?)
+     #~(lambda ()
+         (system* #$(file-append ganeti "/sbin/ganeti-watcher")
+                  #$@(if rapi-ip
+                         #~((string-append "--rapi-ip=" #$rapi-ip))
+                         #~())
+                  #$(string-append "--job-age=" (number->string job-age))
+                  #$@(if verify-disks?
+                         #~()
+                         #~("--no-verify-disks"))
+                  #$@(if debug?
+                         #~("--debug")
+                         #~()))))))
+
+(define (ganeti-watcher-jobs config)
+  (match config
+    (($ <ganeti-watcher-configuration> _ schedule)
+     (list
+      #~(job #$@(match schedule
+                  ((? string?)
+                   #~(#$schedule))
+                  ((? list?)
+                   #~('#$schedule)))
+             #$(ganeti-watcher-command config))))))
+
+(define ganeti-watcher-service-type
+  (service-type (name 'ganeti-watcher)
+                (extensions
+                 (list (service-extension mcron-service-type
+                                          ganeti-watcher-jobs)))
+                (default-value (ganeti-watcher-configuration))
+                (description
+                 "@command{ganeti-watcher} is a periodically run script that
+performs a number of maintenance actions on the cluster.  It will automatically
+restart instances that are marked as ERROR_down, i.e., instances that should be
+running, but are not; and it will also try to repair DRBD links in case a
+secondary node has rebooted.  In addition it is responsible for archiving old
+cluster jobs, and it will restart any down Ganeti daemons that are appropriate
+for the current node.  If the cluster parameter @code{maintain_node_health} is
+enabled, the watcher will also shutdown instances and DRBD devices if the node
+is declared offline by known master candidates.")))
+
+(define-record-type* <ganeti-cleaner-configuration>
+  ganeti-cleaner-configuration make-ganeti-cleaner-configuration
+  ganeti-cleaner-configuration?
+  (ganeti          ganeti-cleaner-configuration-ganeti          ;<package>
+                   (default ganeti))
+  (master-schedule ganeti-cleaner-configuration-master-schedule ;list | string
+                   ;; Run the master cleaner at 01:45 every day.
+                   (default "45 1 * * *"))
+  (node-schedule ganeti-cleaner-configuration-node-schedule     ;list | string
+                   ;; Run the node cleaner at 02:45 every day.
+                   (default "45 2 * * *")))
+
+(define ganeti-cleaner-jobs
+  (match-lambda
+    (($ <ganeti-cleaner-configuration> ganeti master-schedule node-schedule)
+     (list
+      #~(job #$@(match master-schedule
+                  ((? string?)
+                   #~(#$master-schedule))
+                  ((? list?)
+                   #~('#$master-schedule)))
+             (lambda ()
+              (system* #$(file-append ganeti "/sbin/ganeti-cleaner")
+                       "master")))
+      #~(job #$@(match node-schedule
+                  ((? string?)
+                   #~(#$node-schedule))
+                  ((? list?)
+                   #~('#$node-schedule)))
+             (lambda ()
+               (system* #$(file-append ganeti "/sbin/ganeti-cleaner")
+                        "node")))))))
+
+(define ganeti-cleaner-service-type
+  (service-type (name 'ganeti-cleaner)
+                (extensions
+                 (list (service-extension mcron-service-type
+                                          ganeti-cleaner-jobs)))
+                (default-value (ganeti-cleaner-configuration))
+                (description
+                 "@command{ganeti-cleaner} is a script that removes old files
+from the cluster.  When called with @code{node} as argument it removes expired
+X509 certificates and keys from @file{/var/run/ganeti/crypto}, as well as
+outdated @command{ganeti-watcher} information.
+
+When called with @code{master} as argument, it instead removes files older
+than 21 days from @file{/var/lib/ganeti/queue/archive}.")))
+
+(define-record-type* <ganeti-configuration>
+  ganeti-configuration make-ganeti-configuration
+  ganeti-configuration?
+  (ganeti                 ganeti-configuration-ganeti
+                          (default ganeti))
+  (noded-configuration    ganeti-configuration-noded-configuration
+                          (default (ganeti-noded-configuration)))
+  (confd-configuration    ganeti-configuration-confd-configuration
+                          (default (ganeti-confd-configuration)))
+  (wconfd-configuration   ganeti-configuration-wconfd-configuration
+                          (default (ganeti-wconfd-configuration)))
+  (luxid-configuration    ganeti-configuration-luxid-configuration
+                          (default (ganeti-luxid-configuration)))
+  (rapi-configuration     ganeti-configuration-rapi-configuration
+                          (default (ganeti-rapi-configuration)))
+  (kvmd-configuration     ganeti-configuration-kvmd-configuration
+                          (default (ganeti-kvmd-configuration)))
+  (mond-configuration     ganeti-configuration-mond-configuration
+                          (default (ganeti-mond-configuration)))
+  (metad-configuration    ganeti-configuration-metad-configuration
+                          (default (ganeti-metad-configuration)))
+  (watcher-configuration  ganeti-configuration-watcher-configuration
+                          (default (ganeti-watcher-configuration)))
+  (cleaner-configuration  ganeti-configuration-cleaner-configuration
+                          (default (ganeti-cleaner-configuration)))
+  (file-storage-paths     ganeti-configuration-file-storage-paths ;list of strings | gexp
+                          (default '()))
+  (os                     ganeti-configuration-os  ;list of <ganeti-os>
+                          (default '())))
+
+(define (ganeti-activation config)
+  (with-imported-modules '((guix build utils))
+    #~(begin
+        (use-modules (guix build utils))
+        (for-each mkdir-p
+                  '("/var/log/ganeti"
+                    "/var/log/ganeti/kvm"
+                    "/var/log/ganeti/os"
+                    "/var/lib/ganeti/rapi"
+                    "/var/lib/ganeti/queue"
+                    "/var/lib/ganeti/queue/archive"
+                    "/var/run/ganeti/bdev-cache"
+                    "/var/run/ganeti/crypto"
+                    "/var/run/ganeti/socket"
+                    "/var/run/ganeti/instance-disks"
+                    "/var/run/ganeti/instance-reason"
+                    "/var/run/ganeti/livelocks")))))
+
+(define ganeti-shepherd-services
+  (match-lambda
+    (($ <ganeti-configuration> _ noded confd wconfd luxid rapi kvmd mond metad)
+     (append (ganeti-noded-service noded)
+             (ganeti-confd-service confd)
+             (ganeti-wconfd-service wconfd)
+             (ganeti-luxid-service luxid)
+             (ganeti-rapi-service rapi)
+             (ganeti-kvmd-service kvmd)
+             (ganeti-mond-service mond)
+             (ganeti-metad-service metad)))))
+
+(define ganeti-mcron-jobs
+  (match-lambda
+    (($ <ganeti-configuration> _ _ _ _ _ _ _ _ _ watcher cleaner)
+     (append (ganeti-watcher-jobs watcher)
+             (ganeti-cleaner-jobs cleaner)))))
+
+(define-record-type* <ganeti-os>
+  ganeti-os make-ganeti-os ganeti-os?
+  (name ganeti-os-name)                     ;string
+  (extension ganeti-os-extension)           ;string
+  (variants ganeti-os-variants              ;list of <ganeti-os-variant>
+            (default '())))
+
+(define-record-type* <ganeti-os-variant>
+  ganeti-os-variant make-ganeti-os-variant ganeti-os-variant?
+  (name ganeti-os-variant-name)                       ;string
+  (configuration ganeti-os-variant-configuration))    ;<file-like>
+
+(define %debootstrap-interfaces-hook
+  (file-append ganeti-instance-debootstrap
+               "/share/doc/ganeti-instance-debootstrap/examples/interfaces"))
+
+;; The GRUB hook shipped with instance-debootstrap does not work with GRUB2.
+;; For convenience, provide one that work with modern Debians here.
+;; Note: it would be neat to reuse Guix' bootloader infrastructure instead.
+(define %debootstrap-grub-hook
+  (plain-file "grub"
+              "#!/usr/bin/env bash
+CLEANUP=( )
+cleanup() {
+  if [ ${#CLEANUP[*]} -gt 0 ]; then
+    LAST_ELEMENT=$((${#CLEANUP[*]}-1))
+    REVERSE_INDEXES=$(seq ${LAST_ELEMENT} -1 0)
+    for i in $REVERSE_INDEXES; do
+      ${CLEANUP[$i]}
+    done
+  fi
+}
+
+trap cleanup EXIT
+
+mount -t proc proc $TARGET/proc
+CLEANUP+=(\"umount $TARGET/proc\")
+mount -t sysfs sysfs $TARGET/sys
+CLEANUP+=(\"umount $TARGET/sys\")
+mount -o bind /dev $TARGET/dev
+CLEANUP+=(\"umount $TARGET/dev\")
+
+echo '
+GRUB_TIMEOUT_STYLE=menu
+GRUB_CMDLINE_LINUX_DEFAULT=\"console=ttyS0,115200 net.ifnames=0\"
+GRUB_TERMINAL=\"serial\"
+GRUB_SERIAL_COMMAND=\"serial --unit=0 --speed=115200\"
+' >> $TARGET/etc/default/grub
+
+# This PATH is propagated into the chroot and necessary to make grub-install
+# and related commands visible.
+export PATH=\"/usr/sbin:/usr/bin:/sbin:/bin:$PATH\"
+
+chroot \"$TARGET\" grub-install $BLOCKDEV
+chroot \"$TARGET\" update-grub
+
+cleanup
+trap - EXIT
+"))
+
+(define %default-debootstrap-hooks
+  `((10-interfaces . ,%debootstrap-interfaces-hook)
+    (90-grub . ,%debootstrap-grub-hook)))
+
+(define %default-debootstrap-extra-pkgs
+  ;; Packages suitable for a fully virtualized KVM guest.
+  '("acpi-support-base" "udev" "linux-image-amd64" "openssh-server"
+    "locales-all" "grub-pc"))
+
+(define-record-type* <debootstrap-configuration>
+  debootstrap-configuration make-debootstrap-configuration
+  debootstrap-configuration?
+  (hooks debootstrap-configuration-hooks                     ;#f | gexp | '((name . gexp))
+         (default %default-debootstrap-hooks))
+  (proxy debootstrap-configuration-proxy (default #f))       ;#f | string
+  (mirror debootstrap-configuration-mirror                   ;#f | string
+          (default #f))
+  (arch debootstrap-configuration-arch (default #f))         ;#f | string
+  (suite debootstrap-configuration-suite                     ;#f | string
+         (default "stable"))
+  (extra-pkgs debootstrap-configuration-extra-pkgs           ;list of strings
+              (default %default-debootstrap-extra-pkgs))
+  (components debootstrap-configuration-components           ;list of strings
+              (default '()))
+  (generate-cache? debootstrap-configuration-generate-cache? ;Boolean
+                   (default #t))
+  (clean-cache debootstrap-configuration-clean-cache         ;#f | integer
+               (default 14))
+  (partition-style debootstrap-configuration-partition-style ;#f | symbol | string
+                   (default 'msdos))
+  (partition-alignment debootstrap-configuration-partition-alignment ;#f | integer
+                       (default 2048)))
+
+(define (hooks->directory hooks)
+  (match hooks
+    ((? file-like?)
+     hooks)
+    ((? list?)
+     (let ((names (map car hooks))
+           (files (map cdr hooks)))
+       (with-imported-modules '((guix build utils))
+         (computed-file "hooks-union"
+                        #~(begin
+                            (use-modules (guix build utils)
+                                         (ice-9 match))
+                            (mkdir-p #$output)
+                            (with-directory-excursion #$output
+                              (for-each (match-lambda
+                                          ((name hook)
+                                           (let ((file-name (string-append
+                                                             #$output "/"
+                                                             (symbol->string name))))
+                                             ;; Copy to the destination to ensure
+                                             ;; the file is executable.
+                                             (copy-file hook file-name)
+                                             (chmod file-name #o555))))
+                                        '#$(zip names files))))))))
+    (_ #f)))
+
+(define-gexp-compiler (debootstrap-configuration-compiler
+                       (file <debootstrap-configuration>) system target)
+  (match file
+    (($ <debootstrap-configuration> hooks proxy mirror arch suite extra-pkgs
+                                    components generate-cache? clean-cache
+                                    partition-style partition-alignment)
+     (let ((customize-dir (hooks->directory hooks)))
+       (gexp->derivation
+        "debootstrap-variant"
+        #~(call-with-output-file (ungexp output "out")
+            (lambda (port)
+              (display
+               (string-append
+                (ungexp-splicing
+                 `(,@(if proxy
+                          `("PROXY=" ,proxy "\n")
+                          '())
+                    ,@(if mirror
+                          `("MIRROR=" ,mirror "\n")
+                          '())
+                    ,@(if arch
+                          `("ARCH=" ,arch "\n")
+                          '())
+                    ,@(if suite
+                          `("SUITE=" ,suite "\n")
+                          '())
+                    ,@(if (not (null? extra-pkgs))
+                          `("EXTRA_PKGS=" ,(string-join extra-pkgs ",") "\n")
+                          '())
+                    ,@(if (not (null? components))
+                          `("COMPONENTS=" ,(string-join components ",") "\n")
+                          '())
+                    ,@(if customize-dir
+                          `("CUSTOMIZE_DIR=" ,customize-dir "\n")
+                          '())
+                    ,@(if generate-cache?
+                          '("GENERATE_CACHE=yes\n")
+                          '("GENERATE_CACHE=no\n"))
+                    ,@(if clean-cache
+                          `("CLEAN_CACHE=" ,(number->string clean-cache) "\n")
+                          '())
+                    ,@(if partition-style
+                          (if (symbol? partition-style)
+                              `("PARTITION_STYLE="
+                                ,(symbol->string partition-style) "\n")
+                              `("PARTITION_STYLE=" ,partition-style "\n"))
+                          '())
+                    ,@(if partition-alignment
+                          `("PARTITION_ALIGNMENT="
+                            ,(number->string partition-alignment) "\n")
+                          '()))))
+               port)))
+        #:local-build? #t)))))
+
+(define (ganeti-os->directory os)
+  "Return the derivation to build the configuration directory to be installed
+in /etc/ganeti/instance-$os for OS."
+  (let* ((name      (ganeti-os-name os))
+         (extension (ganeti-os-extension os))
+         (variants  (ganeti-os-variants os))
+         (names     (map ganeti-os-variant-name variants))
+         (configs   (map ganeti-os-variant-configuration variants)))
+    (with-imported-modules '((guix build utils))
+      (define builder
+        #~(begin
+            (use-modules (guix build utils)
+                         (ice-9 format)
+                         (ice-9 match)
+                         (srfi srfi-1))
+            (mkdir-p #$output)
+            (unless (null? '#$names)
+              (let ((variants-dir (string-append #$output "/variants")))
+                (mkdir-p variants-dir)
+                (call-with-output-file (string-append variants-dir "/variants.list")
+                  (lambda (port)
+                    (format port "~a~%"
+                            (string-join '#$names "\n"))))
+                (for-each (match-lambda
+                            ((name file)
+                             (symlink file
+                                      (string-append variants-dir "/" name
+                                                     #$extension))))
+
+                          '#$(zip names configs))))))
+
+      (computed-file (string-append name "-os") builder))))
+
+(define (ganeti-directory file-storage-file os)
+  (let ((dirs (map ganeti-os->directory os))
+        (names (map ganeti-os-name os)))
+    (define builder
+      #~(begin
+          (use-modules (ice-9 match))
+          (mkdir #$output)
+          (when #$file-storage-file
+            (symlink #$file-storage-file
+                     (string-append #$output "/file-storage-paths")))
+          (for-each (match-lambda
+                      ((name dest)
+                       (symlink dest
+                                (string-append #$output "/instance-" name))))
+                    '#$(zip names dirs))))
+    (computed-file "etc-ganeti" builder)))
+
+(define (file-storage-file paths)
+  (match paths
+    ((? null?) #f)
+    ((? list?) (plain-file
+                "file-storage-paths"
+                (string-join paths "\n")))
+    (_ paths)))
+
+(define (ganeti-etc-service config)
+  (list `("ganeti" ,(ganeti-directory
+                     (file-storage-file
+                      (ganeti-configuration-file-storage-paths config))
+                     (ganeti-configuration-os config)))))
+
+(define (debootstrap-os variants)
+  (ganeti-os
+   (name "debootstrap")
+   (extension ".conf")
+   (variants variants)))
+
+(define (debootstrap-variant name configuration)
+  (ganeti-os-variant
+   (name name)
+   (configuration configuration)))
+
+(define %default-debootstrap-variants
+  (list (debootstrap-variant
+         "default"
+         (debootstrap-configuration))))
+
+(define (guix-os variants)
+  (ganeti-os
+   (name "guix")
+   (extension ".scm")
+   (variants variants)))
+
+(define (guix-variant name configuration)
+  (ganeti-os-variant
+   (name name)
+   (configuration configuration)))
+
+(define %default-guix-variants
+  (list (guix-variant
+         "default"
+         (file-append ganeti-instance-guix
+                      "/share/doc/ganeti-instance-guix/examples/dynamic.scm"))))
+
+;; The OS configurations usually come with a default OS.  To make them work
+;; out of the box, follow suit.
+(define %default-ganeti-os
+  (list (debootstrap-os %default-debootstrap-variants)
+        (guix-os %default-guix-variants)))
+
+(define ganeti-service-type
+  (service-type (name 'ganeti)
+                (extensions
+                 (list (service-extension activation-service-type
+                                          ganeti-activation)
+                       (service-extension shepherd-root-service-type
+                                          ganeti-shepherd-services)
+                       (service-extension etc-service-type
+                                          ganeti-etc-service)
+                       (service-extension profile-service-type
+                                          (compose list ganeti-configuration-ganeti))
+                       (service-extension mcron-service-type
+                                          ganeti-mcron-jobs)))
+                (default-value (ganeti-configuration (os %default-ganeti-os)))
+                (description
+                 "Ganeti is a family of services that are designed to run
+on a fleet of machines and facilitate deployment and maintenance of virtual
+servers (@dfn{instances}).  It can migrate instances between nodes, automatically
+restart failed instances, evacuate nodes, and much more.")))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index d6b0aee357..353fdce2bb 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +34,7 @@
   #:use-module (gnu services)
   #:use-module (gnu services base)
   #:use-module (gnu services configuration)
+  #:use-module (gnu services linux)
   #:use-module (gnu services shepherd)
   #:use-module (gnu services dbus)
   #:use-module (gnu system shadow)
@@ -130,10 +132,10 @@
             usb-modeswitch-configuration-usb-modeswitch-data
             usb-modeswitch-service-type
 
-            <wpa-supplicant-configuration>
             wpa-supplicant-configuration
             wpa-supplicant-configuration?
             wpa-supplicant-configuration-wpa-supplicant
+            wpa-supplicant-configuration-requirement
             wpa-supplicant-configuration-pid-file
             wpa-supplicant-configuration-dbus?
             wpa-supplicant-configuration-interface
@@ -1320,6 +1322,8 @@ whatever the thing is supposed to do).")))
   wpa-supplicant-configuration?
   (wpa-supplicant     wpa-supplicant-configuration-wpa-supplicant ;<package>
                       (default wpa-supplicant))
+  (requirement        wpa-supplicant-configuration-requirement    ;list of symbols
+                      (default '(user-processes dbus-system loopback syslogd)))
   (pid-file           wpa-supplicant-configuration-pid-file       ;string
                       (default "/var/run/wpa_supplicant.pid"))
   (dbus?              wpa-supplicant-configuration-dbus?          ;Boolean
@@ -1333,12 +1337,12 @@ whatever the thing is supposed to do).")))
 
 (define wpa-supplicant-shepherd-service
   (match-lambda
-    (($ <wpa-supplicant-configuration> wpa-supplicant pid-file dbus? interface
-                                       config-file extra-options)
+    (($ <wpa-supplicant-configuration> wpa-supplicant requirement pid-file dbus?
+                                       interface config-file extra-options)
      (list (shepherd-service
             (documentation "Run the WPA supplicant daemon")
             (provision '(wpa-supplicant))
-            (requirement '(user-processes dbus-system loopback syslogd))
+            (requirement requirement)
             (start #~(make-forkexec-constructor
                       (list (string-append #$wpa-supplicant
                                            "/sbin/wpa_supplicant")
@@ -1440,10 +1444,10 @@ simulation."
   (append (hostapd-shepherd-services config
                                      #:requirement
                                      '(unblocked-wifi
-                                       mac-simulation-module))
+                                       kernel-module-loader))
           (list (shepherd-service
                  (provision '(unblocked-wifi))
-                 (requirement '(file-systems mac-simulation-module))
+                 (requirement '(file-systems kernel-module-loader))
                  (documentation
                   "Unblock WiFi devices for use by mac80211_hwsim.")
                  (start #~(lambda _
@@ -1451,21 +1455,6 @@ simulation."
                                     "unblock" "0")
                             (invoke #$(file-append util-linux "/sbin/rfkill")
                                     "unblock" "1")))
-                 (one-shot? #t))
-                (shepherd-service
-                 (provision '(mac-simulation-module))
-                 (requirement '(file-systems))
-                 (modules '((guix build utils)))
-                 (documentation
-                  "Load the mac80211_hwsim Linux kernel module.")
-                 (start (with-imported-modules '((guix build utils))
-                          #~(lambda _
-                              ;; XXX: We can't use 'load-linux-module*' here because it
-                              ;; expects a flat module directory.
-                              (setenv "LINUX_MODULE_DIRECTORY"
-                                      "/run/booted-system/kernel/lib/modules")
-                              (invoke #$(file-append kmod "/bin/modprobe")
-                                      "mac80211_hwsim"))))
                  (one-shot? #t)))))
 
 (define simulated-wifi-service-type
@@ -1473,7 +1462,9 @@ simulation."
    (name 'simulated-wifi)
    (extensions
     (list (service-extension shepherd-root-service-type
-                             simulated-wifi-shepherd-services)))
+                             simulated-wifi-shepherd-services)
+          (service-extension kernel-module-loader-service-type
+                             (const '("mac80211_hwsim")))))
    (default-value (hostapd-configuration
                    (interface "wlan1")
                    (ssid "Test Network")))
diff --git a/gnu/services/nix.scm b/gnu/services/nix.scm
index dfe33991d0..75b2df02dc 100644
--- a/gnu/services/nix.scm
+++ b/gnu/services/nix.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,6 +31,9 @@
   #:use-module (guix store)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
+  #:use-module (guix modules)
   #:export (nix-service-type))
 
 ;;; Commentary:
@@ -39,10 +42,17 @@
 ;;;
 ;;; Code:
 
-
-;;;
-;;; Accounts
-;;;
+(define-record-type* <nix-configuration>
+  nix-configuration make-nix-configuration
+  nix-configuration?
+  (package             nix-configuration-package ;package
+                       (default nix))
+  (sandbox             nix-configuration-sandbox ;boolean
+                       (default #t))
+  (build-sandbox-items nix-configuration-build-sandbox-items ;list of strings
+                       (default '()))
+  (extra-config        nix-configuration-extra-options ;list of strings
+                       (default '())))
 
 ;; Copied from gnu/services/base.scm
 (define* (nix-build-accounts count #:key
@@ -73,32 +83,50 @@ GID."
          (id 40000))
         (nix-build-accounts 10 #:group "nixbld")))
 
-(define (nix-activation _)
-  "Return the activation gexp."
-  (with-imported-modules '((guix build utils))
-    #~(begin
-        (use-modules (guix build utils)
-                     (srfi srfi-26))
-        (for-each (cut mkdir-p <>) '("/nix/store" "/nix/var/log"
-                                     "/nix/var/nix/gcroots/per-user"
-                                     "/nix/var/nix/profiles/per-user"))
-        (chown "/nix/store"
-               (passwd:uid (getpw "root")) (group:gid (getpw "nixbld01")))
-        (chmod "/nix/store" #o775)
-        (for-each (cut chmod <> #o777) '("/nix/var/nix/profiles"
-                                         "/nix/var/nix/profiles/per-user")))))
+(define nix-activation
+  ;; Return the activation gexp.
+  (match-lambda
+    (($ <nix-configuration> package sandbox build-sandbox-items extra-config)
+     (with-imported-modules (source-module-closure
+                             '((guix build store-copy)))
+       #~(begin
+           (use-modules (guix build utils)
+                        (ice-9 format)
+                        (srfi srfi-1)
+                        (srfi srfi-26))
+           (for-each (cut mkdir-p <>) '("/nix/store" "/nix/var/log"
+                                        "/nix/var/nix/gcroots/per-user"
+                                        "/nix/var/nix/profiles/per-user"))
+           (chown "/nix/store"
+                  (passwd:uid (getpw "root")) (group:gid (getpw "nixbld01")))
+           (chmod "/nix/store" #o775)
+           (for-each (cut chmod <> #o777) '("/nix/var/nix/profiles"
+                                            "/nix/var/nix/profiles/per-user"))
+           (mkdir-p "/etc/nix")
+           (with-output-to-file "/etc/nix/nix.conf"
+             (lambda _
+               (format #t "sandbox = ~a~%" (if #$sandbox "true" "false"))
+               ;; config.nix captures store file names.
+               (format #t "build-sandbox-paths = ~{~a ~}~%"
+                       (append (append-map (cut call-with-input-file <> read)
+                                           '#$(map references-file
+                                                   (list package)))
+                               '#$build-sandbox-items))
+               (for-each (cut display <>) '#$extra-config))))))))
 
-(define (nix-shepherd-service _)
-  "Return a <shepherd-service> for Nix."
-  (list
-   (shepherd-service
-    (provision '(nix-daemon))
-    (documentation "Run nix-daemon.")
-    (requirement '())
-    (start #~(make-forkexec-constructor
-              (list (string-append #$nix "/bin/nix-daemon"))))
-    (respawn? #f)
-    (stop #~(make-kill-destructor)))))
+(define nix-shepherd-service
+  ;; Return a <shepherd-service> for Nix.
+  (match-lambda
+    (($ <nix-configuration> package _ ...)
+     (list
+      (shepherd-service
+       (provision '(nix-daemon))
+       (documentation "Run nix-daemon.")
+       (requirement '())
+       (start #~(make-forkexec-constructor
+                 (list (string-append #$package "/bin/nix-daemon"))))
+       (respawn? #f)
+       (stop #~(make-kill-destructor)))))))
 
 (define nix-service-type
   (service-type
@@ -107,7 +135,7 @@ GID."
     (list (service-extension shepherd-root-service-type nix-shepherd-service)
           (service-extension account-service-type nix-accounts)
           (service-extension activation-service-type nix-activation)))
-   (default-value '())
-   (description "Run the Nix daemon.")))
+   (description "Run the Nix daemon.")
+   (default-value (nix-configuration))))
 
 ;;; nix.scm ends here
diff --git a/gnu/services/science.scm b/gnu/services/science.scm
new file mode 100644
index 0000000000..94ff0f36f2
--- /dev/null
+++ b/gnu/services/science.scm
@@ -0,0 +1,57 @@
+(define-module (gnu services science)
+  #:export (<rshiny-configuration>
+            rshiny-configuration
+            rshiny-configuration?
+            rshiny-configuration-package
+            rshiny-configuration-binary
+            rshiny-shepherd-service
+            rshiny-service-type))
+
+(use-modules (gnu)
+             (guix records)
+             (ice-9 match))
+(use-service-modules shepherd)
+(use-package-modules cran)
+
+(define-record-type* <rshiny-configuration>
+  rshiny-configuration
+  make-rshiny-configuration
+  rshiny-configuration?
+  (package          rshiny-configuration-package    ; package
+                    (default r-shiny))
+  (binary           rshiny-configuration-binary     ; string
+                    (default "rshiny")))
+
+(define rshiny-shepherd-service
+  (match-lambda
+    (($ <rshiny-configuration> package binary)
+     (list
+       (shepherd-service
+         (documentation (string-append "R-Shiny service for " binary))
+         (provision (list (symbol-append 'rshiny- (string->symbol
+                                                    (string-take binary 9)))))
+         (requirement '(networking))
+         (start
+           #~(exec-command
+               (list
+                 #$(string-append "/run/current-system/profile/bin/" binary))
+               ;#:log-file #$(string-append "/var/log/" binary ".log") ; kills shepherd
+               #:environment-variables
+               (list "R_LIBS_USER=/run/current-system/profile/site-library/")))
+         (stop #~(make-kill-destructor)))))))
+
+(define rshiny-service-type
+  (service-type
+    (name 'rshiny)
+    (extensions
+      (list
+        (service-extension shepherd-root-service-type
+                           rshiny-shepherd-service)
+        (service-extension profile-service-type
+                           ;; We want the package installed so that it
+                           ;; pulls in the propagated inputs as well.
+                           (lambda (config)
+                             (list
+                               (rshiny-configuration-package config))))))
+    (description
+     "Run an R-Shiny webapp as a Guix Service.")))
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index 1a15ffbd48..b93ed70099 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -34,6 +34,7 @@
   #:use-module (gnu system file-systems)
   #:use-module (gnu system hurd)
   #:use-module (gnu system image)
+  #:use-module (gnu system images hurd)
   #:use-module (gnu system shadow)
   #:use-module (gnu system)
   #:use-module (guix derivations)
@@ -51,10 +52,17 @@
 
   #:export (%hurd-vm-operating-system
             hurd-vm-configuration
+            hurd-vm-configuration?
+            hurd-vm-configuration-os
+            hurd-vm-configuration-qemu
+            hurd-vm-configuration-image
+            hurd-vm-configuration-disk-size
+            hurd-vm-configuration-memory-size
+            hurd-vm-configuration-options
+            hurd-vm-configuration-id
+            hurd-vm-configuration-net-options
             hurd-vm-disk-image
-            hurd-vm-id
             hurd-vm-net-options
-            hurd-vm-options
             hurd-vm-service-type
 
             libvirt-configuration
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index 9fcfe8a0dc..3b9f9e40be 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Nikita <nikita@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
@@ -37,6 +37,7 @@
   #:use-module (gnu system pam)
   #:use-module (gnu system shadow)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages web)
   #:use-module (gnu packages patchutils)
@@ -57,20 +58,18 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (ice-9 match)
-  #:export (<httpd-configuration>
-            httpd-configuration
+  #:use-module (ice-9 format)
+  #:export (httpd-configuration
             httpd-configuration?
             httpd-configuration-package
             httpd-configuration-pid-file
             httpd-configuration-config
 
-            <httpd-virtualhost>
             httpd-virtualhost
             httpd-virtualhost?
             httpd-virtualhost-addresses-and-ports
             httpd-virtualhost-contents
 
-            <httpd-config-file>
             httpd-config-file
             httpd-config-file?
             httpd-config-file-modules
@@ -82,14 +81,12 @@
             httpd-config-file-user
             httpd-config-file-group
 
-            <httpd-module>
             httpd-module
             httpd-module?
             %default-httpd-modules
 
             httpd-service-type
 
-            <nginx-configuration>
             nginx-configuration
             nginx-configuration?
             nginx-configuartion-nginx
@@ -104,7 +101,6 @@
             nginx-configuration-extra-content
             nginx-configuration-file
 
-            <nginx-server-configuration>
             nginx-server-configuration
             nginx-server-configuration?
             nginx-server-configuration-listen
@@ -117,19 +113,16 @@
             nginx-server-configuration-server-tokens?
             nginx-server-configuration-raw-content
 
-            <nginx-upstream-configuration>
             nginx-upstream-configuration
             nginx-upstream-configuration?
             nginx-upstream-configuration-name
             nginx-upstream-configuration-servers
 
-            <nginx-location-configuration>
             nginx-location-configuration
             nginx-location-configuration?
             nginx-location-configuration-uri
             nginx-location-configuration-body
 
-            <nginx-named-location-configuration>
             nginx-named-location-configuration
             nginx-named-location-configuration?
             nginx-named-location-configuration-name
@@ -142,7 +135,6 @@
             fcgiwrap-configuration?
             fcgiwrap-service-type
 
-            <php-fpm-configuration>
             php-fpm-configuration
             make-php-fpm-configuration
             php-fpm-configuration?
@@ -160,7 +152,6 @@
             php-fpm-configuration-workers-log-file
             php-fpm-configuration-file
 
-            <php-fpm-dynamic-process-manager-configuration>
             php-fpm-dynamic-process-manager-configuration
             make-php-fpm-dynamic-process-manager-configuration
             php-fpm-dynamic-process-manager-configuration?
@@ -169,13 +160,11 @@
             php-fpm-dynamic-process-manager-configuration-min-spare-servers
             php-fpm-dynamic-process-manager-configuration-max-spare-servers
 
-            <php-fpm-static-process-manager-configuration>
             php-fpm-static-process-manager-configuration
             make-php-fpm-static-process-manager-configuration
             php-fpm-static-process-manager-configuration?
             php-fpm-static-process-manager-configuration-max-children
 
-            <php-fpm-on-demand-process-manager-configuration>
             php-fpm-on-demand-process-manager-configuration
             make-php-fpm-on-demand-process-manager-configuration
             php-fpm-on-demand-process-manager-configuration?
@@ -191,7 +180,6 @@
             hpcguix-web-configuration?
             hpcguix-web-service-type
 
-            <tailon-configuration-file>
             tailon-configuration-file
             tailon-configuration-file?
             tailon-configuration-file-files
@@ -205,7 +193,6 @@
             tailon-configuration-file-http-auth
             tailon-configuration-file-users
 
-            <tailon-configuration>
             tailon-configuration
             tailon-configuration?
             tailon-configuration-config-file
@@ -213,7 +200,6 @@
 
             tailon-service-type
 
-            <varnish-configuration>
             varnish-configuration
             varnish-configuration?
             varnish-configuration-package
@@ -227,7 +213,6 @@
 
             varnish-service-type
 
-            <patchwork-database-configuration>
             patchwork-database-configuration
             patchwork-database-configuration?
             patchwork-database-configuration-engine
@@ -237,7 +222,6 @@
             patchwork-database-configuration-host
             patchwork-database-configuration-port
 
-            <patchwork-settings-module>
             patchwork-settings-module
             patchwork-settings-module?
             patchwork-settings-module-database-configuration
@@ -252,7 +236,6 @@
             patchwork-settings-module-force-https-links?
             patchwork-settings-module-extra-settings
 
-            <patchwork-configuration>
             patchwork-configuration
             patchwork-configuration?
             patchwork-configuration-patchwork
@@ -262,7 +245,6 @@
             patchwork-virtualhost
             patchwork-service-type
 
-            <mumi-configuration>
             mumi-configuration
             mumi-configuration?
             mumi-configuration-mumi
@@ -1719,6 +1701,11 @@ WSGIPassAuthorization On
          (shell (file-append shadow "/sbin/nologin")))))
 
 (define (mumi-shepherd-services config)
+  (define environment
+    #~(list "LC_ALL=en_US.utf8"
+            (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
+                           "/lib/locale")))
+
   (match config
     (($ <mumi-configuration> mumi mailer? sender smtp)
      (list (shepherd-service
@@ -1728,6 +1715,7 @@ WSGIPassAuthorization On
             (start #~(make-forkexec-constructor
                       `(#$(file-append mumi "/bin/mumi") "web"
                         ,@(if #$mailer? '() '("--disable-mailer")))
+                      #:environment-variables #$environment
                       #:user "mumi" #:group "mumi"
                       #:log-file "/var/log/mumi.log"))
             (stop #~(make-kill-destructor)))
@@ -1737,6 +1725,7 @@ WSGIPassAuthorization On
             (requirement '(networking))
             (start #~(make-forkexec-constructor
                       '(#$(file-append mumi "/bin/mumi") "worker")
+                      #:environment-variables #$environment
                       #:user "mumi" #:group "mumi"
                       #:log-file "/var/log/mumi.worker.log"))
             (stop #~(make-kill-destructor)))
@@ -1752,6 +1741,7 @@ WSGIPassAuthorization On
                         ,@(if #$smtp
                               (list (string-append "--smtp=" #$smtp))
                               '()))
+                      #:environment-variables #$environment
                       #:user "mumi" #:group "mumi"
                       #:log-file "/var/log/mumi.mailer.log"))
             (stop #~(make-kill-destructor)))))))
diff --git a/gnu/system.scm b/gnu/system.scm
index 44baacee7b..de5f25a35d 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -118,6 +118,7 @@
             operating-system-sudoers-file
             operating-system-swap-devices
             operating-system-kernel-loadable-modules
+            operating-system-location
 
             operating-system-derivation
             operating-system-profile
@@ -255,7 +256,12 @@
                    (default %setuid-programs))    ; list of string-valued gexps
 
   (sudoers-file operating-system-sudoers-file     ; file-like
-                (default %sudoers-specification)))
+                (default %sudoers-specification))
+
+  (location operating-system-location             ; <location>
+            (default (and=> (current-source-location)
+                            source-properties->location))
+            (innate)))
 
 (define (operating-system-kernel-arguments os root-device)
   "Return all the kernel arguments, including the ones not specified
@@ -351,9 +357,13 @@ file system labels."
          (('initrd ('string-append directory file)) ;the old format
           (string-append directory file))
          (('initrd (? string? file))
-          file)))
+          file)
+         (#f #f)))
 
-      (multiboot-modules (or (assq 'multiboot-modules rest) '()))
+      (multiboot-modules
+       (match (assq 'multiboot-modules rest)
+         ((_ args) args)
+         (#f       '())))
 
       (store-device
        ;; Linux device names like "/dev/sda1" are not suitable GRUB device
@@ -533,22 +543,26 @@ possible (that is if there's a LINUX keyword argument in the build system)."
 value of the SYSTEM-SERVICE-TYPE service."
   (let* ((locale  (operating-system-locale-directory os))
          (kernel  (operating-system-kernel os))
+         (hurd    (operating-system-hurd os))
          (modules (operating-system-kernel-loadable-modules os))
-         (kernel  (profile
-                   (content (packages->manifest
-                             (cons kernel
-                                   (map (lambda (module)
-                                          (if (package? module)
-                                              (package-for-kernel kernel
-                                                                  module)
-                                              module))
-                                        modules))))
-                   (hooks (list linux-module-database))))
-         (initrd  (operating-system-initrd-file os))
+         (kernel  (if hurd
+                      kernel
+                      (profile
+                       (content (packages->manifest
+                                 (cons kernel
+                                       (map (lambda (module)
+                                              (if (package? module)
+                                                  (package-for-kernel kernel
+                                                                      module)
+                                                  module))
+                                            modules))))
+                       (hooks (list linux-module-database)))))
+         (initrd  (and (not hurd) (operating-system-initrd-file os)))
          (params  (operating-system-boot-parameters-file os)))
     `(("kernel" ,kernel)
+      ,@(if hurd `(("hurd" ,hurd)) '())
       ("parameters" ,params)
-      ("initrd" ,initrd)
+      ,@(if initrd `(("initrd" ,initrd)) '())
       ("locale" ,locale))))   ;used by libc
 
 (define (operating-system-default-essential-services os)
@@ -600,23 +614,24 @@ bookkeeping."
                                   (operating-system-firmware os)))))))
 
 (define (hurd-default-essential-services os)
-  (list (service system-service-type '())
-        %boot-service
-        %hurd-startup-service
-        %activation-service
-        %shepherd-root-service
-        (service user-processes-service-type)
-        (account-service (append (operating-system-accounts os)
-                                 (operating-system-groups os))
-                         (operating-system-skeletons os))
-        (root-file-system-service)
-        (service file-system-service-type '())
-        (service fstab-service-type
-                 (filter file-system-needed-for-boot?
-                         (operating-system-file-systems os)))
-        (pam-root-service (operating-system-pam-services os))
-        (operating-system-etc-service os)
-        (service profile-service-type (operating-system-packages os))))
+  (let ((entries (operating-system-directory-base-entries os)))
+    (list (service system-service-type entries)
+          %boot-service
+          %hurd-startup-service
+          %activation-service
+          %shepherd-root-service
+          (service user-processes-service-type)
+          (account-service (append (operating-system-accounts os)
+                                   (operating-system-groups os))
+                           (operating-system-skeletons os))
+          (root-file-system-service)
+          (service file-system-service-type '())
+          (service fstab-service-type
+                   (filter file-system-needed-for-boot?
+                           (operating-system-file-systems os)))
+          (pam-root-service (operating-system-pam-services os))
+          (operating-system-etc-service os)
+          (service profile-service-type (operating-system-packages os)))))
 
 (define* (operating-system-services os)
   "Return all the services of OS, including \"essential\" services."
@@ -1017,9 +1032,13 @@ we're running in the final root."
 
 (define (operating-system-root-file-system os)
   "Return the root file system of OS."
-  (find (lambda (fs)
-          (string=? "/" (file-system-mount-point fs)))
-        (operating-system-file-systems os)))
+  (or (find (lambda (fs)
+              (string=? "/" (file-system-mount-point fs)))
+            (operating-system-file-systems os))
+      (raise (condition
+              (&message (message "missing root file system"))
+              (&error-location
+               (location (operating-system-location os)))))))
 
 (define (operating-system-initrd-file os)
   "Return a gexp denoting the initrd file of OS."
@@ -1212,7 +1231,7 @@ a list of <menu-entry>, to populate the \"old entries\" menu."
   "Return a monadic <boot-parameters> record that describes the boot
 parameters of OS.  When SYSTEM-KERNEL-ARGUMENTS? is true, add kernel arguments
 such as '--root' and '--load' to <boot-parameters>."
-  (let* ((initrd          (and (not (hurd-target?))
+  (let* ((initrd          (and (not (operating-system-hurd os))
                                (operating-system-initrd-file os)))
          (store           (operating-system-store-file-system os))
          (bootloader      (bootloader-configuration-bootloader
@@ -1272,7 +1291,13 @@ being stored into the \"parameters\" file)."
                      (kernel #$(boot-parameters-kernel params))
                      (kernel-arguments
                       #$(boot-parameters-kernel-arguments params))
-                     (initrd #$(boot-parameters-initrd params))
+                     #$@(if (boot-parameters-initrd params)
+                            #~((initrd #$(boot-parameters-initrd params)))
+                            #~())
+                     #$@(if (pair? (boot-parameters-multiboot-modules params))
+                            #~((multiboot-modules
+                                #$(boot-parameters-multiboot-modules params)))
+                            #~())
                      (bootloader-name #$(boot-parameters-bootloader-name params))
                      (bootloader-menu-entries
                       #$(map menu-entry->sexp
diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 43d98cc8c2..80fffe8e45 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -94,7 +94,7 @@
     (bootloader (bootloader-configuration
                  (bootloader grub-minimal-bootloader)
                  (target "/dev/vda")))
-    (initrd (lambda _ '()))
+    (initrd #f)
     (initrd-modules (lambda _ '()))
     (firmware '())
     (host-name "guixygnu")
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 26ffa028fe..36f56e237d 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -53,10 +53,12 @@
   #:use-module (srfi srfi-35)
   #:use-module (rnrs bytevectors)
   #:use-module (ice-9 match)
-  #:export (esp-partition
+  #:export (root-offset
+            root-label
+
+            esp-partition
             root-partition
 
-            hurd-disk-image
             efi-disk-image
             iso9660-image
 
@@ -94,27 +96,6 @@
    (flags '(boot))
    (initializer (gexp initialize-root-partition))))
 
-(define hurd-initialize-root-partition
-  #~(lambda* (#:rest args)
-      (apply initialize-root-partition
-             (append args
-                     (list #:make-device-nodes
-                           make-hurd-device-nodes)))))
-
-(define hurd-disk-image
-  (image
-   (format 'disk-image)
-   (target "i586-pc-gnu")
-   (partitions
-    (list (partition
-           (size 'guess)
-           (offset root-offset)
-           (label root-label)
-           (file-system "ext2")
-           (file-system-options '("-o" "hurd" "-O" "ext_attr"))
-           (flags '(boot))
-           (initializer hurd-initialize-root-partition))))))
-
 (define efi-disk-image
   (image
    (format 'disk-image)
@@ -127,9 +108,7 @@
     (list (partition
            (size 'guess)
            (label "GUIX_IMAGE")
-           (flags '(boot)))))
-   ;; XXX: Temporarily disable compression to speed-up the tests.
-   (compression? #f)))
+           (flags '(boot)))))))
 
 
 ;;
@@ -255,18 +234,23 @@ used in the image."
              (graph (match inputs
                       (((names . _) ...)
                        names)))
-             (root-builder
+             (type (partition-file-system partition))
+             (image-builder
               (with-imported-modules*
-               (let* ((initializer #$(partition-initializer partition)))
+               (let ((initializer #$(partition-initializer partition))
+                     (inputs '#+(list e2fsprogs fakeroot dosfstools mtools))
+                     (image-root "tmp-root"))
                  (sql-schema #$schema)
 
+                 (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
+
                  ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be
                  ;; decoded.
                  (setenv "GUIX_LOCPATH"
                          #+(file-append glibc-utf8-locales "/lib/locale"))
                  (setlocale LC_ALL "en_US.utf8")
 
-                 (initializer #$output
+                 (initializer image-root
                               #:references-graphs '#$graph
                               #:deduplicate? #f
                               #:system-directory #$os
@@ -277,19 +261,12 @@ used in the image."
                               #+(bootloader-installer bootloader)
                               #:bootcfg #$bootcfg
                               #:bootcfg-location
-                              #$(bootloader-configuration-file bootloader)))))
-             (image-root
-              (computed-file "partition-image-root" root-builder
-                             #:options `(#:references-graphs ,inputs)))
-             (type (partition-file-system partition))
-             (image-builder
-              (with-imported-modules*
-               (let ((inputs '#+(list e2fsprogs dosfstools mtools)))
-                 (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
+                              #$(bootloader-configuration-file bootloader))
                  (make-partition-image #$(partition->gexp partition)
                                        #$output
-                                       #$image-root)))))
-        (computed-file "partition.img" image-builder)))
+                                       image-root)))))
+        (computed-file "partition.img" image-builder
+                       #:options `(#:references-graphs ,inputs))))
 
     (define (partition->config partition)
       ;; Return the genimage partition configuration for PARTITION.
@@ -324,7 +301,11 @@ image ~a {
 }~%" #$genimage-name #$image-type (list #$@partitions-config))))))))
       (computed-file "genimage.cfg" builder)))
 
-  (let* ((substitutable? (image-substitutable? image))
+  (let* ((image-name (image-name image))
+         (name (if image-name
+                   (symbol->string image-name)
+                   name))
+         (substitutable? (image-substitutable? image))
          (builder
           (with-imported-modules*
            (let ((inputs '#+(list genimage coreutils findutils))
@@ -388,33 +369,31 @@ used in the image. "
          (graph (match inputs
                   (((names . _) ...)
                    names)))
-         (root-builder
-          (with-imported-modules*
-           (sql-schema #$schema)
-
-           ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded.
-           (setenv "GUIX_LOCPATH"
-                   #+(file-append glibc-utf8-locales "/lib/locale"))
-           (setlocale LC_ALL "en_US.utf8")
-
-           (initialize-root-partition #$output
-                                      #:references-graphs '#$graph
-                                      #:deduplicate? #f
-                                      #:system-directory #$os)))
-         (image-root
-          (computed-file "image-root" root-builder
-                         #:options `(#:references-graphs ,inputs)))
          (builder
           (with-imported-modules*
            (let* ((inputs '#$(list parted e2fsprogs dosfstools xorriso
-                                   sed grep coreutils findutils gawk)))
+                                   sed grep coreutils findutils gawk))
+                  (image-root "tmp-root"))
+             (sql-schema #$schema)
+
+             ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded.
+             (setenv "GUIX_LOCPATH"
+                     #+(file-append glibc-utf8-locales "/lib/locale"))
+
+             (setlocale LC_ALL "en_US.utf8")
+
              (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
+
+             (initialize-root-partition image-root
+                                        #:references-graphs '#$graph
+                                        #:deduplicate? #f
+                                        #:system-directory #$os)
              (make-iso9660-image #$xorriso
                                  '#$grub-mkrescue-environment
                                  #$bootloader
                                  #$bootcfg
                                  #$os
-                                 #$image-root
+                                 image-root
                                  #$output
                                  #:references-graphs '#$graph
                                  #:register-closures? #$register-closures?
@@ -569,7 +548,8 @@ addition of the <image> record."
     (_ (cond
         ((and target
               (hurd-triplet? target))
-         hurd-disk-image)
+         (module-ref (resolve-interface '(gnu system images hurd))
+                     'hurd-disk-image))
         (else
          efi-disk-image)))))
 
diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm
new file mode 100644
index 0000000000..d87640e8e3
--- /dev/null
+++ b/gnu/system/images/hurd.scm
@@ -0,0 +1,89 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu system images hurd)
+  #:use-module (guix gexp)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader grub)
+  #:use-module (gnu image)
+  #:use-module (gnu packages ssh)
+  #:use-module (gnu services)
+  #:use-module (gnu services ssh)
+  #:use-module (gnu system)
+  #:use-module (gnu system file-systems)
+  #:use-module (gnu system hurd)
+  #:use-module (gnu system image)
+  #:export (hurd-barebones-os
+            hurd-disk-image
+            hurd-barebones-disk-image))
+
+(define hurd-barebones-os
+  (operating-system
+    (inherit %hurd-default-operating-system)
+    (bootloader (bootloader-configuration
+                 (bootloader grub-minimal-bootloader)
+                 (target "/dev/sdX")))
+    (file-systems (cons (file-system
+                          (device (file-system-label "my-root"))
+                          (mount-point "/")
+                          (type "ext2"))
+                        %base-file-systems))
+    (host-name "guixygnu")
+    (timezone "Europe/Amsterdam")
+    (packages (cons openssh-sans-x %base-packages/hurd))
+    (services (cons (service openssh-service-type
+                             (openssh-configuration
+                              (openssh openssh-sans-x)
+                              (use-pam? #f)
+                              (port-number 2222)
+                              (permit-root-login #t)
+                              (allow-empty-passwords? #t)
+                              (password-authentication? #t)))
+               %base-services/hurd))))
+
+(define hurd-initialize-root-partition
+  #~(lambda* (#:rest args)
+      (apply initialize-root-partition
+             (append args
+                     (list #:make-device-nodes make-hurd-device-nodes
+                           ;; XXX Creating a db.sqlite with journal_mode=WAL
+                           ;; yields "unable to open database file" on GNU/Hurd
+                           ;; for an sqlite with the hurd-locking-mode.patch;
+                           ;; see <https://bugs.gnu.org/42151>.
+                           #:wal-mode? #f)))))
+
+(define hurd-disk-image
+  (image
+   (format 'disk-image)
+   (target "i586-pc-gnu")
+   (partitions
+    (list (partition
+           (size 'guess)
+           (offset root-offset)
+           (label root-label)
+           (file-system "ext2")
+           (file-system-options '("-o" "hurd" "-O" "ext_attr"))
+           (flags '(boot))
+           (initializer hurd-initialize-root-partition))))))
+
+(define hurd-barebones-disk-image
+  (image
+   (inherit hurd-disk-image)
+   (name 'hurd-barebones-disk-image)
+   (operating-system hurd-barebones-os)))
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm
index 7c58f876a3..c3f98302ad 100644
--- a/gnu/system/mapped-devices.scm
+++ b/gnu/system/mapped-devices.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -40,6 +40,7 @@
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:use-module (ice-9 match)
+  #:use-module (ice-9 format)
   #:export (mapped-device
             mapped-device?
             mapped-device-source
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index f2b6b71b4d..861f2a427a 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -819,7 +819,6 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
             '())
 
      "-no-reboot"
-     "-nic" "user,model=virtio-net-pci"
      "-object" "rng-random,filename=/dev/urandom,id=guixsd-vm-rng"
      "-device" "virtio-rng-pci,rng=guixsd-vm-rng"
 
diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm
index 5ab33e1104..ea6c9a33fe 100644
--- a/gnu/tests/docker.scm
+++ b/gnu/tests/docker.scm
@@ -157,7 +157,7 @@ inside %DOCKER-OS."
           (version "0")
           (source #f)
           (build-system trivial-build-system)
-          (arguments `(#:guile ,guile-2.2
+          (arguments `(#:guile ,guile-3.0
                        #:builder
                        (let ((out (assoc-ref %outputs "out")))
                          (mkdir out)
@@ -171,7 +171,7 @@ standard output device and then enters a new line.")
           (home-page #f)
           (license license:public-domain)))
        (profile (profile-derivation (packages->manifest
-                                     (list guile-2.2 guile-json-3
+                                     (list guile-3.0 guile-json-3
                                            guest-script-package))
                                     #:hooks '()
                                     #:locales? #f))
@@ -254,7 +254,7 @@ inside %DOCKER-OS."
                 (define (wait-for-container-file container file)
                   ;; Wait for FILE to show up in CONTAINER.
                   (docker-cli "exec" container
-                              #$(file-append guile-2.2 "/bin/guile")
+                              #$(file-append guile-3.0 "/bin/guile")
                               "-c"
                               (object->string
                                `(let loop ((n 15))
diff --git a/gnu/tests/ganeti.scm b/gnu/tests/ganeti.scm
new file mode 100644
index 0000000000..ff853a7149
--- /dev/null
+++ b/gnu/tests/ganeti.scm
@@ -0,0 +1,270 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>.
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests ganeti)
+  #:use-module (gnu)
+  #:use-module (gnu tests)
+  #:use-module (gnu system vm)
+  #:use-module (gnu services)
+  #:use-module (gnu services ganeti)
+  #:use-module (gnu services networking)
+  #:use-module (gnu services ssh)
+  #:use-module (gnu packages virtualization)
+  #:use-module (guix gexp)
+  #:use-module (ice-9 format)
+  #:export (%test-ganeti-kvm %test-ganeti-lxc))
+
+(define %ganeti-os
+  (operating-system
+    (host-name "gnt1")
+    (timezone "Etc/UTC")
+    (locale "en_US.UTF-8")
+
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vda")))
+    (file-systems (cons (file-system
+                          (device (file-system-label "my-root"))
+                          (mount-point "/")
+                          (type "ext4"))
+                        %base-file-systems))
+    (firmware '())
+
+    ;; The hosts file must contain a nonlocal IP for host-name.
+    ;; In addition, the cluster name must resolve to an IP address that
+    ;; is not currently provisioned.
+    (hosts-file (plain-file "hosts" (format #f "
+127.0.0.1       localhost
+::1             localhost
+10.0.2.2        gnt1.example.com gnt1
+192.168.254.254 ganeti.example.com
+")))
+
+    (packages (append (list ganeti-instance-debootstrap ganeti-instance-guix)
+                      %base-packages))
+    (services
+     (append (list (static-networking-service "eth0" "10.0.2.2"
+                                              #:netmask "255.255.255.0"
+                                              #:gateway "10.0.2.1"
+                                              #:name-servers '("10.0.2.1"))
+
+                   (service openssh-service-type
+                            (openssh-configuration
+                             (permit-root-login 'without-password)))
+
+                   (service ganeti-service-type
+                            (ganeti-configuration
+                             (file-storage-paths '("/srv/ganeti/file-storage"))
+                             (rapi-configuration
+                              (ganeti-rapi-configuration
+                               ;; Disable TLS so we can test the RAPI without
+                               ;; pulling in GnuTLS.
+                               (ssl? #f)))
+                             (os %default-ganeti-os))))
+             %base-services))))
+
+(define* (run-ganeti-test hypervisor #:key
+                          (master-netdev "eth0")
+                          (hvparams '())
+                          (extra-packages '())
+                          (rapi-port 5080)
+                          (noded-port 1811))
+  "Run tests in %GANETI-OS."
+  (define os
+    (marionette-operating-system
+     (operating-system
+       (inherit %ganeti-os)
+       (packages (append extra-packages
+                         (operating-system-packages %ganeti-os))))
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define %forwarded-rapi-port 5080)
+  (define %forwarded-noded-port 1811)
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     ;; Some of the daemons are fairly memory-hungry.
+     (memory-size 512)
+     ;; Forward HTTP ports so we can access them from the "outside".
+     (port-forwardings `((,%forwarded-rapi-port . ,rapi-port)
+                         (,%forwarded-noded-port . ,noded-port)))))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (web uri) (web client) (web response)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "ganeti")
+
+          ;; Ganeti uses the Shepherd to start/stop daemons, so make sure
+          ;; it is ready before we begin.  It takes a while because all
+          ;; Ganeti daemons fail to start initially.
+          (test-assert "shepherd is ready"
+            (wait-for-unix-socket "/var/run/shepherd/socket" marionette))
+
+          (test-eq "gnt-cluster init"
+            0
+            (marionette-eval
+             '(begin
+                (setenv
+                 "PATH"
+                 ;; Init needs to run 'ssh-keygen', 'ip', etc.
+                 "/run/current-system/profile/sbin:/run/current-system/profile/bin")
+                (system* #$(file-append ganeti "/sbin/gnt-cluster") "init"
+                         (string-append "--master-netdev=" #$master-netdev)
+                         ;; TODO: Enable more disk backends.
+                         "--enabled-disk-templates=file"
+                         (string-append "--enabled-hypervisors="
+                                        #$hypervisor)
+                         (string-append "--hypervisor-parameters="
+                                        #$hypervisor ":"
+                                        (string-join '#$hvparams "\n"))
+                         ;; Set the default NIC mode to 'routed' to avoid having to
+                         ;; configure a full bridge to placate 'gnt-cluster verify'.
+                         "--nic-parameters=mode=routed,link=eth0"
+                         "ganeti.example.com"))
+             marionette))
+
+          ;; Disable the watcher while doing daemon tests to prevent interference.
+          (test-eq "watcher pause"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/sbin/gnt-cluster")
+                         "watcher" "pause" "1h"))
+             marionette))
+
+          (test-assert "force-start wconfd"
+            ;; Check that the 'force-start' Shepherd action works, used in a
+            ;; master-failover scenario.
+            (marionette-eval
+             '(begin
+                (setenv "PATH" "/run/current-system/profile/bin")
+                (invoke "herd" "stop" "ganeti-wconfd")
+                (invoke "herd" "disable" "ganeti-wconfd")
+                (invoke "herd" "force-start" "ganeti-wconfd"))
+             marionette))
+
+          ;; Verify that the cluster is healthy.
+          (test-eq "gnt-cluster verify 1"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/sbin/gnt-cluster") "verify"))
+             marionette))
+
+          ;; Try stopping and starting daemons with daemon-util like
+          ;; 'gnt-node add', 'gnt-cluster init', etc.
+          (test-eq "daemon-util stop-all"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/lib/ganeti/daemon-util")
+                         "stop-all"))
+             marionette))
+
+          (test-eq "daemon-util start-all"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/lib/ganeti/daemon-util")
+                         "start-all"))
+             marionette))
+
+          ;; Check that the cluster is still healthy after the daemon restarts.
+          (test-eq "gnt-cluster verify 2"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/sbin/gnt-cluster") "verify"))
+             marionette))
+
+          (test-eq "watcher continue"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/sbin/gnt-cluster")
+                         "watcher" "continue"))
+             marionette))
+
+          ;; Try accessing the RAPI.  This causes an expected failure:
+          ;;   https://github.com/ganeti/ganeti/issues/1502
+          ;; Run it anyway for easy testing of potential fixes.
+          (test-equal "http-get RAPI version"
+            '(200 "2")
+            (let-values
+                (((response text)
+                  (http-get #$(simple-format
+                               #f "http://localhost:~A/version"
+                               %forwarded-rapi-port)
+                            #:decode-body? #t)))
+              (list (response-code response) text)))
+
+          (test-equal "gnt-os list"
+            "debootstrap+default\nguix+default\n"
+            (marionette-eval
+             '(begin
+                (use-modules (ice-9 popen))
+                (let* ((port (open-pipe*
+                              OPEN_READ
+                              #$(file-append ganeti "/sbin/gnt-os")
+                              "list" "--no-headers"))
+                       (output (get-string-all port)))
+                  (close-pipe port)
+                  output))
+             marionette))
+
+          (test-eq "gnt-cluster destroy"
+            0
+            (marionette-eval
+             '(begin
+                (system* #$(file-append ganeti "/sbin/gnt-cluster")
+                         "destroy" "--yes-do-it"))
+             marionette))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 1)))))
+
+  (gexp->derivation (string-append "ganeti-" hypervisor "-test") test))
+
+(define %test-ganeti-kvm
+  (system-test
+   (name "ganeti-kvm")
+   (description "Provision a Ganeti cluster using the KVM hypervisor.")
+   (value (run-ganeti-test "kvm"
+                           ;; Set kernel_path to an empty string to prevent
+                           ;; 'gnt-cluster verify' from testing for its presence.
+                           #:hvparams '("kernel_path=")
+                           #:extra-packages (list qemu)))))
+
+(define %test-ganeti-lxc
+  (system-test
+   (name "ganeti-lxc")
+   (description "Provision a Ganeti cluster using LXC as the hypervisor.")
+   (value (run-ganeti-test "lxc"
+                           #:extra-packages (list lxc)))))
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index db355b85ca..9656e5f41f 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -163,7 +163,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1.4G \\
+  mkpart primary ext2 3M 1.6G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L my-root /dev/vdb2
@@ -188,7 +188,7 @@ guix --version
 export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vdb mklabel gpt \\
-  mkpart ext2 1M 1.4G \\
+  mkpart ext2 1M 1.6G \\
   set 1 legacy_boot on
 mkfs.ext4 -L my-root -O '^64bit' /dev/vdb1
 mount /dev/vdb1 /mnt
@@ -247,6 +247,8 @@ packages defined in installation-os."
                           (operating-system
                             (operating-system-with-gc-roots
                              os (list target guile-final)))
+                          ;; Do not compress to speed-up the tests.
+                          (compression? #f)
                           ;; Don't provide substitutes; too big.
                           (substitutable? #f)))))
     (define install
@@ -301,7 +303,8 @@ packages defined in installation-os."
               ;; Run SCRIPT.  It typically invokes 'reboot' as a last step and
               ;; thus normally gets killed with SIGTERM by PID 1.
               (let ((status (marionette-eval '(system #$script) marionette)))
-                (exit (or (equal? (status:term-sig status) SIGTERM)
+                (exit (or (eof-object? status)
+                          (equal? (status:term-sig status) SIGTERM)
                           (equal? (status:exit-val status) 0)))))
 
             (when #$(->bool gui-test)
@@ -416,7 +419,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 guix build isc-dhcp
 parted --script /dev/vda mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1.4G \\
+  mkpart primary ext2 3M 1.6G \\
   set 1 boot on \\
   set 1 bios_grub on
 mkfs.ext4 -L my-root /dev/vda2
@@ -628,8 +631,8 @@ guix --version
 export GUIX_BUILD_OPTIONS=--no-grafts
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1.4G \\
-  mkpart primary ext2 1.4G 2.8G \\
+  mkpart primary ext2 3M 1.6G \\
+  mkpart primary ext2 1.6G 3.2G \\
   set 1 boot on \\
   set 1 bios_grub on
 yes | mdadm --create /dev/md0 --verbose --level=mirror --raid-devices=2 \\
@@ -655,7 +658,7 @@ by 'mdadm'.")
                                                %raid-root-os-source
                                                #:script
                                                %raid-root-installation-script
-                                               #:target-size (* 2800 MiB)))
+                                               #:target-size (* 3200 MiB)))
                          (command (qemu-command/writable-image image)))
       (run-basic-test %raid-root-os
                       `(,@command) "raid-root-os")))))
@@ -716,7 +719,7 @@ export GUIX_BUILD_OPTIONS=--no-grafts
 ls -l /run/current-system/gc-roots
 parted --script /dev/vdb mklabel gpt \\
   mkpart primary ext2 1M 3M \\
-  mkpart primary ext2 3M 1.4G \\
+  mkpart primary ext2 3M 1.6G \\
   set 1 boot on \\
   set 1 bios_grub on
 echo -n " %luks-passphrase " | \\
diff --git a/gnu/tests/monitoring.scm b/gnu/tests/monitoring.scm
index 732fbc54d7..d20b8ac59e 100644
--- a/gnu/tests/monitoring.scm
+++ b/gnu/tests/monitoring.scm
@@ -280,7 +280,7 @@ zabbix||{}
              '(file-exists? "/var/run/nginx/pid")
              marionette))
 
-          ;; Make sure we can access pages that correspond to our repository.
+          ;; Make sure we can access pages that correspond to our Zabbix instance.
           (letrec-syntax ((test-url
                            (syntax-rules ()
                              ((_ path code)
diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm
index ca18b2f452..022663aa67 100644
--- a/gnu/tests/networking.scm
+++ b/gnu/tests/networking.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2020 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
@@ -174,12 +174,15 @@ port 7, and a dict service on port 2628."
                          (respawn? #f)))))
 
 (define %openvswitch-os
-  (simple-operating-system
-   (static-networking-service "ovs0" "10.1.1.1"
-                              #:netmask "255.255.255.252"
-                              #:requirement '(openvswitch-configuration))
-   (service openvswitch-service-type)
-   openvswitch-configuration-service))
+  (operating-system
+    (inherit (simple-operating-system
+              (static-networking-service "ovs0" "10.1.1.1"
+                                         #:netmask "255.255.255.252"
+                                         #:requirement '(openvswitch-configuration))
+              (service openvswitch-service-type)
+              openvswitch-configuration-service))
+    ;; Ensure the interface name does not change depending on the driver.
+    (kernel-arguments (cons "net.ifnames=0" %default-kernel-arguments))))
 
 (define (run-openvswitch-test)
   (define os
diff --git a/gnu/tests/package-management.scm b/gnu/tests/package-management.scm
new file mode 100644
index 0000000000..087eaf923e
--- /dev/null
+++ b/gnu/tests/package-management.scm
@@ -0,0 +1,130 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests package-management)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages package-management)
+  #:use-module (gnu services)
+  #:use-module (gnu services networking)
+  #:use-module (gnu services nix)
+  #:use-module (gnu system)
+  #:use-module (gnu system vm)
+  #:use-module (gnu tests)
+  #:use-module (guix gexp)
+  #:use-module (guix packages)
+  #:export (%test-nix))
+
+;;; Commentary:
+;;;
+;;; This module provides a test definition for the nix-daemon
+;;;
+;;; Code:
+
+(define* (run-nix-test name test-os)
+  "Run tests in TEST-OS, which has nix-daemon running."
+  (define os
+    (marionette-operating-system
+     test-os
+     #:imported-modules '((gnu services herd))))
+
+  (define vm
+    (virtual-machine
+     (operating-system os)
+     (port-forwardings '((8080 . 80)))
+     (memory-size 1024)))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11)
+                       (srfi srfi-64)
+                       (gnu build marionette)
+                       (web client)
+                       (web response))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin #$name)
+
+          ;; XXX: Shepherd reads the config file *before* binding its control
+          ;; socket, so /var/run/shepherd/socket might not exist yet when the
+          ;; 'marionette' service is started.
+          (test-assert "shepherd socket ready"
+            (marionette-eval
+             `(begin
+                (use-modules (gnu services herd))
+                (let loop ((i 10))
+                  (cond ((file-exists? (%shepherd-socket-file))
+                         #t)
+                        ((> i 0)
+                         (sleep 1)
+                         (loop (- i 1)))
+                        (else
+                         'failure))))
+             marionette))
+
+          (test-assert "Nix daemon running"
+            (marionette-eval
+             '(begin
+                ;; Wait for nix-daemon to be up and running.
+                (start-service 'nix-daemon)
+                (with-output-to-file "guix-test.nix"
+                  (lambda ()
+                    (display "\
+with import <nix/config.nix>;
+
+derivation {
+  system = builtins.currentSystem;
+  name = \"guix-test\";
+  builder = shell;
+  args = [\"-c\" \"mkdir $out\\necho FOO > $out/foo\"];
+  PATH = coreutils;
+}
+")))
+                (zero? (system* (string-append #$nix "/bin/nix-build")
+                                "--substituters" "" "--debug" "--no-out-link"
+                                "guix-test.nix")))
+             marionette))
+
+	  (test-end)
+
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation (string-append name "-test") test))
+
+(define %nix-os
+  ;; Return operating system under test.
+  (let ((base-os
+         (simple-operating-system
+          (service nix-service-type)
+	  (service dhcp-client-service-type))))
+    (operating-system
+      (inherit base-os)
+      (packages (cons nix (operating-system-packages base-os))))))
+
+(define %test-nix
+  (system-test
+   (name "nix")
+   (description "Connect to a running nix-daemon")
+   (value (run-nix-test name %nix-os))))
+
+;;; package-management.scm ends here
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 1c984dd6f4..7513eab2e4 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -521,42 +521,43 @@ HTTP-PORT."
 ;;; Patchwork
 ;;;
 
-(define patchwork-initial-database-setup-service
-  (match-lambda
-    (($ <patchwork-database-configuration>
-        engine name user password host port)
-
-     (define start-gexp
-       #~(lambda ()
-           (let ((pid (primitive-fork))
-                 (postgres (getpwnam "postgres")))
-             (if (eq? pid 0)
-                 (dynamic-wind
-                   (const #t)
-                   (lambda ()
-                     (setgid (passwd:gid postgres))
-                     (setuid (passwd:uid postgres))
-                     (primitive-exit
-                      (if (and
-                           (zero?
-                            (system* #$(file-append postgresql "/bin/createuser")
-                                     #$user))
-                           (zero?
-                            (system* #$(file-append postgresql "/bin/createdb")
-                                     "-O" #$user #$name)))
-                          0
-                          1)))
-                   (lambda ()
-                     (primitive-exit 1)))
-                 (zero? (cdr (waitpid pid)))))))
-
-     (shepherd-service
-      (requirement '(postgres))
-      (provision '(patchwork-postgresql-user-and-database))
-      (start start-gexp)
-      (stop #~(const #f))
-      (respawn? #f)
-      (documentation "Setup patchwork database.")))))
+(define (patchwork-initial-database-setup-service configuration)
+  (define start-gexp
+    #~(lambda ()
+        (let ((pid (primitive-fork))
+              (postgres (getpwnam "postgres")))
+          (if (eq? pid 0)
+              (dynamic-wind
+                (const #t)
+                (lambda ()
+                  (setgid (passwd:gid postgres))
+                  (setuid (passwd:uid postgres))
+                  (primitive-exit
+                   (if (and
+                        (zero?
+                         (system* #$(file-append postgresql "/bin/createuser")
+                                  #$(patchwork-database-configuration-user
+                                      configuration)))
+                        (zero?
+                         (system* #$(file-append postgresql "/bin/createdb")
+                                  "-O"
+                                  #$(patchwork-database-configuration-user
+                                      configuration)
+                                  #$(patchwork-database-configuration-name
+                                      configuration))))
+                       0
+                       1)))
+                (lambda ()
+                  (primitive-exit 1)))
+              (zero? (cdr (waitpid pid)))))))
+
+  (shepherd-service
+   (requirement '(postgres))
+   (provision '(patchwork-postgresql-user-and-database))
+   (start start-gexp)
+   (stop #~(const #f))
+   (respawn? #f)
+   (documentation "Setup patchwork database.")))
 
 (define (patchwork-os patchwork)
   (simple-operating-system