summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2019-03-23 23:16:55 +0100
committerMarius Bakke <mbakke@fastmail.com>2019-03-23 23:16:55 +0100
commit8c14f7f8a7ab0722bf4c9f92fd28ae85514d564f (patch)
treeadc5d29e9c2dcda5befa0ca81f1af8df23294947
parent2f33a7321e5e37d37f57c229c8079cb4ffd10834 (diff)
parent3374e9207f5244c20402a3c5513fe562140fef47 (diff)
downloadguix-8c14f7f8a7ab0722bf4c9f92fd28ae85514d564f.tar.gz
Merge branch 'staging' into core-updates
-rw-r--r--.mailmap28
-rw-r--r--Makefile.am6
-rw-r--r--doc/guix.de.texi2
-rw-r--r--doc/guix.fr.texi2
-rw-r--r--doc/guix.texi664
-rw-r--r--etc/completion/fish/guix.fish2
-rw-r--r--gnu/bootloader/extlinux.scm8
-rw-r--r--gnu/bootloader/grub.scm16
-rw-r--r--gnu/build/bootloader.scm63
-rw-r--r--gnu/local.mk19
-rw-r--r--gnu/packages/accessibility.scm2
-rw-r--r--gnu/packages/admin.scm10
-rw-r--r--gnu/packages/algebra.scm38
-rw-r--r--gnu/packages/animation.scm6
-rw-r--r--gnu/packages/arcan.scm105
-rw-r--r--gnu/packages/audio.scm19
-rw-r--r--gnu/packages/autotools.scm2
-rw-r--r--gnu/packages/aux-files/run-in-namespace.c47
-rw-r--r--gnu/packages/backup.scm4
-rw-r--r--gnu/packages/benchmark.scm4
-rw-r--r--gnu/packages/bioconductor.scm42
-rw-r--r--gnu/packages/bioinformatics.scm459
-rw-r--r--gnu/packages/build-tools.scm4
-rw-r--r--gnu/packages/cdrom.scm2
-rw-r--r--gnu/packages/certs.scm4
-rw-r--r--gnu/packages/check.scm44
-rw-r--r--gnu/packages/cinnamon.scm2
-rw-r--r--gnu/packages/compression.scm20
-rw-r--r--gnu/packages/coq.scm9
-rw-r--r--gnu/packages/cran.scm316
-rw-r--r--gnu/packages/crypto.scm6
-rw-r--r--gnu/packages/cups.scm48
-rw-r--r--gnu/packages/curl.scm26
-rw-r--r--gnu/packages/databases.scm32
-rw-r--r--gnu/packages/debug.scm29
-rw-r--r--gnu/packages/django.scm11
-rw-r--r--gnu/packages/dns.scm18
-rw-r--r--gnu/packages/docker.scm18
-rw-r--r--gnu/packages/easyrpg.scm9
-rw-r--r--gnu/packages/education.scm68
-rw-r--r--gnu/packages/electronics.scm6
-rw-r--r--gnu/packages/elixir.scm9
-rw-r--r--gnu/packages/emacs-xyz.scm816
-rw-r--r--gnu/packages/emacs.scm2
-rw-r--r--gnu/packages/engineering.scm36
-rw-r--r--gnu/packages/enlightenment.scm2
-rw-r--r--gnu/packages/erlang.scm2
-rw-r--r--gnu/packages/fonts.scm42
-rw-r--r--gnu/packages/fontutils.scm59
-rw-r--r--gnu/packages/forth.scm2
-rw-r--r--gnu/packages/freedesktop.scm10
-rw-r--r--gnu/packages/fvwm.scm2
-rw-r--r--gnu/packages/game-development.scm20
-rw-r--r--gnu/packages/games.scm199
-rw-r--r--gnu/packages/gd.scm12
-rw-r--r--gnu/packages/genimage.scm4
-rw-r--r--gnu/packages/geo.scm29
-rw-r--r--gnu/packages/gl.scm54
-rw-r--r--gnu/packages/glib.scm6
-rw-r--r--gnu/packages/gnome.scm164
-rw-r--r--gnu/packages/gnunet.scm8
-rw-r--r--gnu/packages/gnupg.scm6
-rw-r--r--gnu/packages/gnuzilla.scm24
-rw-r--r--gnu/packages/gobby.scm8
-rw-r--r--gnu/packages/golang.scm884
-rw-r--r--gnu/packages/gpodder.scm79
-rw-r--r--gnu/packages/graphics.scm93
-rw-r--r--gnu/packages/gstreamer.scm1
-rw-r--r--gnu/packages/gtk.scm49
-rw-r--r--gnu/packages/guile-wm.scm71
-rw-r--r--gnu/packages/guile-xyz.scm2
-rw-r--r--gnu/packages/haskell-check.scm2
-rw-r--r--gnu/packages/haskell-crypto.scm21
-rw-r--r--gnu/packages/haskell.scm7
-rw-r--r--gnu/packages/hyperledger.scm8
-rw-r--r--gnu/packages/image-processing.scm66
-rw-r--r--gnu/packages/image-viewers.scm15
-rw-r--r--gnu/packages/image.scm2
-rw-r--r--gnu/packages/imagemagick.scm32
-rw-r--r--gnu/packages/ipfs.scm21
-rw-r--r--gnu/packages/irc.scm2
-rw-r--r--gnu/packages/language.scm6
-rw-r--r--gnu/packages/libcanberra.scm2
-rw-r--r--gnu/packages/libevent.scm4
-rw-r--r--gnu/packages/libreoffice.scm34
-rw-r--r--gnu/packages/libusb.scm20
-rw-r--r--gnu/packages/license.scm4
-rw-r--r--gnu/packages/linux.scm103
-rw-r--r--gnu/packages/lisp.scm2
-rw-r--r--gnu/packages/llvm.scm2
-rw-r--r--gnu/packages/lolcode.scm2
-rw-r--r--gnu/packages/lua.scm8
-rw-r--r--gnu/packages/lxde.scm21
-rw-r--r--gnu/packages/lxqt.scm313
-rw-r--r--gnu/packages/machine-learning.scm224
-rw-r--r--gnu/packages/mail.scm151
-rw-r--r--gnu/packages/markup.scm2
-rw-r--r--gnu/packages/mate.scm2
-rw-r--r--gnu/packages/maths.scm27
-rw-r--r--gnu/packages/mc.scm2
-rw-r--r--gnu/packages/messaging.scm32
-rw-r--r--gnu/packages/mpd.scm4
-rw-r--r--gnu/packages/mpi.scm46
-rw-r--r--gnu/packages/multiprecision.scm19
-rw-r--r--gnu/packages/music.scm67
-rw-r--r--gnu/packages/ncurses.scm2
-rw-r--r--gnu/packages/networking.scm108
-rw-r--r--gnu/packages/nickle.scm2
-rw-r--r--gnu/packages/ntp.scm7
-rw-r--r--gnu/packages/ocaml.scm16
-rw-r--r--gnu/packages/openbox.scm2
-rw-r--r--gnu/packages/openldap.scm40
-rw-r--r--gnu/packages/parallel.scm5
-rw-r--r--gnu/packages/password-utils.scm22
-rw-r--r--gnu/packages/patches/at-spi2-core-meson-compat.patch18
-rw-r--r--gnu/packages/patches/blender-2.79-newer-ffmpeg.patch80
-rw-r--r--gnu/packages/patches/blender-2.79-python-3.7-fix.patch43
-rw-r--r--gnu/packages/patches/cracklib-CVE-2016-6318.patch95
-rw-r--r--gnu/packages/patches/cracklib-fix-buffer-overflow.patch39
-rw-r--r--gnu/packages/patches/dropbear-CVE-2018-15599.patch240
-rw-r--r--gnu/packages/patches/elixir-path-length.patch15
-rw-r--r--gnu/packages/patches/knot-include-system-lmdb-header.patch34
-rw-r--r--gnu/packages/patches/libextractor-CVE-2018-20430.patch60
-rw-r--r--gnu/packages/patches/libextractor-CVE-2018-20431.patch53
-rw-r--r--gnu/packages/patches/libgit2-avoid-python.patch322
-rw-r--r--gnu/packages/patches/libgit2-oom-test.patch62
-rw-r--r--gnu/packages/patches/python-flint-includes.patch131
-rw-r--r--gnu/packages/patches/totem-meson-compat.patch14
-rw-r--r--gnu/packages/pdf.scm2
-rw-r--r--gnu/packages/perl-check.scm69
-rw-r--r--gnu/packages/perl-web.scm4
-rw-r--r--gnu/packages/perl.scm488
-rw-r--r--gnu/packages/perl6.scm787
-rw-r--r--gnu/packages/photo.scm23
-rw-r--r--gnu/packages/pretty-print.scm12
-rw-r--r--gnu/packages/protobuf.scm25
-rw-r--r--gnu/packages/python-check.scm48
-rw-r--r--gnu/packages/python-compression.scm2
-rw-r--r--gnu/packages/python-crypto.scm2
-rw-r--r--gnu/packages/python-web.scm65
-rw-r--r--gnu/packages/python-xyz.scm208
-rw-r--r--gnu/packages/python.scm2
-rw-r--r--gnu/packages/qt.scm6
-rw-r--r--gnu/packages/rails.scm206
-rw-r--r--gnu/packages/ruby.scm197
-rw-r--r--gnu/packages/rust.scm10
-rw-r--r--gnu/packages/samba.scm19
-rw-r--r--gnu/packages/scanner.scm12
-rw-r--r--gnu/packages/scheme.scm2
-rw-r--r--gnu/packages/sdl.scm7
-rw-r--r--gnu/packages/serialization.scm2
-rw-r--r--gnu/packages/shells.scm2
-rw-r--r--gnu/packages/shellutils.scm6
-rw-r--r--gnu/packages/ssh.scm31
-rw-r--r--gnu/packages/statistics.scm84
-rw-r--r--gnu/packages/storage.scm15
-rw-r--r--gnu/packages/suckless.scm17
-rw-r--r--gnu/packages/syncthing.scm655
-rw-r--r--gnu/packages/syndication.scm51
-rw-r--r--gnu/packages/tbb.scm17
-rw-r--r--gnu/packages/telephony.scm2
-rw-r--r--gnu/packages/terminals.scm1
-rw-r--r--gnu/packages/terraform.scm6
-rw-r--r--gnu/packages/text-editors.scm66
-rw-r--r--gnu/packages/textutils.scm24
-rw-r--r--gnu/packages/time.scm2
-rw-r--r--gnu/packages/tls.scm7
-rw-r--r--gnu/packages/tor.scm2
-rw-r--r--gnu/packages/uml.scm4
-rw-r--r--gnu/packages/version-control.scm17
-rw-r--r--gnu/packages/video.scm139
-rw-r--r--gnu/packages/vim.scm56
-rw-r--r--gnu/packages/virtualization.scm1
-rw-r--r--gnu/packages/vpn.scm35
-rw-r--r--gnu/packages/vulkan.scm21
-rw-r--r--gnu/packages/web.scm160
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/wm.scm36
-rw-r--r--gnu/packages/xdisorg.scm36
-rw-r--r--gnu/packages/xfce.scm154
-rw-r--r--gnu/packages/xml.scm26
-rw-r--r--gnu/packages/xorg.scm84
-rw-r--r--gnu/services/audio.scm9
-rw-r--r--gnu/services/authentication.scm511
-rw-r--r--gnu/services/certbot.scm2
-rw-r--r--gnu/services/desktop.scm48
-rw-r--r--gnu/services/version-control.scm2
-rw-r--r--gnu/services/web.scm2
-rw-r--r--gnu/system.scm4
-rw-r--r--gnu/system/vm.scm10
-rw-r--r--gnu/tests/ldap.scm160
-rw-r--r--guix/build-system/glib-or-gtk.scm9
-rw-r--r--guix/build-system/go.scm2
-rw-r--r--guix/build-system/meson.scm30
-rw-r--r--guix/build-system/rakudo.scm155
-rw-r--r--guix/build/go-build-system.scm139
-rw-r--r--guix/build/rakudo-build-system.scm145
-rw-r--r--guix/describe.scm25
-rw-r--r--guix/download.scm6
-rw-r--r--guix/import/hackage.scm2
-rw-r--r--guix/import/launchpad.scm124
-rw-r--r--guix/import/opam.scm2
-rw-r--r--guix/licenses.scm2
-rw-r--r--guix/packages.scm38
-rw-r--r--guix/scripts.scm50
-rw-r--r--guix/scripts/build.scm146
-rw-r--r--guix/scripts/describe.scm6
-rw-r--r--guix/scripts/graph.scm31
-rw-r--r--guix/scripts/pack.scm76
-rw-r--r--guix/scripts/package.scm9
-rw-r--r--guix/scripts/system.scm13
-rw-r--r--guix/tests.scm15
-rw-r--r--po/guix/POTFILES.in2
-rw-r--r--tests/build-utils.scm52
-rw-r--r--tests/graph.scm28
-rw-r--r--tests/guix-pack-relocatable.sh21
-rw-r--r--tests/packages.scm51
-rw-r--r--tests/scripts-build.scm109
-rw-r--r--tests/scripts.scm15
219 files changed, 9838 insertions, 3772 deletions
diff --git a/.mailmap b/.mailmap
index 981decdeef..7de5313923 100644
--- a/.mailmap
+++ b/.mailmap
@@ -43,20 +43,20 @@ Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
 Mathieu Othacehe <m.othacehe@gmail.com>
 Mathieu Othacehe <mathieu.othacehe@parrot.com>
 Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
-Nils Gillmann <ng0@n0.is> ng0 <ng0@n0.is>
-Nils Gillmann <ng0@n0.is> Nils Gillmann <gillmann@infotropique.org>
-Nils Gillmann <ng0@n0.is> ng0 <ng0@crash.cx>
-Nils Gillmann <ng0@n0.is> ng0 <ng0@crash.cx>
-Nils Gillmann <ng0@n0.is> <ng0@infotropique.org>
-Nils Gillmann <ng0@n0.is> <ng0@no-reply.infotropique.org>
-Nils Gillmann <ng0@n0.is> <ng0@no-reply.pragmatique.xyz>
-Nils Gillmann <ng0@n0.is> <ng0@pragmatique.xyz>
-Nils Gillmann <ng0@n0.is> <contact.ng0@cryptolab.net>
-Nils Gillmann <ng0@n0.is> <ng0@we.make.ritual.n0.is>
-Nils Gillmann <ng0@n0.is> <ngillmann@runbox.com>
-Nils Gillmann <ng0@n0.is> <niasterisk@grrlz.net>
-Nils Gillmann <ng0@n0.is> <ng@niasterisk.space>
-Nils Gillmann <ng0@n0.is> <ng0@libertad.pw>
+ng0 <ng0@n0.is> Nils Gillmann <ng0@n0.is>
+ng0 <ng0@n0.is> Nils Gillmann <gillmann@infotropique.org>
+ng0 <ng0@n0.is> ng0 <ng0@crash.cx>
+ng0 <ng0@n0.is> ng0 <ng0@crash.cx>
+ng0 <ng0@n0.is> <ng0@infotropique.org>
+ng0 <ng0@n0.is> <ng0@no-reply.infotropique.org>
+ng0 <ng0@n0.is> <ng0@no-reply.pragmatique.xyz>
+ng0 <ng0@n0.is> <ng0@pragmatique.xyz>
+ng0 <ng0@n0.is> <contact.ng0@cryptolab.net>
+ng0 <ng0@n0.is> <ng0@we.make.ritual.n0.is>
+ng0 <ng0@n0.is> <ngillmann@runbox.com>
+ng0 <ng0@n0.is> <niasterisk@grrlz.net>
+ng0 <ng0@n0.is> <ng@niasterisk.space>
+ng0 <ng0@n0.is> <ng0@libertad.pw>
 Pierre Neidhardt <mail@ambrevar.xyz>
 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl>
diff --git a/Makefile.am b/Makefile.am
index e7109ec69c..4902f3afe7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,10 +9,11 @@
 # Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 # Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-# Copyright © 2018 Nils Gillmann <ng0@n0.is>
+# Copyright © 2018 ng0 <ng0@n0.is>
 # Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
 # Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 #
 # This file is part of GNU Guix.
 #
@@ -124,6 +125,7 @@ MODULES =					\
   guix/build-system/ocaml.scm			\
   guix/build-system/waf.scm			\
   guix/build-system/r.scm			\
+  guix/build-system/rakudo.scm			\
   guix/build-system/ruby.scm			\
   guix/build-system/scons.scm			\
   guix/build-system/texlive.scm			\
@@ -164,6 +166,7 @@ MODULES =					\
   guix/build/python-build-system.scm		\
   guix/build/ocaml-build-system.scm		\
   guix/build/r-build-system.scm			\
+  guix/build/rakudo-build-system.scm		\
   guix/build/ruby-build-system.scm		\
   guix/build/scons-build-system.scm		\
   guix/build/texlive-build-system.scm		\
@@ -202,6 +205,7 @@ MODULES =					\
   guix/import/gnu.scm				\
   guix/import/hackage.scm			\
   guix/import/json.scm				\
+  guix/import/launchpad.scm   			\
   guix/import/opam.scm				\
   guix/import/print.scm				\
   guix/import/pypi.scm				\
diff --git a/doc/guix.de.texi b/doc/guix.de.texi
index 3f02c850e7..83dae0d3ec 100644
--- a/doc/guix.de.texi
+++ b/doc/guix.de.texi
@@ -34,7 +34,7 @@ Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo
 Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{}
 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018
 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright
-@copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017,
+@copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017,
 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@*
 Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016,
 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018
diff --git a/doc/guix.fr.texi b/doc/guix.fr.texi
index 4ef3c1a0ff..541fd6f0d0 100644
--- a/doc/guix.fr.texi
+++ b/doc/guix.fr.texi
@@ -34,7 +34,7 @@ Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo
 Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{}
 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018
 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright
-@copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017,
+@copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017,
 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@*
 Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016,
 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018
diff --git a/doc/guix.texi b/doc/guix.texi
index 65b56f0618..3afdccac75 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -28,9 +28,9 @@ Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@*
 Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@*
 Copyright @copyright{} 2016 Ben Woodcroft@*
 Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
-Copyright @copyright{} 2016, 2017, 2018 Efraim Flashner@*
+Copyright @copyright{} 2016, 2017, 2018, 2019 Efraim Flashner@*
 Copyright @copyright{} 2016 John Darrington@*
-Copyright @copyright{} 2016, 2017 Nils Gillmann@*
+Copyright @copyright{} 2016, 2017 ng0@*
 Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
 Copyright @copyright{} 2016 Julien Lepiller@*
 Copyright @copyright{} 2016 Alex ter Weele@*
@@ -48,7 +48,7 @@ Copyright @copyright{} 2017 Maxim Cournoyer@*
 Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@*
 Copyright @copyright{} 2017 George Clemmer@*
 Copyright @copyright{} 2017 Andy Wingo@*
-Copyright @copyright{} 2017, 2018 Arun Isaac@*
+Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@*
 Copyright @copyright{} 2017 nee@*
 Copyright @copyright{} 2018 Rutger Helling@*
 Copyright @copyright{} 2018 Oleg Pykhalov@*
@@ -4760,14 +4760,24 @@ symlinks, as well as empty mount points for virtual file systems like
 procfs.
 @end table
 
+@cindex relocatable binaries
 @item --relocatable
 @itemx -R
 Produce @dfn{relocatable binaries}---i.e., binaries that can be placed
-anywhere in the file system hierarchy and run from there.  For example,
-if you create a pack containing Bash with:
+anywhere in the file system hierarchy and run from there.
+
+When this option is passed once, the resulting binaries require support for
+@dfn{user namespaces} in the kernel Linux; when passed
+@emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds
+PRoot support, can be thought of as the abbreviation of ``Really
+Relocatable''.  Neat, isn't it?}, relocatable binaries fall to back to PRoot
+if user namespaces are unavailable, and essentially work anywhere---see below
+for the implications.
+
+For example, if you create a pack containing Bash with:
 
 @example
-guix pack -R -S /mybin=bin bash
+guix pack -RR -S /mybin=bin bash
 @end example
 
 @noindent
@@ -4786,12 +4796,23 @@ In that shell, if you type @code{ls /gnu/store}, you'll notice that
 altogether!  That is probably the simplest way to deploy Guix-built
 software on a non-Guix machine.
 
-There's a gotcha though: this technique relies on the @dfn{user
-namespace} feature of the kernel Linux, which allows unprivileged users
-to mount or change root.  Old versions of Linux did not support it, and
-some GNU/Linux distributions turn it off; on these systems, programs
-from the pack @emph{will fail to run}, unless they are unpacked in the
-root file system.
+@quotation Note
+By default, relocatable binaries rely on the @dfn{user namespace} feature of
+the kernel Linux, which allows unprivileged users to mount or change root.
+Old versions of Linux did not support it, and some GNU/Linux distributions
+turn it off.
+
+To produce relocatable binaries that work even in the absence of user
+namespaces, pass @option{--relocatable} or @option{-R} @emph{twice}.  In that
+case, binaries will try user namespace support and fall back to PRoot if user
+namespaces are not supported.
+
+The @uref{https://proot-me.github.io/, PRoot} program provides the necessary
+support for file system virtualization.  It achieves that by using the
+@code{ptrace} system call on the running program.  This approach has the
+advantage to work without requiring special kernel support, but it incurs
+run-time overhead every time a system call is made.
+@end quotation
 
 @item --expression=@var{expr}
 @itemx -e @var{expr}
@@ -5220,6 +5241,29 @@ with @var{libressl}.  Then we use it to define a @dfn{variant} of the
 This is exactly what the @option{--with-input} command-line option does
 (@pxref{Package Transformation Options, @option{--with-input}}).
 
+The following variant of @code{package-input-rewriting} can match packages to
+be replaced by name rather than by identity.
+
+@deffn {Scheme Procedure} package-input-rewriting/spec @var{replacements}
+Return a procedure that, given a package, applies the given @var{replacements} to
+all the package graph (excluding implicit inputs).  @var{replacements} is a list of
+spec/procedures pair; each spec is a package specification such as @code{"gcc"} or
+@code{"guile@@2"}, and each procedure takes a matching package and returns a
+replacement for that package.
+@end deffn
+
+The example above could be rewritten this way:
+
+@example
+(define libressl-instead-of-openssl
+  ;; Replace all the packages called "openssl" with LibreSSL.
+  (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))
+@end example
+
+The key difference here is that, this time, packages are matched by spec and
+not by identity.  In other words, any package in the graph that is called
+@code{openssl} will be replaced.
+
 A more generic procedure to rewrite a package dependency graph is
 @code{package-mapping}: it supports arbitrary changes to nodes in the
 graph.
@@ -5791,8 +5835,8 @@ some cases, you will need to unpack the package's source code to a
 different directory structure than the one indicated by the import path,
 and @code{#:unpack-path} should be used in such cases.
 
-Packages that provide Go libraries should be installed along with their
-source code.  The key @code{#:install-source?}, which defaults to
+Packages that provide Go libraries should install their source code into
+the built output.  The key @code{#:install-source?}, which defaults to
 @code{#t}, controls whether or not the source code is installed.  It can
 be set to @code{#f} for packages that only provide executable files.
 @end defvr
@@ -5958,6 +6002,24 @@ are run after installation using the R function
 @code{tools::testInstalledPackage}.
 @end defvr
 
+@defvr {Scheme Variable} rakudo-build-system
+This variable is exported by @code{(guix build-system rakudo)} It
+implements the build procedure used by @uref{https://rakudo.org/,
+Rakudo} for @uref{https://perl6.org/, Perl6} packages. It installs the
+package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and
+installs the binaries, library files and the resources, as well as wrap
+the files under the @code{bin/} directory.  Tests can be skipped by
+passing @code{#f} to the @code{tests?} parameter.
+
+Which rakudo package is used can be specified with @code{rakudo}.
+Which perl6-tap-harness package used for the tests can be specified with
+@code{#:prove6} or removed by passing @code{#f} to the
+@code{with-prove6?} parameter.
+Which perl6-zef package used for tests and installing can be specified
+with @code{#:zef} or removed by passing @code{#f} to the
+@code{with-zef?} parameter.
+@end defvr
+
 @defvr {Scheme Variable} texlive-build-system
 This variable is exported by @code{(guix build-system texlive)}.  It is
 used to build TeX packages in batch mode with a specified engine.  The
@@ -7759,24 +7821,24 @@ must be compatible.  If @var{replacement} is somehow incompatible with
 @var{package}, then the resulting package may be unusable.  Use with
 care!
 
-@item --with-branch=@var{package}=@var{branch}
+@item --with-git-url=@var{package}=@var{url}
 @cindex Git, using the latest commit
 @cindex latest commit, building
-Build @var{package} from the latest commit of @var{branch}.  The @code{source}
-field of @var{package} must be an origin with the @code{git-fetch} method
-(@pxref{origin Reference}) or a @code{git-checkout} object; the repository URL
-is taken from that @code{source}.  Git sub-modules of the repository are
-fetched, recursively.
+Build @var{package} from the latest commit of the @code{master} branch of the
+Git repository at @var{url}.  Git sub-modules of the repository are fetched,
+recursively.
 
-For instance, the following command builds @code{guile-sqlite3} from the
-latest commit of its @code{master} branch, and then builds @code{guix} (which
-depends on it) and @code{cuirass} (which depends on @code{guix}) against this
-specific @code{guile-sqlite3} build:
+For example, the following command builds the NumPy Python library against the
+latest commit of the master branch of Python itself:
 
 @example
-guix build --with-branch=guile-sqlite3=master cuirass
+guix build python-numpy \
+  --with-git-url=python=https://github.com/python/cpython
 @end example
 
+This option can also be combined with @code{--with-branch} or
+@code{--with-commit} (see below).
+
 @cindex continuous integration
 Obviously, since it uses the latest commit of the given branch, the result of
 such a command varies over time.  Nevertheless it is a convenient way to
@@ -7788,6 +7850,22 @@ Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed up
 consecutive accesses to the same repository.  You may want to clean it up once
 in a while to save disk space.
 
+@item --with-branch=@var{package}=@var{branch}
+Build @var{package} from the latest commit of @var{branch}.  If the
+@code{source} field of @var{package} is an origin with the @code{git-fetch}
+method (@pxref{origin Reference}) or a @code{git-checkout} object, the
+repository URL is taken from that @code{source}.  Otherwise you have to use
+@code{--with-git-url} to specify the URL of the Git repository.
+
+For instance, the following command builds @code{guile-sqlite3} from the
+latest commit of its @code{master} branch, and then builds @code{guix} (which
+depends on it) and @code{cuirass} (which depends on @code{guix}) against this
+specific @code{guile-sqlite3} build:
+
+@example
+guix build --with-branch=guile-sqlite3=master cuirass
+@end example
+
 @item --with-commit=@var{package}=@var{commit}
 This is similar to @code{--with-branch}, except that it builds from
 @var{commit} rather than the tip of a branch.  @var{commit} must be a valid
@@ -8781,6 +8859,8 @@ the updater for @uref{https://hackage.haskell.org, Hackage} packages.
 the updater for @uref{https://www.stackage.org, Stackage} packages.
 @item crate
 the updater for @uref{https://crates.io, Crates} packages.
+@item launchpad
+the updater for @uref{https://launchpad.net, Launchpad} packages.
 @end table
 
 For instance, the following command only checks for updates of Emacs
@@ -9228,7 +9308,9 @@ This shows the @emph{reverse} DAG of packages.  For example:
 guix graph --type=reverse-package ocaml
 @end example
 
-...@: yields the graph of packages that depend on OCaml.
+...@: yields the graph of packages that @emph{explicitly} depend on OCaml (if
+you are also interested in cases where OCaml is an implicit dependency, see
+@code{reverse-bag} below.)
 
 Note that for core packages this can yield huge graphs.  If all you want
 is to know the number of packages that depend on a given package, use
@@ -9262,6 +9344,20 @@ dependencies.
 @item bag-with-origins
 Similar to @code{bag}, but also showing origins and their dependencies.
 
+@item reverse-bag
+This shows the @emph{reverse} DAG of packages.  Unlike @code{reverse-package},
+it also takes implicit dependencies into account.  For example:
+
+@example
+guix graph -t reverse-bag dune
+@end example
+
+@noindent
+...@: yields the graph of all packages that depend on Dune, directly or
+indirectly.  Since Dune is an @emph{implicit} dependency of many packages
+@i{via} @code{dune-build-system}, this shows a large number of packages,
+whereas @code{reverse-package} would show very few if any.
+
 @item derivation
 This is the most detailed representation: It shows the DAG of
 derivations (@pxref{Derivations}) and plain store items.  Compared to
@@ -11077,6 +11173,7 @@ declaration.
 * Telephony Services::          Telephony services.
 * Monitoring Services::         Monitoring services.
 * Kerberos Services::           Kerberos services.
+* LDAP Services::               LDAP services.
 * Web Services::                Web servers.
 * Certificate Services::        TLS certificates via Let's Encrypt.
 * DNS Services::                DNS daemons.
@@ -17623,6 +17720,484 @@ Local accounts with lower values will silently fail to authenticate.
 @end deftp
 
 
+@node LDAP Services
+@subsection LDAP Services
+@cindex LDAP
+@cindex nslcd, LDAP service
+
+The @code{(gnu services authentication)} module provides the
+@code{nslcd-service-type}, which can be used to authenticate against an LDAP
+server.  In addition to configuring the service itself, you may want to add
+@code{ldap} as a name service to the Name Service Switch. @xref{Name Service
+Switch} for detailed information.
+
+Here is a simple operating system declaration with a default configuration of
+the @code{nslcd-service-type} and a Name Service Switch configuration that
+consults the @code{ldap} name service last:
+
+@example
+(use-service-modules authentication)
+(use-modules (gnu system nss))
+...
+(operating-system
+  ...
+  (services
+    (cons*
+      (service nslcd-service-type)
+      (service dhcp-client-service-type)
+      %base-services))
+  (name-service-switch
+   (let ((services (list (name-service (name "db"))
+                         (name-service (name "files"))
+                         (name-service (name "ldap")))))
+     (name-service-switch
+      (inherit %mdns-host-lookup-nss)
+      (password services)
+      (shadow   services)
+      (group    services)
+      (netgroup services)
+      (gshadow  services)))))
+@end example
+
+@c %start of generated documentation for nslcd-configuration
+
+Available @code{nslcd-configuration} fields are:
+
+@deftypevr {@code{nslcd-configuration} parameter} package nss-pam-ldapd
+The @code{nss-pam-ldapd} package to use.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number threads
+The number of threads to start that can handle requests and perform LDAP
+queries.  Each thread opens a separate connection to the LDAP server.
+The default is to start 5 threads.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} string uid
+This specifies the user id with which the daemon should be run.
+
+Defaults to @samp{"nslcd"}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} string gid
+This specifies the group id with which the daemon should be run.
+
+Defaults to @samp{"nslcd"}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} log-option log
+This option controls the way logging is done via a list containing
+SCHEME and LEVEL.  The SCHEME argument may either be the symbols "none"
+or "syslog", or an absolute file name.  The LEVEL argument is optional
+and specifies the log level.  The log level may be one of the following
+symbols: "crit", "error", "warning", "notice", "info" or "debug".  All
+messages with the specified log level or higher are logged.
+
+Defaults to @samp{("/var/log/nslcd" info)}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} list uri
+The list of LDAP server URIs.  Normally, only the first server will be
+used with the following servers as fall-back.
+
+Defaults to @samp{("ldap://localhost:389/")}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string ldap-version
+The version of the LDAP protocol to use.  The default is to use the
+maximum version supported by the LDAP library.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string binddn
+Specifies the distinguished name with which to bind to the directory
+server for lookups.  The default is to bind anonymously.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string bindpw
+Specifies the credentials with which to bind.  This option is only
+applicable when used with binddn.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string rootpwmoddn
+Specifies the distinguished name to use when the root user tries to
+modify a user's password using the PAM module.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string rootpwmodpw
+Specifies the credentials with which to bind if the root user tries to
+change a user's password.  This option is only applicable when used with
+rootpwmoddn
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-mech
+Specifies the SASL mechanism to be used when performing SASL
+authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-realm
+Specifies the SASL realm to be used when performing SASL authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-authcid
+Specifies the authentication identity to be used when performing SASL
+authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-authzid
+Specifies the authorization identity to be used when performing SASL
+authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean sasl-canonicalize?
+Determines whether the LDAP server host name should be canonicalised.  If
+this is enabled the LDAP library will do a reverse host name lookup.  By
+default, it is left up to the LDAP library whether this check is
+performed or not.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string krb5-ccname
+Set the name for the GSS-API Kerberos credentials cache.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} string base
+The directory search base.
+
+Defaults to @samp{"dc=example,dc=com"}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} scope-option scope
+Specifies the search scope (subtree, onelevel, base or children).  The
+default scope is subtree; base scope is almost never useful for name
+service lookups; children scope is not supported on all servers.
+
+Defaults to @samp{(subtree)}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-deref-option deref
+Specifies the policy for dereferencing aliases.  The default policy is
+to never dereference aliases.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean referrals
+Specifies whether automatic referral chasing should be enabled.  The
+default behaviour is to chase referrals.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} list-of-map-entries maps
+This option allows for custom attributes to be looked up instead of the
+default RFC 2307 attributes.  It is a list of maps, each consisting of
+the name of a map, the RFC 2307 attribute to match and the query
+expression for the attribute as it is available in the directory.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} list-of-filter-entries filters
+A list of filters consisting of the name of a map to which the filter
+applies and an LDAP search filter expression.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number bind-timelimit
+Specifies the time limit in seconds to use when connecting to the
+directory server.  The default value is 10 seconds.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number timelimit
+Specifies the time limit (in seconds) to wait for a response from the
+LDAP server.  A value of zero, which is the default, is to wait
+indefinitely for searches to be completed.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number idle-timelimit
+Specifies the period if inactivity (in seconds) after which the con‐
+nection to the LDAP server will be closed.  The default is not to time
+out connections.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number reconnect-sleeptime
+Specifies the number of seconds to sleep when connecting to all LDAP
+servers fails.  By default one second is waited between the first
+failure and the first retry.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number reconnect-retrytime
+Specifies the time after which the LDAP server is considered to be
+permanently unavailable.  Once this time is reached retries will be done
+only once per this time period.  The default value is 10 seconds.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-ssl-option ssl
+Specifies whether to use SSL/TLS or not (the default is not to).  If
+'start-tls is specified then StartTLS is used rather than raw LDAP over
+SSL.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-tls-reqcert-option tls-reqcert
+Specifies what checks to perform on a server-supplied certificate.  The
+meaning of the values is described in the ldap.conf(5) manual page.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cacertdir
+Specifies the directory containing X.509 certificates for peer authen‐
+tication.  This parameter is ignored when using GnuTLS.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cacertfile
+Specifies the path to the X.509 certificate for peer authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-randfile
+Specifies the path to an entropy source.  This parameter is ignored when
+using GnuTLS.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-ciphers
+Specifies the ciphers to use for TLS as a string.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cert
+Specifies the path to the file containing the local certificate for
+client TLS authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-key
+Specifies the path to the file containing the private key for client TLS
+authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number pagesize
+Set this to a number greater than 0 to request paged results from the
+LDAP server in accordance with RFC2696.  The default (0) is to not
+request paged results.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-ignore-users-option nss-initgroups-ignoreusers
+This option prevents group membership lookups through LDAP for the
+specified users.  Alternatively, the value 'all-local may be used.  With
+that value nslcd builds a full list of non-LDAP users on startup.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-min-uid
+This option ensures that LDAP users with a numeric user id lower than
+the specified value are ignored.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-uid-offset
+This option specifies an offset that is added to all LDAP numeric user
+ids.  This can be used to avoid user id collisions with local users.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-gid-offset
+This option specifies an offset that is added to all LDAP numeric group
+ids.  This can be used to avoid user id collisions with local groups.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-nested-groups
+If this option is set, the member attribute of a group may point to
+another group.  Members of nested groups are also returned in the higher
+level group and parent groups are returned when finding groups for a
+specific user.  The default is not to perform extra searches for nested
+groups.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-getgrent-skipmembers
+If this option is set, the group member list is not retrieved when
+looking up groups.  Lookups for finding which groups a user belongs to
+will remain functional so the user will likely still get the correct
+groups assigned on login.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-disable-enumeration
+If this option is set, functions which cause all user/group entries to
+be loaded from the directory will not succeed in doing so.  This can
+dramatically reduce LDAP server load in situations where there are a
+great number of users and/or groups.  This option is not recommended for
+most configurations.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string validnames
+This option can be used to specify how user and group names are verified
+within the system.  This pattern is used to check all user and group
+names that are requested and returned from LDAP.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean ignorecase
+This specifies whether or not to perform searches using case-insensitive
+matching.  Enabling this could open up the system to authorization
+bypass vulnerabilities and introduce nscd cache poisoning
+vulnerabilities which allow denial of service.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean pam-authc-ppolicy
+This option specifies whether password policy controls are requested and
+handled from the LDAP server when performing user authentication.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-authc-search
+By default nslcd performs an LDAP search with the user's credentials
+after BIND (authentication) to ensure that the BIND operation was
+successful.  The default search is a simple check to see if the user's
+DN exists.  A search filter can be specified that will be used instead.
+It should return at least one entry.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-authz-search
+This option allows flexible fine tuning of the authorisation check that
+should be performed.  The search filter specified is executed and if any
+entries match, access is granted, otherwise access is denied.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-password-prohibit-message
+If this option is set password modification using pam_ldap will be
+denied and the specified message will be presented to the user instead.
+The message can be used to direct the user to an alternative means of
+changing their password.
+
+Defaults to @samp{disabled}.
+
+@end deftypevr
+
+@deftypevr {@code{nslcd-configuration} parameter} list pam-services
+List of pam service names for which LDAP authentication should suffice.
+
+Defaults to @samp{()}.
+
+@end deftypevr
+
+@c %end of generated documentation for nslcd-configuration
+
+
 @node Web Services
 @subsection Web Services
 
@@ -20303,6 +20878,15 @@ The directory to scan for music files.
 @item @code{playlist-dir} (default: @code{"~/.mpd/playlists"})
 The directory to store playlists.
 
+@item @code{db-file} (default: @code{"~/.mpd/tag_cache"})
+The location of the music database.
+
+@item @code{state-file} (default: @code{"~/.mpd/state"})
+The location of the file that stores current MPD's state.
+
+@item @code{sticker-file} (default: @code{"~/.mpd/sticker.sql"})
+The location of the sticker database.
+
 @item @code{port} (default: @code{"6600"})
 The port to run mpd on.
 
@@ -22434,6 +23018,34 @@ that enables sharing the clipboard with a vm and setting the guest display
 resolution when the graphical console window resizes.
 @end deffn
 
+@cindex inputattach
+@subsubheading inputattach Service
+
+@cindex tablet input, for Xorg
+@cindex touchscreen input, for Xorg
+The @uref{https://linuxwacom.github.io/, inputattach} service allows you to
+use input devices such as Wacom tablets, touchscreens, or joysticks with the
+Xorg display server.
+
+@deffn {Scheme Variable} inputattach-service-type
+Type of a service that runs @command{inputattach} on a device and
+dispatches events from it.
+@end deffn
+
+@deftp {Data Type} inputattach-configuration
+@table @asis
+@item @code{device-type} (default: @code{"wacom"})
+The type of device to connect to.  Run @command{inputattach --help}, from the
+@code{inputattach} package, to see the list of supported device types.
+
+@item @code{device} (default: @code{"/dev/ttyS0"})
+The device file to connect to the device.
+
+@item @code{log-file} (default: @code{#f})
+If true, this must be the name of a file to log messages to.
+@end table
+@end deftp
+
 @subsection Dictionary Services
 @cindex dictionary
 The @code{(gnu services dict)} module provides the following service:
diff --git a/etc/completion/fish/guix.fish b/etc/completion/fish/guix.fish
index d5b28cdc2b..525d39679d 100644
--- a/etc/completion/fish/guix.fish
+++ b/etc/completion/fish/guix.fish
@@ -1,6 +1,6 @@
 #
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
+# Copyright © 2017, 2018 ng0 <ng0@n0.is>
 #
 # This file is part of GNU Guix.
 #
diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm
index 2bb711eed1..40108584a8 100644
--- a/gnu/bootloader/extlinux.scm
+++ b/gnu/bootloader/extlinux.scm
@@ -91,11 +91,9 @@ TIMEOUT ~a~%"
         (for-each (lambda (file)
                     (install-file file install-dir))
                   (find-files syslinux-dir "\\.c32$"))
-        (unless
-            (and (zero? (system* extlinux "--install" install-dir))
-                 (write-file-on-device
-                  (string-append syslinux-dir "/" #$mbr) 440 device 0))
-          (error "failed to install SYSLINUX")))))
+        (invoke/quiet extlinux "--install" install-dir)
+        (write-file-on-device (string-append syslinux-dir "/" #$mbr)
+                              440 device 0))))
 
 (define install-extlinux-mbr
   (install-extlinux "mbr.bin"))
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 51d5787364..14aede72c5 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -369,10 +369,11 @@ submenu \"GNU system, old configurations...\" {~%")
         ;; root partition.
         (setenv "GRUB_ENABLE_CRYPTODISK" "y")
 
-        (unless (zero? (system* grub "--no-floppy" "--target=i386-pc"
-                                "--boot-directory" install-dir
-                                device))
-          (error "failed to install GRUB (BIOS)")))))
+        ;; Hide potentially confusing messages from the user, such as
+        ;; "Installing for i386-pc platform."
+        (invoke/quiet grub "--no-floppy" "--target=i386-pc"
+                      "--boot-directory" install-dir
+                      device))))
 
 (define install-grub-efi
   #~(lambda (bootloader efi-dir mount-point)
@@ -388,10 +389,9 @@ submenu \"GNU system, old configurations...\" {~%")
         ;; Tell 'grub-install' that there might be a LUKS-encrypted /boot or
         ;; root partition.
         (setenv "GRUB_ENABLE_CRYPTODISK" "y")
-        (unless (zero? (system* grub-install "--boot-directory" install-dir
-                                "--bootloader-id=Guix"
-                                "--efi-directory" target-esp))
-          (error "failed to install GRUB (EFI)")))))
+        (invoke/quiet grub-install "--boot-directory" install-dir
+                      "--bootloader-id=Guix"
+                      "--efi-directory" target-esp))))
 
 
 
diff --git a/gnu/build/bootloader.scm b/gnu/build/bootloader.scm
index d00674dd40..c5febcde1e 100644
--- a/gnu/build/bootloader.scm
+++ b/gnu/build/bootloader.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,8 +18,15 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu build bootloader)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 binary-ports)
-  #:export (write-file-on-device))
+  #:use-module (ice-9 popen)
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 rdelim)
+  #:use-module (ice-9 format)
+  #:export (write-file-on-device
+            invoke/quiet))
 
 
 ;;;
@@ -35,3 +43,56 @@
             (seek output offset SEEK_SET)
             (put-bytevector output bv))
           #:binary #t)))))
+
+(define-syntax-rule (G_ str) str)                 ;for xgettext
+
+(define (open-pipe-with-stderr program . args)
+  "Run PROGRAM with ARGS in an input pipe, but, unlike 'open-pipe*', redirect
+both its standard output and standard error to the pipe.  Return two value:
+the pipe to read PROGRAM's data from, and the PID of the child process running
+PROGRAM."
+  ;; 'open-pipe*' doesn't attempt to capture stderr in any way, which is why
+  ;; we need to roll our own.
+  (match (pipe)
+    ((input .  output)
+     (match (primitive-fork)
+       (0
+        (dynamic-wind
+          (const #t)
+          (lambda ()
+            (close-port input)
+            (dup2 (fileno output) 1)
+            (dup2 (fileno output) 2)
+            (apply execlp program program args))
+          (lambda ()
+            (primitive-exit 127))))
+       (pid
+        (close-port output)
+        (values input pid))))))
+
+;; TODO: Move to (guix build utils) on the next rebuild cycle.
+(define (invoke/quiet program . args)
+  "Invoke PROGRAM with ARGS and capture PROGRAM's standard output and standard
+error.  If PROGRAM succeeds, print nothing and return the unspecified value;
+otherwise, raise a '&message' error condition that includes the status code
+and the output of PROGRAM."
+  (define-values (pipe pid)
+    (apply open-pipe-with-stderr program args))
+
+  (let loop ((lines '()))
+    (match (read-line pipe)
+      ((? eof-object?)
+       (close-port pipe)
+       (match (waitpid pid)
+         ((_ . status)
+          (unless (zero? status)
+            (raise (condition
+                    (&message
+                     (message (format #f (G_ "'~a~{ ~a~}' exited with status ~a; \
+output follows:~%~%~{  ~a~%~}")
+                                      program args
+                                      (or (status:exit-val status)
+                                          status)
+                                      (reverse lines))))))))))
+      (line
+       (loop (cons line lines))))))
diff --git a/gnu/local.mk b/gnu/local.mk
index ea5ac200b0..e936343918 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -10,7 +10,7 @@
 # Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
-# Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+# Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 # Copyright © 2016, 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 # Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
@@ -212,6 +212,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/gobby.scm			\
   %D%/packages/golang.scm			\
   %D%/packages/gperf.scm			\
+  %D%/packages/gpodder.scm			\
   %D%/packages/gprolog.scm			\
   %D%/packages/gps.scm				\
   %D%/packages/graph.scm			\
@@ -364,6 +365,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/perl-check.scm			\
   %D%/packages/perl-compression.scm		\
   %D%/packages/perl-web.scm			\
+  %D%/packages/perl6.scm			\
   %D%/packages/photo.scm			\
   %D%/packages/phabricator.scm 			\
   %D%/packages/php.scm				\
@@ -569,6 +571,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/tests/monitoring.scm                      \
   %D%/tests/nfs.scm				\
   %D%/tests/install.scm				\
+  %D%/tests/ldap.scm				\
   %D%/tests/mail.scm				\
   %D%/tests/messaging.scm			\
   %D%/tests/networking.scm			\
@@ -651,6 +654,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/aria2-CVE-2019-3500.patch		\
   %D%/packages/patches/aspell-default-dict-dir.patch		\
   %D%/packages/patches/aspell-gcc-compat.patch			\
+  %D%/packages/patches/at-spi2-core-meson-compat.patch		\
   %D%/packages/patches/ath9k-htc-firmware-binutils.patch	\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
   %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
@@ -671,6 +675,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/binutils-boot-2.20.1a.patch		\
   %D%/packages/patches/biber-fix-encoding-write.patch		\
   %D%/packages/patches/binutils-loongson-workaround.patch	\
+  %D%/packages/patches/blender-2.79-newer-ffmpeg.patch		\
+  %D%/packages/patches/blender-2.79-python-3.7-fix.patch	\
   %D%/packages/patches/boost-fix-icu-build.patch		\
   %D%/packages/patches/byobu-writable-status.patch		\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
@@ -706,8 +712,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/combinatorial-blas-io-fix.patch		\
   %D%/packages/patches/cpio-CVE-2016-2037.patch			\
   %D%/packages/patches/cpufrequtils-fix-aclocal.patch		\
-  %D%/packages/patches/cracklib-CVE-2016-6318.patch		\
-  %D%/packages/patches/cracklib-fix-buffer-overflow.patch	\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crda-optional-gcrypt.patch		\
   %D%/packages/patches/clucene-contribs-lib.patch               \
@@ -726,10 +730,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/docker-fix-tests.patch			\
   %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch	\
   %D%/packages/patches/doxygen-test.patch			\
-  %D%/packages/patches/dropbear-CVE-2018-15599.patch		\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/efl-mesa-compat.patch			\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
+  %D%/packages/patches/elixir-path-length.patch			\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
@@ -933,6 +937,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kio-search-smbd-on-PATH.patch		\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
+  %D%/packages/patches/knot-include-system-lmdb-header.patch	\
   %D%/packages/patches/kpackage-allow-external-paths.patch	\
   %D%/packages/patches/kobodeluxe-paths.patch			\
   %D%/packages/patches/kobodeluxe-enemies-pipe-decl.patch	\
@@ -968,10 +973,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/libevent-2.1-skip-failing-test.patch	\
   %D%/packages/patches/libexif-CVE-2016-6328.patch		\
   %D%/packages/patches/libexif-CVE-2017-7544.patch		\
-  %D%/packages/patches/libextractor-CVE-2018-20430.patch	\
-  %D%/packages/patches/libextractor-CVE-2018-20431.patch	\
+  %D%/packages/patches/libgit2-avoid-python.patch		\
   %D%/packages/patches/libgit2-mtime-0.patch			\
-  %D%/packages/patches/libgit2-oom-test.patch			\
   %D%/packages/patches/libgdata-fix-tests.patch			\
   %D%/packages/patches/libgdata-glib-duplicate-tests.patch	\
   %D%/packages/patches/libgnome-encoding.patch			\
@@ -1178,6 +1181,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
   %D%/packages/patches/python-configobj-setuptools.patch	\
   %D%/packages/patches/python-faker-fix-build-32bit.patch	\
+  %D%/packages/patches/python-flint-includes.patch		\
   %D%/packages/patches/python-mox3-python3.6-compat.patch	\
   %D%/packages/patches/python-testtools.patch			\
   %D%/packages/patches/python-paste-remove-timing-test.patch	\
@@ -1289,6 +1293,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tk-find-library.patch			\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
   %D%/packages/patches/ttfautohint-source-date-epoch.patch	\
+  %D%/packages/patches/totem-meson-compat.patch			\
   %D%/packages/patches/totem-meson-easy-codec.patch		\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-include-qregexpvalidator.patch	\
diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm
index 35c8c8f19b..431e5924c9 100644
--- a/gnu/packages/accessibility.scm
+++ b/gnu/packages/accessibility.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw>
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index f3052953cf..9ed2e32324 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
@@ -1598,13 +1598,13 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.7.8")
+    (version "2.7.9")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
-        (base32 "11yx7vd0mp5gkq428af141dwnrwf8f9cp3f65243qbs9icjxnrrx"))))
+        (base32 "19vyf60zfmnv7frwm96bzqzvia69dysy9apk8bl84vr03ib9vrbf"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-bcrypt" ,python-bcrypt)
@@ -2699,7 +2699,7 @@ Python loading in HPC environments.")
   (let ((real-name "inxi"))
     (package
       (name "inxi-minimal")
-      (version "3.0.22-1")
+      (version "3.0.32-1")
       (source
        (origin
          (method git-fetch)
@@ -2708,7 +2708,7 @@ Python loading in HPC environments.")
                (commit version)))
          (file-name (git-file-name real-name version))
          (sha256
-          (base32 "1br392s3xc2nwqmfx4nwb3i97wjwasvkq8ayr8jq72mi5qzsgizn"))))
+          (base32 "171xdip2alkp3g0k0sanaavvdcz6d0wlldj9lgj11xsdbhaaknnv"))))
       (build-system trivial-build-system)
       (inputs
        `(("bash" ,bash-minimal)
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 67385d1875..e272cd990b 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -43,6 +43,7 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages tex)
@@ -52,6 +53,7 @@
   #:use-module (guix build-system ant)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -380,7 +382,7 @@ fast arithmetic.")
 (define-public arb
   (package
     (name "arb")
-    (version "2.14.0")
+    (version "2.16.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -389,7 +391,7 @@ fast arithmetic.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ndxg7h4xvccjgp5l9z2f8b66dsff6fhf86bn5n7f75a1ksd7554"))))
+                "0478671wfwy3gl26sbxh1jq1ih36z4k72waa8y2y2lvn649gb7cd"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("flint" ,flint)))               ; flint.h is included by arf.h
@@ -421,6 +423,38 @@ real and complex numbers, with automatic, rigorous error control.")
     (license license:lgpl2.1+)
     (home-page "http://fredrikj.net/arb/")))
 
+(define-public python-flint
+  (package
+    (name "python-flint")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fredrik-johansson/python-flint.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1v0anazbj1cfi68nl2j6dbd31kgkc1563xmr0zk5xk3xj78569pw"))
+              (patches (search-patches "python-flint-includes.patch"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (inputs
+     `(("arb" ,arb)
+       ("flint" ,flint)))
+    (synopsis "Python module wrapping ARB and FLINT")
+    (description
+     "Python-flint is a Python extension module wrapping FLINT
+(Fast Library for Number Theory) and Arb (arbitrary-precision ball
+arithmetic).  It supports integers, rationals, modular integers,
+real and complex ball arithmetic, polynomials and matrices over all
+these types and other mathematical functions.")
+    (license license:expat)
+    (home-page "http://fredrikj.net/python-flint/")))
+
 (define-public ntl
   (package
    (name "ntl")
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 965fff6d46..74a80ab046 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -263,7 +263,7 @@ waveform until they line up with the proper sounds.")
 (define-public pencil2d
   (package
     (name "pencil2d")
-    (version "0.6.2")
+    (version "0.6.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -272,7 +272,7 @@ waveform until they line up with the proper sounds.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1iv7drwxs32mqs3hybjx2lxyqn8cv2b4rw9ny7gzdacsbhi65knr"))))
+                "097xwvhw7vl9pgknhb40zs6adf7mb1xxfc73h4kiqgp6z59prjl3"))))
     (build-system gnu-build-system)
     (inputs
      `(("qtbase" ,qtbase)
diff --git a/gnu/packages/arcan.scm b/gnu/packages/arcan.scm
index 0dfbf33901..db472efec5 100644
--- a/gnu/packages/arcan.scm
+++ b/gnu/packages/arcan.scm
@@ -18,20 +18,24 @@
 
 (define-module (gnu packages arcan)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system gnu)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages apr)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages pcre)
@@ -39,8 +43,10 @@
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg)
   #:use-module (srfi srfi-1))
 
 (define-public arcan
@@ -177,3 +183,102 @@ engine programmable using Lua.")
               "-DENABLE_LWA=on" "-DSTATIC_SQLITE3=off"
               "-DSTATIC_FREETYPE=off" "-DSHMIF_TUI_ACCEL=on")))))
     (synopsis "Combined display server, multimedia framework and game engine (SDL)")))
+
+(define-public xarcan
+  (let ((commit "8e6ee029388326cfe5cddeffe482eb3702e9b7f3")
+        (revision "1" ))
+    (package
+      (name "xarcan")
+      (version (git-version "0.5.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (file-name (git-file-name name version))
+         (uri (git-reference
+               (url "https://github.com/letoram/xarcan.git")
+               (commit commit)))
+         (sha256
+          (base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:configure-flags
+         `("--enable-kdrive" "--enable-xarcan"
+           "--disable-xorg" "--disable-xwayland"
+           "--disable-xnest" "--disable-xvfb"
+           "--enable-glamor" "--enable-glx"
+           "--disable-int10-module" "--enable-ipv6"
+           "--enable-record" "--without-systemd-daemon"
+           "--enable-xcsecurity" "--disable-static"
+           ,(string-append "--with-xkb-path="
+                           (assoc-ref %build-inputs "xkeyboard-config")
+                           "/share/X11/xkb")
+           ,(string-append "--with-xkb-bin-directory="
+                           (assoc-ref %build-inputs "xkbcomp")
+                           "/bin")
+           ,(string-append "--with-xkb-output="
+                           "/tmp"))     ; FIXME: Copied from xorg
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'noconfigure
+             (lambda _
+               (setenv "NOCONFIGURE" "true")
+               #t)))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("util-macros" ,util-macros)))
+      (inputs
+       `(("arcan" ,arcan)
+         ("font-util" ,font-util)
+         ("libdrm" ,libdrm)
+         ("libepoxy" ,libepoxy)
+         ("libkbfile" ,libxkbfile)
+         ("libressl" ,libressl)
+         ("libx11" ,libx11)
+         ("libxfont2" ,libxfont2)
+         ("mesa" ,mesa)
+         ("pixman" ,pixman)
+         ("xkeyboard-config" ,xkeyboard-config)
+         ("xkbcomp" ,xkbcomp)
+         ("xorgproto" ,xorgproto)
+         ("xtrans" ,xtrans)))
+      (home-page "https://arcan-fe.com")
+      (synopsis "Patched Xserver that bridges connections to Arcan")
+      (description "Patched Xserver with a KDrive backend that uses the arcan-shmif
+ to map Xlib/Xcb/X clients to a running arcan instance.  It allows running an X session
+as a window under Arcan.")
+      (license license:expat))))
+
+(define-public arcan-wayland
+  (package
+    (inherit arcan)
+    (name "arcan-wayland")
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("arcan" ,arcan)
+       ("libseccomp" ,libseccomp)
+       ("libxkbcommon" ,libxkbcommon)
+       ("mesa" ,mesa)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)))
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             (chdir "src/tools/waybridge")
+             #t))
+         (add-after 'unpack 'fix-cmake-find-shmif
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake"
+               (("/usr/local") (assoc-ref inputs "arcan")))
+             #t)))))
+    (synopsis "Wayland protocol service for Arcan")
+    (description "Arcan-wayland (waybridge) bridges Wayland connections
+with an Arcan connection point.  It allows Wayland compatible clients
+to connect and render using Arcan.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 8bcd3c4b85..a38e77c996 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
@@ -156,17 +156,17 @@ Filter) modules follow the convention of 1V / Octave.")
 (define-public aubio
   (package
     (name "aubio")
-    (version "0.4.6")
+    (version "0.4.9")
     (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://aubio.org/pub/aubio-" version ".tar.bz2"))
              (sha256
               (base32
-               "1yvwskahx1bf3x2fvi6cwah1ay11iarh79fjlqz8s887y3hkpixx"))))
+               "1npks71ljc48w6858l9bq30kaf5nph8z0v61jkfb70xb9np850nl"))))
     (build-system waf-build-system)
     (arguments
-     `(#:tests? #f  ; no check target
+     `(#:tests? #f                      ; no check target
        #:configure-flags
        (list
         (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")
@@ -2120,17 +2120,17 @@ different audio devices such as ALSA or PulseAudio.")
 (define-public qjackctl
   (package
     (name "qjackctl")
-    (version "0.5.5")
+    (version "0.5.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
                                   version "/qjackctl-" version ".tar.gz"))
               (sha256
                (base32
-                "1rzzqa39a6llr52vjkjr0a86nc776kmr5xs52qqga8ms9697psz5"))))
+                "0wlmbb9m7cf3wr7c2h2hji18592x2b119m7mx85wksjs6rjaq2mj"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ;; no check target
+     '(#:tests? #f                      ; no check target
        ;; Disable xunique to prevent X hanging when starting qjackctl in
        ;; tiling window managers such as StumpWM or i3
        ;; (see https://github.com/rncbc/qjackctl/issues/13).
@@ -2865,15 +2865,14 @@ interface.")
 (define-public qsynth
   (package
     (name "qsynth")
-    (version "0.5.4")
+    (version "0.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
                            "/qsynth-" version ".tar.gz"))
        (sha256
-        (base32
-         "0kpq5fxr96wnii18ax780w1ivq8ksk892ac0bprn92iz0asfysrd"))))
+        (base32 "08x7znvbwi9miavcarymi7dsv8njmxzwzma20dbmz8j2aswm53w5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no "check" phase
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index 4edfb5725e..ceb70dfee7 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c
index f0cff88552..551f4db88a 100644
--- a/gnu/packages/aux-files/run-in-namespace.c
+++ b/gnu/packages/aux-files/run-in-namespace.c
@@ -1,5 +1,5 @@
 /* GNU Guix --- Functional package management for GNU
-   Copyright (C) 2018 Ludovic Courtès <ludo@gnu.org>
+   Copyright (C) 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 
    This file is part of GNU Guix.
 
@@ -212,6 +212,46 @@ disallow_setgroups (pid_t pid)
 }
 
 
+#ifdef PROOT_PROGRAM
+
+/* Execute the wrapped program with PRoot, passing it ARGC and ARGV, and
+   "bind-mounting" STORE in the right place.  */
+static void
+exec_with_proot (const char *store, int argc, char *argv[])
+{
+  int proot_specific_argc = 4;
+  int proot_argc = argc + proot_specific_argc;
+  char *proot_argv[proot_argc], *proot;
+  char bind_spec[strlen (store) + 1 + sizeof "@STORE_DIRECTORY@"];
+
+  strcpy (bind_spec, store);
+  strcat (bind_spec, ":");
+  strcat (bind_spec, "@STORE_DIRECTORY@");
+
+  proot = concat (store, PROOT_PROGRAM);
+
+  proot_argv[0] = proot;
+  proot_argv[1] = "-b";
+  proot_argv[2] = bind_spec;
+  proot_argv[3] = "@WRAPPED_PROGRAM@";
+
+  for (int i = 0; i < argc; i++)
+    proot_argv[i + proot_specific_argc] = argv[i + 1];
+
+  proot_argv[proot_argc] = NULL;
+
+  /* Seccomp support seems to invariably lead to segfaults; disable it by
+     default.  */
+  setenv ("PROOT_NO_SECCOMP", "1", 0);
+
+  int err = execv (proot, proot_argv);
+  if (err < 0)
+    assert_perror (errno);
+}
+
+#endif
+
+
 int
 main (int argc, char *argv[])
 {
@@ -274,6 +314,10 @@ main (int argc, char *argv[])
 	  break;
 
 	case -1:
+	  rm_rf (new_root);
+#ifdef PROOT_PROGRAM
+	  exec_with_proot (store, argc, argv);
+#else
 	  fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]);
 	  fprintf (stderr, "\
 This may be because \"user namespaces\" are not supported on this system.\n\
@@ -281,6 +325,7 @@ Consequently, we cannot run '@WRAPPED_PROGRAM@',\n\
 unless you move it to the '@STORE_DIRECTORY@' directory.\n\
 \n\
 Please refer to the 'guix pack' documentation for more information.\n");
+#endif
 	  return EXIT_FAILURE;
 
 	default:
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 513cc2630e..5e6af1fdb2 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -980,14 +980,14 @@ precious backup space.
 (define-public burp
   (package
     (name "burp")
-    (version "2.3.0")
+    (version "2.3.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/burp/burp-" version
                                   "/burp-" version ".tar.bz2"))
               (sha256
                (base32
-                "0in49c0ir7lb7jli0fcphdq1nh5rclhans4ngm7z7hzyxa4jrgri"))))
+                "1nkkn0nfydn39cl5rxd1wbmzizird6z05j9h2xr7xczdlhhjnaai"))))
     (build-system gnu-build-system)
     (inputs
      `(("librsync" ,librsync)
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index f4bad73dc7..805cf3256c 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -38,14 +38,14 @@
 (define-public fio
   (package
     (name "fio")
-    (version "3.11")
+    (version "3.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://brick.kernel.dk/snaps/"
                                   "fio-" version ".tar.bz2"))
               (sha256
                (base32
-                "0s8m0wcz5j6sa1hblj80wk3syy5b4shg7y3gabvm9xa3wj0lzasa"))))
+                "0ddj7zm04jqlna3w61qyp4qvwnv0r2lc1hzpwrgbvv4fq581w7d2"))))
     (build-system gnu-build-system)
     (arguments
      '(#:test-target "test"
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index 251ad1e1ac..710b9fd07a 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -770,14 +770,14 @@ packages.")
 (define-public r-annotate
   (package
     (name "r-annotate")
-    (version "1.60.0")
+    (version "1.60.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "annotate" version))
        (sha256
         (base32
-         "0p6c96lay23a67dyirgnwzm2yw22m592z780vy6p4nqwla8ha18n"))))
+         "0pk6ayr3vyqxk850ljkbyil4i382ngfqcbxlv0qrp62yfqgzcjwp"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-annotationdbi" ,r-annotationdbi)
@@ -2483,3 +2483,41 @@ Linnorm can work with raw count, CPM, RPKM, FPKM and TPM.  Additionally, the
 @code{RnaXSim} function is included for simulating RNA-seq data for the
 evaluation of DEG analysis methods.")
     (license license:expat)))
+
+(define-public r-ioniser
+  (package
+    (name "r-ioniser")
+    (version "2.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (bioconductor-uri "IONiseR" version))
+       (sha256
+        (base32
+         "01lqisdlsvym8nhgpzn7lpcddk9lv9253dy9v65r2dicb5xqhj00"))))
+    (properties `((upstream-name . "IONiseR")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bit64" ,r-bit64)
+       ("r-dplyr" ,r-dplyr)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-magrittr" ,r-magrittr)
+       ("r-rhdf5" ,r-rhdf5)
+       ("r-shortread" ,r-shortread)
+       ("r-stringr" ,r-stringr)
+       ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)
+       ("r-xvector" ,r-xvector)))
+    (home-page "https://bioconductor.org/packages/IONiseR/")
+    (synopsis "Quality assessment tools for Oxford Nanopore MinION data")
+    (description
+     "IONiseR provides tools for the quality assessment of Oxford Nanopore
+MinION data.  It extracts summary statistics from a set of fast5 files and can
+be used either before or after base calling.  In addition to standard
+summaries of the read-types produced, it provides a number of plots for
+visualising metrics relative to experiment run time or spatially over the
+surface of a flowcell.")
+    (license license:expat)))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 9b0a4314b9..1836939970 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -40,6 +40,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system haskell)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system ocaml)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
@@ -477,6 +478,169 @@ BED, GFF/GTF, VCF.")
                (base32
                 "0jhavwifnf7lmkb11h9y7dynr8d699h0rd2l52j1pfgircr2zwv5"))))))
 
+(define-public pbbam
+  (package
+    (name "pbbam")
+    (version "0.23.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/PacificBiosciences/pbbam.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0h9gkrpf2lrxklxp72xfl5bi3h5zcm5hprrya9gf0hr3xwlbpp0x"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'find-googletest
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; It doesn't find gtest_main because there's no pkg-config file
+             ;; for it.  Find it another way.
+             (substitute* "tests/meson.build"
+               (("pbbam_gtest_dep = dependency\\('gtest_main'.*")
+                (format #f "cpp = meson.get_compiler('cpp')
+pbbam_gtest_dep = cpp.find_library('gtest_main', dirs : '~a')\n"
+                        (assoc-ref inputs "googletest"))))
+             #t)))
+       ;; TODO: tests/pbbam_test cannot be linked
+       ;; ld: tests/59830eb@@pbbam_test@exe/src_test_Accuracy.cpp.o:
+       ;;   undefined reference to symbol '_ZTIN7testing4TestE'
+       ;; ld: /gnu/store/...-googletest-1.8.0/lib/libgtest.so:
+       ;;   error adding symbols: DSO missing from command line
+       #:tests? #f
+       #:configure-flags '("-Dtests=false")))
+    ;; These libraries are listed as "Required" in the pkg-config file.
+    (propagated-inputs
+     `(("htslib" ,htslib)
+       ("zlib" ,zlib)))
+    (inputs
+     `(("boost" ,boost)
+       ("samtools" ,samtools)))
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper))) ; for tests
+    (home-page "https://github.com/PacificBiosciences/pbbam")
+    (synopsis "Work with PacBio BAM files")
+    (description
+     "The pbbam software package provides components to create, query, and
+edit PacBio BAM files and associated indices.  These components include a core
+C++ library, bindings for additional languages, and command-line utilities.
+This library is not intended to be used as a general-purpose BAM utility - all
+input and output BAMs must adhere to the PacBio BAM format specification.
+Non-PacBio BAMs will cause exceptions to be thrown.")
+    (license license:bsd-3)))
+
+(define-public blasr-libcpp
+  (package
+    (name "blasr-libcpp")
+    (version "5.3.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/PacificBiosciences/blasr_libcpp.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0cn5l42zyq67sj0g2imqkhayz2iqvv0a1pgpbmlq0qynjmsrbfd2"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'link-with-hdf5
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((hdf5 (assoc-ref inputs "hdf5")))
+               (substitute* "meson.build"
+                 (("libblasr_deps = \\[" m)
+                  (string-append
+                   m
+                   (format #f "cpp.find_library('hdf5', dirs : '~a'), \
+cpp.find_library('hdf5_cpp', dirs : '~a'), "
+                           hdf5 hdf5)))))
+             #t))
+         (add-after 'unpack 'find-googletest
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; It doesn't find gtest_main because there's no pkg-config file
+             ;; for it.  Find it another way.
+             (substitute* "unittest/meson.build"
+               (("libblasr_gtest_dep = dependency\\('gtest_main'.*")
+                (format #f "cpp = meson.get_compiler('cpp')
+libblasr_gtest_dep = cpp.find_library('gtest_main', dirs : '~a')\n"
+                        (assoc-ref inputs "googletest"))))
+             #t)))
+       ;; TODO: unittest/libblasr_unittest cannot be linked
+       ;; ld: ;; unittest/df08227@@libblasr_unittest@exe/alignment_utils_FileUtils_gtest.cpp.o:
+       ;; undefined reference to symbol
+       ;; '_ZN7testing8internal9DeathTest6CreateEPKcPKNS0_2REES3_iPPS1_'
+       ;; ld: /gnu/store/...-googletest-1.8.0/lib/libgtest.so:
+       ;;   error adding symbols: DSO missing from command line
+       #:tests? #f
+       #:configure-flags '("-Dtests=false")))
+    (inputs
+     `(("boost" ,boost)
+       ("hdf5" ,hdf5)
+       ("pbbam" ,pbbam)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/PacificBiosciences/blasr_libcpp")
+    (synopsis "Library for analyzing PacBio genomic sequences")
+    (description
+     "This package provides three libraries used by applications for analyzing
+PacBio genomic sequences.  This library contains three sub-libraries: pbdata,
+hdf and alignment.")
+    (license license:bsd-3)))
+
+(define-public blasr
+  (package
+    (name "blasr")
+    (version "5.3.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/PacificBiosciences/blasr.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1skgy2mvz8gsgfh1gc2nfgwvpyzb1hpmp2cf2773h5wsj8nw22kl"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'link-with-hdf5
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((hdf5 (assoc-ref inputs "hdf5")))
+               (substitute* "meson.build"
+                 (("blasr_deps = \\[" m)
+                  (string-append
+                   m
+                   (format #f "cpp.find_library('hdf5', dirs : '~a'), \
+cpp.find_library('hdf5_cpp', dirs : '~a'), "
+                           hdf5 hdf5)))))
+             #t)))
+       ;; Tests require "cram" executable, which is not packaged.
+       #:tests? #f
+       #:configure-flags '("-Dtests=false")))
+    (inputs
+     `(("boost" ,boost)
+       ("blasr-libcpp" ,blasr-libcpp)
+       ("hdf5" ,hdf5)
+       ("pbbam" ,pbbam)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/PacificBiosciences/blasr")
+    (synopsis "PacBio long read aligner")
+    (description
+     "Blasr is a genomic sequence aligner for processing PacBio long reads.")
+    (license license:bsd-3)))
+
 (define-public ribotaper
   (package
     (name "ribotaper")
@@ -732,20 +896,30 @@ Python.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1rna16lyk5aqhnv0dp77wwaplias93f1vw28ad3jmyw6hwkai05v"))))
+         "1rna16lyk5aqhnv0dp77wwaplias93f1vw28ad3jmyw6hwkai05v"))
+       (modules '((guix build utils)))
+       (snippet '(begin
+                   ;; Delete generated C files.
+                   (for-each delete-file (find-files "." "\\.c"))
+                   #t))))
     (build-system python-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'use-cython
            (lambda _ (setenv "USE_CYTHON" "1") #t))
-         (add-after 'unpack 'disable-broken-test
+         (add-after 'unpack 'disable-broken-tests
            (lambda _
              (substitute* "biom/tests/test_cli/test_validate_table.py"
                (("^(.+)def test_invalid_hdf5" m indent)
                 (string-append indent
                                "@npt.dec.skipif(True, msg='Guix')\n"
                                m)))
+             (substitute* "biom/tests/test_table.py"
+               (("^(.+)def test_from_hdf5_issue_731" m indent)
+                (string-append indent
+                               "@npt.dec.skipif(True, msg='Guix')\n"
+                               m)))
              #t))
          (add-before 'reset-gzip-timestamps 'make-files-writable
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1570,6 +1744,47 @@ the original BWA alignment program and shares the genome index structure as
 well as many of the command line options.")
     (license license:gpl3+)))
 
+(define-public bwa-meth
+  (package
+    (name "bwa-meth")
+    (version "0.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/brentp/bwa-meth.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "17j31i7zws5j7mhsq9x3qgkxly6mlmrgwhfq0qbflgxrmx04yaiz"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'keep-references-to-bwa
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "bwameth.py"
+               (("bwa mem")
+                (string-append (which "bwa") " mem"))
+               ;; There's an ill-advised check for "samtools" on PATH.
+               (("^checkX.*") ""))
+             #t)))))
+    (inputs
+     `(("bwa" ,bwa)))
+    (native-inputs
+     `(("python-toolshed" ,python-toolshed)))
+    (home-page "https://github.com/brentp/bwa-meth")
+    (synopsis "Fast and accurante alignment of BS-Seq reads")
+    (description
+     "BWA-Meth works for single-end reads and for paired-end reads from the
+directional protocol (most common).  It uses the method employed by
+methylcoder and Bismark of in silico conversion of all C's to T's in both
+reference and reads.  It recovers the original read (needed to tabulate
+methylation) by attaching it as a comment which BWA appends as a tag to the
+read.  It performs favorably to existing aligners gauged by number of on and
+off-target reads for a capture method that targets CpG-rich region.")
+    (license license:expat)))
+
 (define-public python-bx-python
   (package
     (name "python-bx-python")
@@ -6132,6 +6347,28 @@ sequences.")
     ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed.
     (license license:gpl3+)))
 
+(define-public starlong
+  (package (inherit star)
+    (name "starlong")
+    (arguments
+     (substitute-keyword-arguments (package-arguments star)
+       ((#:make-flags flags)
+        `(list "STARlong"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; Allow extra long sequence reads.
+           (add-after 'unpack 'make-extra-long
+             (lambda _
+               (substitute* "source/IncludeDefine.h"
+                 (("(#define DEF_readNameLengthMax ).*" _ match)
+                  (string-append match "900000\n")))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+                 (install-file "STARlong" bin))
+               #t))))))))
+
 (define-public subread
   (package
     (name "subread")
@@ -6482,14 +6719,14 @@ distribution.")
 (define-public r-dexseq
   (package
     (name "r-dexseq")
-    (version "1.28.2")
+    (version "1.28.3")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "DEXSeq" version))
        (sha256
         (base32
-         "134znafy7hn38rp4nia4pglz56fz6nbkxrf7z2k1sajfsgxa1hs6"))))
+         "1wsj1kqfrakmjnlplxmrv17r2spzcdkmwdkhggyjbf8mdhqs3w16"))))
     (properties `((upstream-name . "DEXSeq")))
     (build-system r-build-system)
     (propagated-inputs
@@ -6603,14 +6840,14 @@ Enrichment Analysis} (GSEA).")
 (define-public r-category
   (package
     (name "r-category")
-    (version "2.48.0")
+    (version "2.48.1")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "Category" version))
        (sha256
         (base32
-         "1jdm83bwdfhpfm1y6hwgvxzj6l83h1bdkqv23799kzywnwm016kv"))))
+         "18rsxlwa1l06i635cnznb9b2zssqcgb71pihky29gl2gwp7a654b"))))
     (properties `((upstream-name . "Category")))
     (build-system r-build-system)
     (propagated-inputs
@@ -7361,13 +7598,13 @@ CAGE.")
 (define-public r-variantannotation
   (package
     (name "r-variantannotation")
-    (version "1.28.11")
+    (version "1.28.13")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "VariantAnnotation" version))
               (sha256
                (base32
-                "19bxi5b9fzqdjadb8bfm8xsgi6nvrwbgn1xcpk59bnmv9vzjkwrh"))))
+                "1a7b0bg579ynpbfh5dk87fdgl62r9cwk4zmrl61m6zil7881p3gh"))))
     (properties
      `((upstream-name . "VariantAnnotation")))
     (inputs
@@ -7802,13 +8039,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.34.4")
+    (version "1.34.6")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomicFeatures" version))
               (sha256
                (base32
-                "09gc1vbqszrr3ixv4hsfan2l18fcf3gg58783mrfwjv6ci9c4w0d"))))
+                "1cz7qx324dmsrkzyhm956cfgr08gpily5rpym7hc8zz5kbl6i3ra"))))
     (properties
      `((upstream-name . "GenomicFeatures")))
     (build-system r-build-system)
@@ -9068,14 +9305,14 @@ trait.")
 (define-public r-maldiquant
   (package
     (name "r-maldiquant")
-    (version "1.18")
+    (version "1.19.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "MALDIquant" version))
        (sha256
         (base32
-         "18nl214xjsxkcpbg79jkmw0yznwm5szyh2qb84n7ip46mm779ha6"))))
+         "11zbvm1vw8zn2vmymvydgdczvwj961s2knvrn1q4gbziwi5gqvlc"))))
     (properties `((upstream-name . "MALDIquant")))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/MALDIquant")
@@ -9579,14 +9816,14 @@ Shiny-based display methods for Bioconductor objects.")
 (define-public r-annotationhub
   (package
     (name "r-annotationhub")
-    (version "2.14.4")
+    (version "2.14.5")
     (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "AnnotationHub" version))
        (sha256
         (base32
-         "18v2mk395svq3c19wzi6bjwjfnmrvjqkzmj7cmaji7rx4xdgz6ck"))))
+         "0iyrxaijl4614iz5c1j53227xy2g756p3bx7hcwglcybh0k30nki"))))
     (properties `((upstream-name . "AnnotationHub")))
     (build-system r-build-system)
     (propagated-inputs
@@ -12899,14 +13136,14 @@ analyses in addition to large-scale sequence-level searches.")
 (define-public r-diversitree
   (package
     (name "r-diversitree")
-    (version "0.9-10")
+    (version "0.9-11")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "diversitree" version))
         (sha256
          (base32
-          "0gh4rcrp0an3jh8915i1fsxlgyfk7njywgbd5ln5r2jhr085kpz7"))))
+          "1jqfjmmaigq581l4zxysmkhld0xv6izlbr1hihf9zplkix36majc"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -12915,7 +13152,7 @@ analyses in addition to large-scale sequence-level searches.")
      `(("r-ape" ,r-ape)
        ("r-desolve" ,r-desolve)
        ("r-rcpp" ,r-rcpp)
-       ("r-suplex" ,r-subplex)))
+       ("r-subplex" ,r-subplex)))
     (home-page "https://www.zoology.ubc.ca/prog/diversitree")
     (synopsis "Comparative 'phylogenetic' analyses of diversification")
     (description "This package contains a number of comparative \"phylogenetic\"
@@ -14031,7 +14268,12 @@ choosing which reads pass the filter.")
                (recursive? #t)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "09j5gz57yr9i34a27vbl72i4g8syv2zzgmsfyjq02yshmnrvkjs6"))))
+          (base32 "09j5gz57yr9i34a27vbl72i4g8syv2zzgmsfyjq02yshmnrvkjs6"))
+         (modules '((guix build utils)))
+         (snippet
+          '(begin
+             (delete-file-recursively "htslib")
+             #t))))
       (build-system gnu-build-system)
       (arguments
        `(#:make-flags
@@ -14070,7 +14312,7 @@ choosing which reads pass the filter.")
          ("hdf5" ,hdf5)
          ("htslib" ,htslib)
          ("perl" ,perl)
-         ("python" ,python)
+         ("python" ,python-wrapper)
          ("python-biopython" ,python-biopython)
          ("python-numpy" ,python-numpy)
          ("python-pysam" ,python-pysam)
@@ -14152,6 +14394,82 @@ approximate the gradient at each iteration of gradient descent.  This package
 is a Cython wrapper for FIt-SNE.")
     (license license:bsd-4)))
 
+(define-public bbmap
+  (package
+    (name "bbmap")
+    (version "35.82")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/bbmap/BBMap_" version ".tar.gz"))
+              (sha256
+               (base32
+                "1q4rfhxcb6z3gm8zg2davjz98w22lkf4hm9ikxz9kdl93pil3wkd"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:build-target "dist"
+       #:tests? #f ; there are none
+       #:make-flags
+       (list (string-append "-Dmpijar="
+                            (assoc-ref %build-inputs "java-openmpi")
+                            "/lib/mpi.jar"))
+       #:modules ((guix build ant-build-system)
+                  (guix build utils)
+                  (guix build java-utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-jni-library
+           (lambda _
+             (with-directory-excursion "jni"
+               (invoke "make" "-f" "makefile.linux"))))
+         ;; There is no install target
+         (replace 'install (install-jars "dist"))
+         (add-after 'install 'install-scripts-and-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "calcmem.sh"
+               (("\\| awk ") (string-append "| " (which "awk") " ")))
+             (let* ((scripts (find-files "." "\\.sh$"))
+                    (out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/bbmap"))
+                    (jni (string-append out "/lib/jni")))
+               (substitute* scripts
+                 (("\\$DIR\"\"docs") doc)
+                 (("^CP=.*")
+                  (string-append "CP=" out "/share/java/BBTools.jar\n"))
+                 (("^NATIVELIBDIR.*")
+                  (string-append "NATIVELIBDIR=" jni "\n"))
+                 (("CMD=\"java")
+                  (string-append "CMD=\"" (which "java"))))
+               (for-each (lambda (script) (install-file script bin)) scripts)
+
+               ;; Install JNI library
+               (install-file "jni/libbbtoolsjni.so" jni)
+
+               ;; Install documentation
+               (install-file "docs/readme.txt" doc)
+               (copy-recursively "docs/guides" doc))
+             #t)))
+       #:jdk ,openjdk11))
+    (inputs
+     `(("gawk" ,gawk)
+       ("java-eclipse-jdt-core" ,java-eclipse-jdt-core)
+       ("java-eclipse-jdt-compiler-apt" ,java-eclipse-jdt-compiler-apt)
+       ("java-openmpi" ,java-openmpi)))
+    (home-page "http://sourceforge.net/projects/bbmap/")
+    (synopsis "Aligner and other tools for short sequencing reads")
+    (description
+     "This package provides bioinformatic tools to align, deduplicate,
+reformat, filter and normalize DNA and RNA-seq data.  It includes the
+following tools: BBMap, a short read aligner for DNA and RNA-seq data; BBNorm,
+a kmer-based error-correction and normalization tool; Dedupe, a tool to
+simplify assemblies by removing duplicate or contained subsequences that share
+a target percent identity; Reformat, to convert reads between
+fasta/fastq/scarf/fasta+qual/sam, interleaved/paired, and ASCII-33/64, at over
+500 MB/s; and BBDuk, a tool to filter, trim, or mask reads with kmer matches
+to an artifact/contaminant file.")
+    (license license:bsd-3)))
+
 (define-public velvet
   (package
     (name "velvet")
@@ -14240,3 +14558,106 @@ repeated areas between contigs.")
      "Velocyto is a library for the analysis of RNA velocity.  Velocyto
 includes a command line tool and an analysis pipeline.")
     (license license:bsd-2)))
+
+(define-public arriba
+  (package
+    (name "arriba")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/suhrig/arriba/releases/"
+                           "download/v" version "/arriba_v" version ".tar.gz"))
+       (sha256
+        (base32
+         "0jx9656ry766vb8z08m1c3im87b0c82qpnjby9wz4kcz8vn87dx2"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; there are none
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((htslib (assoc-ref inputs "htslib")))
+               (substitute* "Makefile"
+                 (("-I\\$\\(HTSLIB\\)/htslib")
+                  (string-append "-I" htslib "/include/htslib"))
+                 ((" \\$\\(HTSLIB\\)/libhts.a")
+                  (string-append " " htslib "/lib/libhts.so"))))
+             (substitute* "run_arriba.sh"
+               (("^STAR ") (string-append (which "STAR") " "))
+               (("samtools --version-only")
+                (string-append (which "samtools") " --version-only"))
+               (("samtools index")
+                (string-append (which "samtools") " index"))
+               (("samtools sort")
+                (string-append (which "samtools") " sort")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+               (install-file "arriba" bin)
+               (install-file "run_arriba.sh" bin)
+               (install-file "draw_fusions.R" bin)
+               (wrap-program (string-append bin "/draw_fusions.R")
+                 `("R_LIBS_SITE" ":" prefix (,(getenv "R_LIBS_SITE")))))
+             #t)))))
+    (inputs
+     `(("htslib" ,htslib)
+       ("r-minimal" ,r-minimal)
+       ("r-circlize" ,r-circlize)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("samtools" ,samtools)
+       ("star" ,star)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/suhrig/arriba")
+    (synopsis "Gene fusion detection from RNA-Seq data ")
+    (description
+     "Arriba is a command-line tool for the detection of gene fusions from
+RNA-Seq data.  It was developed for the use in a clinical research setting.
+Therefore, short runtimes and high sensitivity were important design criteria.
+It is based on the fast STAR aligner and the post-alignment runtime is
+typically just around two minutes.  In contrast to many other fusion detection
+tools which build on STAR, Arriba does not require to reduce the
+@code{alignIntronMax} parameter of STAR to detect small deletions.")
+    ;; All code is under the Expat license with the exception of
+    ;; "draw_fusions.R", which is under GPLv3.
+    (license (list license:expat license:gpl3))))
+
+(define-public adapterremoval
+  (package
+    (name "adapterremoval")
+    (version "2.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/MikkelSchubert/adapterremoval.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1nf3ki5pfzalhrx2fr1y6pfqfi133yj2m7q4fj9irf5fb94bapwr"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list "COLOR_BUILD=no"
+                          (string-append "PREFIX="
+                                         (assoc-ref %outputs "out")))
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (home-page "https://adapterremoval.readthedocs.io/")
+    (synopsis "Rapid sequence adapter trimming, identification, and read merging")
+    (description
+     "This program searches for and removes remnant adapter sequences from
+@dfn{High-Throughput Sequencing} (HTS) data and (optionally) trims low quality
+bases from the 3' end of reads following adapter removal.  AdapterRemoval can
+analyze both single end and paired end data, and can be used to merge
+overlapping paired-ended reads into (longer) consensus sequences.
+Additionally, the AdapterRemoval may be used to recover a consensus adapter
+sequence for paired-ended data, for which this information is not available.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 7031ed8ea3..71b1756d3b 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -160,7 +160,7 @@ files and generates build instructions for the Ninja build system.")
 (define-public meson
   (package
     (name "meson")
-    (version "0.49.2")
+    (version "0.50.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/mesonbuild/meson/"
@@ -168,7 +168,7 @@ files and generates build instructions for the Ninja build system.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1z89f71r29laywx75bamjakybv9653wz0vd2l4xhvqy1dqr197zg"))))
+                "07q2wz23wjfk8z66mli1cc9as0ycjp5f39fd4awny82qv8nw86ra"))))
     (build-system python-build-system)
     (arguments
      `(;; FIXME: Tests require many additional inputs, a fix for the RUNPATH
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index cdbe25fe44..50bf3abcb9 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index 89f2ff2884..ae3db7b10b 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -76,7 +76,7 @@
 (define-public nss-certs
   (package
     (name "nss-certs")
-    (version "3.42.1")
+    (version "3.43")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -87,7 +87,7 @@
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1ihzqspvqjmysp1c15xxr7kqvj3zm9dqnanxhkaxyjgx71yv6z88"))))
+                "1jp27w4w9nj5pkzrbc1zqj6pa09h2yy7vhzyx5fvg1q86fvw22zk"))))
     (build-system gnu-build-system)
     (outputs '("out"))
     (native-inputs
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index f75dd61751..69fe278728 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -23,11 +23,12 @@
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2019 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -353,8 +354,8 @@ and it supports a very flexible form of test discovery.")
     (license license:lgpl3+)))
 
 (define-public go-gopkg.in-check.v1
-  (let ((commit "20d25e2804050c1cd24a7eea1e7a6447dd0e74ec")
-        (revision "0"))
+  (let ((commit "788fd78401277ebd861206a03c884797c6ec5541")
+        (revision "1"))
     (package
       (name "go-gopkg.in-check.v1")
       (version (git-version "0.0.0" revision commit))
@@ -366,10 +367,12 @@ and it supports a very flexible form of test discovery.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np"))))
+                  "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "gopkg.in/check.v1"))
+      (propagated-inputs
+       `(("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
       (synopsis "Rich testing extension for Go's testing package")
       (description
        "@code{check} is a rich testing extension for Go's testing package.")
@@ -530,6 +533,27 @@ for every Python test framework.  It supports nose, py.test, and unittest.")
 (define-public python2-parameterized
   (package-with-python2 python-parameterized))
 
+(define-public python-minimock
+  (package
+    (name "python-minimock")
+    (version "1.2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "MiniMock" version))
+       (sha256
+        (base32
+         "0k2sxb1ibnyg05iblz7zhbv825f1zk9906rab7883iqgvzmdzpsz"))))
+    (build-system python-build-system)
+    (home-page "https://pypi.org/project/MiniMock")
+    (synopsis "Simple Python library for using mock objects")
+    (description "MiniMock is a simple library for building mock objects with
+doctest.")
+    (license license:expat)))
+
+(define-public python2-minimock
+  (package-with-python2 python-minimock))
+
 (define-public python-mock
   (package
     (name "python-mock")
@@ -1981,14 +2005,13 @@ create data based on random numbers and yet remain repeatable.")
 (define-public python-nose-timer
   (package
     (name "python-nose-timer")
-    (version "0.7.3")
+    (version "0.7.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "nose-timer" version))
         (sha256
-          (base32
-            "0hfz5aqnhf493i9kyb6prm4zm8vx7wmfsyg3nvsnh24lzh2kwx44"))))
+          (base32 "04inck7l1sgkjbiinhifxk45wk2b3czbwh1x2a390hi183fq1q12"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-nose" ,python-nose)
@@ -2010,8 +2033,7 @@ create data based on random numbers and yet remain repeatable.")
        (method url-fetch)
        (uri (pypi-uri "freezegun" version))
        (sha256
-        (base32
-         "1nh0fzqjwg88n57k3qa8mxnmiwrr7lqyd5xvc96qn5g8zcxv8fg8"))))
+        (base32 "1nh0fzqjwg88n57k3qa8mxnmiwrr7lqyd5xvc96qn5g8zcxv8fg8"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-mock" ,python-mock)
@@ -2041,13 +2063,13 @@ time by mocking the datetime module.")
 (define-public python-flexmock
   (package
     (name "python-flexmock")
-    (version "0.10.2")
+    (version "0.10.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "flexmock" version))
               (sha256
                (base32
-                "0arc6njvs6i9v9hgvzk5m50296g7zy5m9d7pyb43vdsdgxrci5gy"))))
+                "031c624pdqm7cc0xh4yz5k69gqxn2bbrjz13s17684q5shn0ik21"))))
     (build-system python-build-system)
     (home-page "https://flexmock.readthedocs.org")
     (synopsis "Testing library for Python")
diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
index 7cac863f92..72403e1b11 100644
--- a/gnu/packages/cinnamon.scm
+++ b/gnu/packages/cinnamon.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index c8ec1381b7..7412b97aef 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2019 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
@@ -1782,14 +1782,16 @@ non-Windows systems without running the actual installer using wine.")
 (define-public google-brotli
   (package
     (name "google-brotli")
-    (version "1.0.4")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/google/brotli/archive/v"
-                                 version ".tar.gz"))
-             (sha256
-              (base32
-               "1hrpmz162k4x3xm6vmbpm443jlfr1kp536p8962y2dncy7gs6s12"))))
+    (version "1.0.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/google/brotli.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1811b55wdfg4kbsjcgh1kc938g118jpvif97ilgrmbls25dfpvvw"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index 83f5cd29af..bdf1576400 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -211,18 +211,15 @@ provers.")
              #t))
          (replace 'build
            (lambda _
-             (invoke "./remake")
-             #t))
+             (invoke "./remake")))
          (replace 'check
            (lambda _
-             (invoke "./remake" "check")
-             #t))
+             (invoke "./remake" "check")))
              ;; TODO: requires coq-gappa and coq-interval.
              ;(invoke "./remake" "check-more")
          (replace 'install
            (lambda _
-             (invoke "./remake" "install")
-             #t)))))
+             (invoke "./remake" "install"))))))
     (home-page "http://flocq.gforge.inria.fr/")
     (synopsis "Floating-point formalization for the Coq system")
     (description "Flocq (Floats for Coq) is a floating-point formalization for
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index eac6293fc9..5a3762fd7a 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -113,14 +113,14 @@ are not used.")
 (define-public r-sys
   (package
     (name "r-sys")
-    (version "3.0")
+    (version "3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sys" version))
        (sha256
         (base32
-         "1g0q1f56qmp3x5gja19qrmgk3j4d89yp16z1ziv1jn5p4dlmfpxh"))))
+         "0aj3wcyah3r7c9s3rbs0c8nifd4vqmkzg9fqkrb7f838ww0qw24q"))))
     (build-system r-build-system)
     (home-page "https://github.com/jeroen/sys")
     (synopsis "Powerful and reliable tools for running system commands in R")
@@ -317,14 +317,14 @@ such as copy/paste from an R session.")
 (define-public r-callr
   (package
     (name "r-callr")
-    (version "3.1.1")
+    (version "3.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "callr" version))
        (sha256
         (base32
-         "15l1qfa3aigba2ghgr2gwcjjy7anagrwg8khsd36fymwkmqj5g69"))))
+         "1s5h2k7c1vgbry90xczin66q89cbkc6mvh4679l5rsz83087pd2b"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-r6" ,r-r6)
@@ -340,14 +340,14 @@ that.")
 (define-public r-readxl
   (package
     (name "r-readxl")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "readxl" version))
        (sha256
         (base32
-         "1p7snd8lznyinp0nyg6bsqwn9alh3pnnj77bfg865ingdl1d2yc3"))))
+         "15mambxr8c7k2ikdfsl1w3vxvm54dsnk0cl1qvks6iig7rql3d14"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cellranger" ,r-cellranger)
@@ -394,21 +394,20 @@ into a pipeline of data manipulation and visualisation.")
 (define-public r-httpuv
   (package
     (name "r-httpuv")
-    (version "1.4.5.1")
+    (version "1.5.0")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "httpuv" version))
               (sha256
                (base32
-                "0mqd40jckdpkjw1jjd860cdwkb03l6dkh931maijfdaqr1w9hwvn"))))
+                "19m9514yj5sg0rz1zvi8w1z98srnrql4iirgr794fkaap6bs7i2f"))))
     (build-system r-build-system)
-    (native-inputs
-     `(("r-rcpp" ,r-rcpp)
-       ("pkg-config" ,pkg-config)))
     (propagated-inputs
      `(("r-bh" ,r-bh)
        ("r-later" ,r-later)
-       ("r-promises" ,r-promises)))
+       ("r-promises" ,r-promises)
+       ("r-r6" ,r-r6)
+       ("r-rcpp" ,r-rcpp)))
     (home-page "https://github.com/rstudio/httpuv")
     (synopsis "HTTP and WebSocket server library for R")
     (description
@@ -1082,14 +1081,14 @@ component analysis (with robust methods, and parallelized functions).")
 (define-public r-ape
   (package
     (name "r-ape")
-    (version "5.2")
+    (version "5.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ape" version))
        (sha256
         (base32
-         "05b4yka5cirdgxd4d7iiaqvr428pk3j6n9q6dvg5j38kdj2h5sr7"))))
+         "08wbk1kxhs32bmmvqlqanbdg1w235amd35k8m00fngsj9h9xzc08"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)
@@ -1138,13 +1137,13 @@ XML.  To learn more about the Abbyy OCR API, see @url{http://ocrsdk.com/}.")
 (define-public r-colorspace
   (package
     (name "r-colorspace")
-    (version "1.4-0")
+    (version "1.4-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "colorspace" version))
        (sha256
-        (base32 "0mpmvz2sycjp4c9y3v3qin7mdjy812hwi7cyjnblcw6xb1ckq06f"))))
+        (base32 "0wyny3ah2d74hqv80s6imrarpna09gq3j9rjnz6zx2qg0lx72gb9"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/colorspace")
     (synopsis "Color space manipulation")
@@ -1158,14 +1157,14 @@ colors are provided.")
 (define-public r-glue
   (package
     (name "r-glue")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "glue" version))
        (sha256
         (base32
-         "1vhw5497lpfr4m8lcx9bs0fgdp4ax0sycrk6n8yksp33qd25m7kq"))))
+         "1a1ycg9r3gd91visp49q49rsrdgyf8kr9dxdy3hk99kikn4z5hag"))))
     (build-system r-build-system)
     (home-page "https://github.com/tidyverse/glue")
     (synopsis "Interpreted string literals")
@@ -1272,14 +1271,14 @@ processes.  Most of its code is based on the @code{psutil} Python package.")
 (define-public r-pkgbuild
   (package
     (name "r-pkgbuild")
-    (version "1.0.2")
+    (version "1.0.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pkgbuild" version))
        (sha256
         (base32
-         "1i1rrax7x7r2bplig5cfc50lx85jc4n9a3qmvbdviaj22wr2lghs"))))
+         "0k8zwa66rm1ncx19ld5mbaxcjxkswiczpdqyssy44vl8k6scwfn9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-callr" ,r-callr)
@@ -1328,13 +1327,13 @@ you to rapidly iterate while developing a package.")
 (define-public r-rcpp
   (package
     (name "r-rcpp")
-    (version "1.0.0")
+    (version "1.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Rcpp" version))
        (sha256
-        (base32 "1hlbw4k79q9ich4w27b01gsvwrsnrflii8zjlcmgfzm1vpq8ndxp"))))
+        (base32 "015rmxns8mhmnd9wnz9bmma4iwx2sf4bcwkkp9hcgvdmblzf0vg7"))))
     (build-system r-build-system)
     (native-inputs
      `(("r-knitr" ,r-knitr))) ; for vignettes
@@ -1556,14 +1555,14 @@ rows, dropping names) to see if the modified versions are identical.")
 (define-public r-dendextend
   (package
     (name "r-dendextend")
-    (version "1.9.0")
+    (version "1.10.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "dendextend" version))
        (sha256
         (base32
-         "1jiani6zwfajky2vafvay2hq158nh99rdrk3j00lycspds9v35fd"))))
+         "091jznl549d44w1h8kk1vwddzhijkyh0wpgkykd494fnc8rzpw48"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-fpc" ,r-fpc)
@@ -1875,16 +1874,19 @@ provides an interactive R manager and worker environment.")
 (define-public r-lmoments
   (package
     (name "r-lmoments")
-    (version "1.2-3")
+    (version "1.3-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Lmoments" version))
        (sha256
         (base32
-         "13p0r4w16jvjnyjmkhkp3dwdfr1gap2l0k4k5jy41m8nc5fvcx79"))))
+         "0pc63bj9a8hzr5m3yssrc4kin39fffwkl8rggs3sagzr12d4i7bw"))))
     (properties `((upstream-name . "Lmoments")))
     (build-system r-build-system)
+    (propagated-inputs
+     `(("r-rcpp" ,r-rcpp)
+       ("r-rcpparmadillo" ,r-rcpparmadillo)))
     (home-page "http://www.tilastotiede.fi/juha_karvanen.html")
     (synopsis "L-moments and quantile mixtures")
     (description
@@ -2702,30 +2704,29 @@ provides a one-row summary of model-level statistics.")
 (define-public r-recipes
   (package
     (name "r-recipes")
-    (version "0.1.4")
+    (version "0.1.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "recipes" version))
        (sha256
         (base32
-         "0bwijw4427v2k5z3qci2kyr5dyzql8b3lvf88rwy16p741jckjsn"))))
+         "056zv4vhayyy8q9izcdknbb9hff2gxivg21g5mkssia78vw8g3mg"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-broom" ,r-broom)
-       ("r-ddalpha" ,r-ddalpha)
-       ("r-dimred" ,r-dimred)
-       ("r-dplyr" ,r-dplyr)
+     `(("r-dplyr" ,r-dplyr)
+       ("r-generics" ,r-generics)
+       ("r-glue" ,r-glue)
        ("r-gower" ,r-gower)
        ("r-ipred" ,r-ipred)
        ("r-lubridate" ,r-lubridate)
        ("r-magrittr" ,r-magrittr)
        ("r-matrix" ,r-matrix)
-       ("r-pls" ,r-pls)
        ("r-purrr" ,r-purrr)
        ("r-rcpproll" ,r-rcpproll)
        ("r-rlang" ,r-rlang)
        ("r-tibble" ,r-tibble)
+       ("r-tidyr" ,r-tidyr)
        ("r-tidyselect" ,r-tidyselect)
        ("r-timedate" ,r-timedate)
        ("r-withr" ,r-withr)))
@@ -2861,14 +2862,14 @@ with the package @code{optim}.")
 (define-public r-ordinal
   (package
     (name "r-ordinal")
-    (version "2018.8-25")
+    (version "2019.3-9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ordinal" version))
        (sha256
         (base32
-         "03cv9hcrw8j3lhamzhz8sk2p3ns4cw9z41x49h301k2b3pajv43h"))))
+         "0xsr2715ghh1q5hjnx7d8lyavzfvpi370blm1xdljn3p4kar8ldi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-mass" ,r-mass)
@@ -3400,14 +3401,14 @@ plots in @code{ggplot2}.")
 (define-public r-cli
   (package
     (name "r-cli")
-    (version "1.0.1")
+    (version "1.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "cli" version))
        (sha256
         (base32
-         "1r2yih4c0bdmbx0qrarlf0m1p5z30sri755zmdazsq2pw76zp07g"))))
+         "02hdwvdq5nic6dhxj88jbgsc9m8yrz3yibigg6szkggxyk6hzh2g"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-assertthat" ,r-assertthat)
@@ -3463,14 +3464,14 @@ constants, and control debugging of packages via environment variables.")
 (define-public r-processx
   (package
     (name "r-processx")
-    (version "3.2.1")
+    (version "3.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "processx" version))
        (sha256
         (base32
-         "1skjyi767avc3safajlj3ikk9lf11zzyjybdcmx8m9y59rf319ql"))))
+         "0ipdcl4080z92jdnd1w4hm4w484spxcrp6j5x9p76ksb401qdca1"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-ps" ,r-ps)
@@ -3695,14 +3696,14 @@ terminals.")
 (define-public r-tinytex
   (package
     (name "r-tinytex")
-    (version "0.10")
+    (version "0.11")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tinytex" version))
        (sha256
         (base32
-         "02bz8zaka5j51zin976n5nmk19a0390d0gwgj4zrbh48hl313rqm"))))
+         "017g0niwmx8qafsn9b01gp60j5fgwxch0dnkmjgpxxr1k4h1r64x"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-xfun" ,r-xfun)))
@@ -4167,14 +4168,14 @@ sample Robust Rank-Order Distributional Test.")
 (define-public r-expm
   (package
     (name "r-expm")
-    (version "0.999-3")
+    (version "0.999-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "expm" version))
        (sha256
         (base32
-         "04k4a6g071jkjc0d30ncmf713dj16brcs9m6pj43hnycc1caq6si"))))
+         "15k0acg2aqb2ajhwal6l7vhhp03m4lg579805d34554cl0kn9l2q"))))
     (build-system r-build-system)
     (propagated-inputs `(("r-matrix" ,r-matrix)))
     (native-inputs `(("gfortran" ,gfortran)))
@@ -4884,14 +4885,14 @@ misclassification probabilities of different models.")
 (define-public r-zip
   (package
     (name "r-zip")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "zip" version))
        (sha256
         (base32
-         "0a86x6a2cy0lkx98yljk9acb6q3ksz9y5acfaqnmbvnn77pibg86"))))
+         "0cchbzp2s2qz7r4n9qdwgfgik5xzr0dzxmj25r8435i85k86ysi1"))))
     (build-system r-build-system)
     (home-page "https://github.com/gaborcsardi/zip")
     (synopsis "Cross-platform Zip compression")
@@ -5811,27 +5812,51 @@ from the @code{stats} package, as well as numerous other model classes from
 other add-on packages.")
     (license license:expat)))
 
+(define-public r-insight
+  (package
+    (name "r-insight")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "insight" version))
+       (sha256
+        (base32
+         "0cy00j4m9r690hrjdmv8wzwn8mbnkjd3g527nvsmid64h9jgks5f"))))
+    (build-system r-build-system)
+    (home-page "https://easystats.github.io/insight/")
+    (synopsis "Easy access to model information for various model objects")
+    (description
+     "This package provides a tool to provide an easy, intuitive and
+consistent access to information contained in various R models, like model
+formulas, model terms, information about random effects, data that was used to
+fit the model or data from response variables.  The package mainly revolves
+around two types of functions: Functions that find (the names of) information,
+starting with @code{find_}, and functions that get the underlying data,
+starting with @code{get_}.  The package has a consistent syntax and works with
+many different model objects, where otherwise functions to access these
+information are missing.")
+    (license license:gpl3)))
+
 (define-public r-sjlabelled
   (package
     (name "r-sjlabelled")
-    (version "1.0.16")
+    (version "1.0.17")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjlabelled" version))
        (sha256
         (base32
-         "1zi1ncna16zl9hcy7mzara4kjxqkgwcw9ncp388ss353wwc9y2nc"))))
+         "00c0c22ynpihgf2bvmcfnkvqwqvxax2zzb7wldsmg2f7z5a32aa6"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-broom" ,r-broom)
-       ("r-dplyr" ,r-dplyr)
+     `(("r-dplyr" ,r-dplyr)
        ("r-haven" ,r-haven)
+       ("r-insight" ,r-insight)
        ("r-magrittr" ,r-magrittr)
-       ("r-prediction" ,r-prediction)
        ("r-purrr" ,r-purrr)
-       ("r-rlang" ,r-rlang)
-       ("r-snakecase" ,r-snakecase)))
+       ("r-rlang" ,r-rlang)))
     (home-page "https://github.com/strengejacke/sjlabelled")
     (synopsis "Labelled data utility functions")
     (description
@@ -5845,27 +5870,22 @@ vice versa), or to deal with multiple declared missing values.")
 (define-public r-sjmisc
   (package
     (name "r-sjmisc")
-    (version "2.7.7")
+    (version "2.7.9")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjmisc" version))
        (sha256
         (base32
-         "0xm9pmq17maivmjsygwx3bdjd71hf829qbx735hyxa69z9dhp24q"))))
+         "11iiap0w5v0dszgwx4pi3j1zf9vnlw1ml1wjvq1hg9iz1plgbfnc"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-broom" ,r-broom)
-       ("r-crayon" ,r-crayon)
-       ("r-dplyr" ,r-dplyr)
+     `(("r-dplyr" ,r-dplyr)
        ("r-haven" ,r-haven)
        ("r-magrittr" ,r-magrittr)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
-       ("r-sjlabelled" ,r-sjlabelled)
-       ("r-stringdist" ,r-stringdist)
-       ("r-stringr" ,r-stringr)
-       ("r-tidyr" ,r-tidyr)))
+       ("r-sjlabelled" ,r-sjlabelled)))
     (home-page "https://github.com/strengejacke/sjmisc")
     (synopsis "Data and variable transformation functions")
     (description
@@ -6056,14 +6076,14 @@ support for default values, positional argument support, etc.")
 (define-public r-findpython
   (package
     (name "r-findpython")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "findpython" version))
        (sha256
         (base32
-         "1zfcdcp4d48d2pzf5n59kqrfk2z9nnyzkx5j00gfmgfkadnv93x5"))))
+         "0icifm4z6hhpmcjrg75a875iph0ci890ss02kdv3725pijc236iy"))))
     (build-system r-build-system)
     (home-page "https://github.com/trevorld/findpython")
     (synopsis "Functions to find an acceptable Python binary")
@@ -6076,19 +6096,18 @@ matches version and feature constraints.")
 (define-public r-argparse
   (package
     (name "r-argparse")
-    (version "2.0.0")
+    (version "2.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "argparse" version))
        (sha256
         (base32
-         "1qrp7hc8sm6ryw0zws76al865ansig1xbx8ljxz4wabh60msrz3i"))))
+         "1as7h6z7kzgv0fqzpnp76qbm96b4jcd37azd58b7rz0l1n94764l"))))
     (build-system r-build-system)
     (inputs `(("python" ,python)))
     (propagated-inputs
      `(("r-findpython" ,r-findpython)
-       ("r-getopt" ,r-getopt)
        ("r-jsonlite" ,r-jsonlite)
        ("r-r6" ,r-r6)))
     (home-page "https://github.com/trevorld/argparse")
@@ -6253,19 +6272,18 @@ containing one or more SNPs that evolved under directional selection.")
 (define-public r-proc
   (package
     (name "r-proc")
-    (version "1.13.0")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "pROC" version))
        (sha256
         (base32
-         "0ain17clympkx09ym7gydylcd93096dxzqx1qzci310yq2l7fknm"))))
+         "0ki1pvj5iaki81crapvwqllg5avn5qlvv62axnsdkdcmv9xc3wg0"))))
     (properties `((upstream-name . "pROC")))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-ggplot2" ,r-ggplot2)
-       ("r-plyr" ,r-plyr)
+     `(("r-plyr" ,r-plyr)
        ("r-rcpp" ,r-rcpp)))
     (home-page "http://expasy.org/tools/pROC/")
     (synopsis "Display and analyze ROC curves")
@@ -7607,20 +7625,42 @@ comparisons of slopes.")
 Cohen (1988).")
     (license license:gpl3+)))
 
+(define-public r-libcoin
+  (package
+    (name "r-libcoin")
+    (version "1.0-4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "libcoin" version))
+       (sha256
+        (base32
+         "1i893ij9vkmc4y721npw1s3prmmcs2da5vf3ajm0j8ccmfhbmp4i"))))
+    (build-system r-build-system)
+    (propagated-inputs `(("r-mvtnorm" ,r-mvtnorm)))
+    (home-page "https://cran.r-project.org/web/packages/libcoin")
+    (synopsis "Linear test statistics for permutation inference")
+    (description
+     "This package provides basic infrastructure for linear test statistics
+and permutation inference in the framework of Strasser and Weber (1999).")
+    (license license:gpl2)))
+
 (define-public r-coin
   (package
     (name "r-coin")
-    (version "1.2-2")
+    (version "1.3-0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "coin" version))
        (sha256
         (base32
-         "1fq58793bymzig1syjg2lvn6hsxfwkhh00jfrchh3c0y7rfhc66m"))))
+         "1y0yl4mjaxca0jqz53sv1gcpdg89m099rq61iszxvpx7w0vvpkmd"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-modeltools" ,r-modeltools)
+     `(("r-libcoin" ,r-libcoin)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-modeltools" ,r-modeltools)
        ("r-multcomp" ,r-multcomp)
        ("r-mvtnorm" ,r-mvtnorm)
        ("r-survival" ,r-survival)))
@@ -7694,31 +7734,26 @@ detection, parallelism through BLAS and parallel user templates.")
 (define-public r-sjstats
   (package
     (name "r-sjstats")
-    (version "0.17.3")
+    (version "0.17.4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "sjstats" version))
        (sha256
         (base32
-         "02na2pzxp88yp52h7vs959fgydiddmns39m9x4i0vz8fp016bdf8"))))
+         "012hp9m17xzjnsfvjjz2wdfgxm3irsrfx0zmahfnfmgdrwxd5vk5"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-bayesplot" ,r-bayesplot)
-       ("r-broom" ,r-broom)
-       ("r-coin" ,r-coin)
-       ("r-crayon" ,r-crayon)
+     `(("r-broom" ,r-broom)
        ("r-dplyr" ,r-dplyr)
        ("r-emmeans" ,r-emmeans)
-       ("r-glmmtmb" ,r-glmmtmb)
+       ("r-insight" ,r-insight)
        ("r-lme4" ,r-lme4)
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
        ("r-matrix" ,r-matrix)
        ("r-modelr" ,r-modelr)
-       ("r-nlme" ,r-nlme)
        ("r-purrr" ,r-purrr)
-       ("r-pwr" ,r-pwr)
        ("r-rlang" ,r-rlang)
        ("r-sjlabelled" ,r-sjlabelled)
        ("r-sjmisc" ,r-sjmisc)
@@ -7772,30 +7807,25 @@ differentiation.")
 (define-public r-ggeffects
   (package
     (name "r-ggeffects")
-    (version "0.8.0")
+    (version "0.9.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ggeffects" version))
        (sha256
         (base32
-         "152xyadj5m171z7dlzzy40y1fp2l9v46525dlw2al3qr0b7zpm61"))))
+         "1bbr44yk1j8pz4kcbw1cqrzcnbih9n6rsgf96a6py5094qcal2qd"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-crayon" ,r-crayon)
-       ("r-dplyr" ,r-dplyr)
-       ("r-ggplot2" ,r-ggplot2)
-       ("r-lme4" ,r-lme4)
+     `(("r-dplyr" ,r-dplyr)
+       ("r-insight" ,r-insight)
        ("r-magrittr" ,r-magrittr)
        ("r-mass" ,r-mass)
-       ("r-prediction" ,r-prediction)
        ("r-purrr" ,r-purrr)
        ("r-rlang" ,r-rlang)
        ("r-scales" ,r-scales)
        ("r-sjlabelled" ,r-sjlabelled)
-       ("r-sjmisc" ,r-sjmisc)
-       ("r-sjstats" ,r-sjstats)
-       ("r-tidyr" ,r-tidyr)))
+       ("r-sjmisc" ,r-sjmisc)))
     (home-page "https://github.com/strengejacke/ggeffects")
     (synopsis "Create tidy data frames of marginal effects for ggplot")
     (description
@@ -7901,14 +7931,14 @@ back to file after modifications.")
 (define-public r-fs
   (package
     (name "r-fs")
-    (version "1.2.6")
+    (version "1.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "fs" version))
        (sha256
         (base32
-         "0kqqaqqml8x3r1mdld40iwns0ylj2f52qsdh1vcn39f7w7c2ka8j"))))
+         "03aq2ill03ladsa4438nrz213ks2mqhxsrb9fjsp62bhk36v8k1a"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
@@ -8445,14 +8475,14 @@ This package provides an R interface.")
 (define-public r-ncdf4
   (package
     (name "r-ncdf4")
-    (version "1.16")
+    (version "1.16.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "ncdf4" version))
        (sha256
         (base32
-         "0lwjjis0b83c4l3xvqai4ckzrskd6mychck1iwxcxgjvh0d77mgd"))))
+         "083sb24anyd4sw0il3x07pqn9rbx5y5ayqass6mz8x443rnjvphd"))))
     (build-system r-build-system)
     (inputs
      `(("netcdf" ,netcdf)
@@ -8492,14 +8522,14 @@ Bioconductor packages.")
 (define-public r-rgl
   (package
     (name "r-rgl")
-    (version "0.99.16")
+    (version "0.100.19")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "rgl" version))
        (sha256
         (base32
-         "0q8sg8fr0140ilssqhscaxkjc29w1rpp6f4k50amw3zzs9g58ak9"))))
+         "09bhvx8aq104yzysfgd7wlnq4vrvmnd4jzgj0c32whjfal10fqsh"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -8770,14 +8800,14 @@ parametrizations of Nolan.")
 (define-public r-gsl
   (package
     (name "r-gsl")
-    (version "1.9-10.3")
+    (version "2.1-5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gsl" version))
        (sha256
         (base32
-         "00isw2iha5af4s7rr8svqka9mkl9l26l8h2rnk4r7fkhh7fc97sg"))))
+         "18kzgwmyfqg570gn2b33fm6mj87fiaa4a3bx954yrj8iq28im71v"))))
     (build-system r-build-system)
     (inputs
      `(("gsl" ,gsl)))
@@ -9707,14 +9737,14 @@ and manipulating sets of ontological terms.")
 (define-public r-gmp
   (package
     (name "r-gmp")
-    (version "0.5-13.4")
+    (version "0.5-13.5")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gmp" version))
        (sha256
         (base32
-         "15jifzwbzqcnq2apzvsylkx4k9lillkgblm4wf4wb7y31ys0amph"))))
+         "042mzsl6z6s61fy5m21yf9q83l08vnyqljn4iax7kqyiycpsp0gn"))))
     (build-system r-build-system)
     (arguments
      '(#:phases
@@ -10198,14 +10228,14 @@ This makes it a convenient and fast interface to C/C++ and Fortran code.")
 (define-public r-spam
   (package
     (name "r-spam")
-    (version "2.2-1")
+    (version "2.2-2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "spam" version))
        (sha256
         (base32
-         "04bfwwna013hrbl4k6w1cdiz5bkc83jlasivriyn5l9gkj2qskr2"))))
+         "024dgfnjfxvsiymbzrhadinamj6qy509f4sbd1zxql8ymkyxn7vi"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-dotcall64" ,r-dotcall64)))
@@ -10583,14 +10613,14 @@ regression coefficients can be conducted via jackknifing.")
 (define-public r-huge
   (package
     (name "r-huge")
-    (version "1.3.0")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "huge" version))
        (sha256
         (base32
-         "18psr7arynax38hcc5y9dxskhsg4a5zjw3hjbgf96zy59wdib5ch"))))
+         "06s22i2cdn6g2r8kq5csyspinayh8dxxg9gkwcf4sa1lmrgb0bf9"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-igraph" ,r-igraph)
@@ -10636,14 +10666,14 @@ lasso, adaptive lasso and Ridge regression based on cross-validation.")
 (define-public r-mcmc
   (package
     (name "r-mcmc")
-    (version "0.9-5")
+    (version "0.9-6")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mcmc" version))
        (sha256
         (base32
-         "1i3rahph8pbhi5dsyjnkazqklg4lhh3azlyvx4kvabx50q0awxn6"))))
+         "1fc6a6asn53lx7x7pnlb5mb716nv4pcmbp99f1i30y4hzygihfj4"))))
     (build-system r-build-system)
     (home-page "http://www.stat.umn.edu/geyer/mcmc/")
     (synopsis "Markov chain Monte Carlo")
@@ -10707,14 +10737,14 @@ them in distributed compute environments.")
 (define-public r-future
   (package
     (name "r-future")
-    (version "1.11.1.1")
+    (version "1.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "future" version))
        (sha256
         (base32
-         "1s4lyqg4mm1drzc6czaalmhmxfjgp4nznb14ql5xzny9rprgz43i"))))
+         "12hq7hsfydlscwrb37ns9a8561bzpsp82nn7jrcyj0ydk610nipm"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-digest" ,r-digest)
@@ -11129,14 +11159,14 @@ such software by imputing dropout events.")
 (define-public r-gamlss-dist
   (package
     (name "r-gamlss-dist")
-    (version "5.1-1")
+    (version "5.1-3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "gamlss.dist" version))
        (sha256
         (base32
-         "1cd0vl9klcb849i8xwyjm8ihb1da92631j1rxdbnflgffkzrkya4"))))
+         "0154pm1f3g77krj0gxh9icz207pshdrxihb6gjv1k5aph8y69zc7"))))
     (properties `((upstream-name . "gamlss.dist")))
     (build-system r-build-system)
     (propagated-inputs `(("r-mass" ,r-mass)))
@@ -11338,18 +11368,17 @@ them (Anscombe-Glynn, D'Agostino, Bonett-Seier).")
 (define-public r-msir
   (package
     (name "r-msir")
-    (version "1.3.1")
+    (version "1.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "msir" version))
        (sha256
         (base32
-         "1ipzgdffsqly3dp91pw7yp3h5cwn08l9qsj7cdmrykd42jc98950"))))
+         "0pvc3q162vqq3k39nni732x05zzfz4y9y2zf56d83185ypszv9kb"))))
     (build-system r-build-system)
     (propagated-inputs
-     `(("r-mclust" ,r-mclust)
-       ("r-rgl" ,r-rgl)))
+     `(("r-mclust" ,r-mclust)))
     (home-page "https://cran.r-project.org/web/packages/msir")
     (synopsis "Model-based sliced inverse regression")
     (description
@@ -11739,3 +11768,58 @@ R, enabling interactive analysis and visualization of genome-scale data.")
      "This package provides wrappers on @code{regexpr} and @code{gregexpr} to
 return the match results in tidy data frames.")
     (license license:expat)))
+
+(define-public r-picante
+  (package
+    (name "r-picante")
+    (version "1.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "picante" version))
+       (sha256
+        (base32
+         "1bcq2j7fs89c2jib68qq6la67rxyg9raryf162mwvjakpf6k19l1"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ape" ,r-ape)
+       ("r-nlme" ,r-nlme)
+       ("r-vegan" ,r-vegan)))
+    (home-page "https://cran.r-project.org/web/packages/picante/")
+    (synopsis "Integrating phylogenies and ecology")
+    (description
+     "This package provides functions for phylocom integration, community
+analyses, null-models, traits and evolution.  It implements numerous
+ecophylogenetic approaches including measures of community phylogenetic and
+trait diversity, phylogenetic signal, estimation of trait values for
+unobserved taxa, null models for community and phylogeny randomizations, and
+utility functions for data input/output and phylogeny plotting.  A full
+description of package functionality and methods are provided by Kembel et
+al. (2010).")
+    (license license:gpl2)))
+
+(define-public r-reinforcelearn
+  (package
+    (name "r-reinforcelearn")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "reinforcelearn" version))
+       (sha256
+        (base32
+         "0naakmyb14d2cf7cy5ir52qh3bp51gvs6hyhfi3f72yl2jfnnpzg"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-checkmate" ,r-checkmate)
+       ("r-nnet" ,r-nnet)
+       ("r-purrr" ,r-purrr)
+       ("r-r6" ,r-r6)))
+    (home-page "https://markusdumke.github.io/reinforcelearn")
+    (synopsis "Reinforcement learning")
+    (description
+     "This package implements reinforcement learning environments and
+algorithms as described in Sutton & Barto (1998).  The Q-Learning algorithm
+can be used with function approximation, eligibility traces (Singh & Sutton,
+1996) and experience replay (Mnih et al., 2013).")
+    (license license:expat)))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index cfd1df123d..38e556469a 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@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>
@@ -647,7 +647,7 @@ data on your platform, so the seed itself will be as random as possible.
 (define-public libb2
   (package
     (name "libb2")
-    (version "0.98")
+    (version "0.98.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -655,7 +655,7 @@ data on your platform, so the seed itself will be as random as possible.
                     version "/libb2-" version ".tar.gz"))
               (sha256
                (base32
-                "0vq39cvwy05754l565xl11rqr2jvjb6ykjzca886vi9vm71y0sg8"))))
+                "0bn7yrzdixdvzm46shbhpkqbr6zyqyxiqn7a7x54ag3mrvfnyqjk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 047f9033ad..d8458f98d5 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
@@ -51,12 +51,13 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix utils)
-  #:use-module (srfi srfi-1))
+  #:use-module (srfi srfi-1)
+  #:use-module (ice-9 match))
 
 (define-public cups-filters
   (package
     (name "cups-filters")
-    (version "1.22.1")
+    (version "1.22.2")
     (source(origin
               (method url-fetch)
               (uri
@@ -64,7 +65,7 @@
                               "cups-filters-" version ".tar.xz"))
               (sha256
                (base32
-                "08szgpmac7xlf6vqkvg3pbphnrk2mal3gy382q2y3cm7k4plys3y"))
+                "06gy3wv6p7kswz3mjn17f17mqpadvqj2riwc42kksnvp8x0h08cw"))
               (modules '((guix build utils)))
               (snippet
                ;; install backends, banners and filters to cups-filters output
@@ -185,7 +186,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
 (define-public cups-minimal
   (package
     (name "cups-minimal")
-    (version "2.2.10")
+    (version "2.2.11")
     (source
      (origin
        (method url-fetch)
@@ -193,7 +194,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
                            version "/cups-" version "-source.tar.gz"))
        (sha256
         (base32
-         "1fq52aw1mini3ld2czv5gg37wbbvh4n7yc7wzzxvbs3zpfrv5j3p"))))
+         "0v5p10lyv8wv48s8ghkhjmdrxg6iwj8hn36v1ilkz46n7y0i107m"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -429,12 +430,26 @@ should only be used as part of the Guix cups-pk-helper service.")
               (patches (search-patches "hplip-remove-imageprocessor.patch"))
               (snippet
                '(begin
-                  ;; Delete non-free blobs
-                  (for-each delete-file (find-files "." "\\.so$"))
+                  ;; Delete non-free blobs: .so files, pre-compiled
+                  ;; 'locatedriver' executable, etc.
+                  (for-each delete-file
+                            (find-files "."
+                                        (lambda (file stat)
+                                          (elf-file? file))))
                   (delete-file "prnt/hpcups/ImageProcessor.h")
+
                   ;; Fix type mismatch.
                   (substitute* "prnt/hpcups/genPCLm.cpp"
                     (("boolean") "bool"))
+
+                  ;; Install binaries under libexec/hplip instead of
+                  ;; share/hplip; that'll at least ensure they get stripped.
+                  ;; It's not even clear that they're of any use though...
+                  (substitute* "Makefile.in"
+                    (("^dat2drvdir =.*")
+                     "dat2drvdir = $(pkglibexecdir)\n")
+                    (("^locatedriverdir =.*")
+                     "locatedriverdir = $(pkglibexecdir)\n"))
                   #t))))
     (build-system gnu-build-system)
     (home-page "https://developers.hp.com/hp-linux-imaging-and-printing")
@@ -556,10 +571,19 @@ should only be used as part of the Guix cups-pk-helper service.")
     (arguments
       (substitute-keyword-arguments (package-arguments hplip)
         ((#:configure-flags cf)
-         `(delete "--enable-qt5" ,cf))))
-    (inputs
-     (fold alist-delete (package-inputs hplip)
-           '("python-pygobject" "python-pyqt")))
+         ;; Produce a "light build", meaning that only the printer (CUPS) and
+         ;; scanner (SANE) support gets built, without all the 'hp-*'
+         ;; command-line tools.
+         `(cons "--enable-lite-build"
+                (delete "--enable-qt5" ,cf)))
+        ((#:phases phases)
+         ;; The 'wrap-binaries' is not needed here since the 'hp-*' programs
+         ;; are not installed.
+         `(alist-delete 'wrap-binaries ,phases))))
+    (inputs (remove (match-lambda
+                      ((label . _)
+                       (string-prefix? "python" label)))
+                    (package-inputs hplip)))
     (synopsis "GUI-less version of hplip")))
 
 (define-public foomatic-filters
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 1158336ff3..276fe5c41b 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -48,6 +48,24 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
 
+;; XXX A hidden special obsolete libssh2 for temporary use in the curl package.
+;; <https://bugs.gnu.org/34927>
+(define-public libssh2-1.8.0
+  (hidden-package
+    (package
+      (inherit libssh2)
+      (version "1.8.0")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append
+                      "https://www.libssh2.org/download/libssh2-"
+                      version ".tar.gz"))
+                (sha256
+                 (base32
+                  "1m3n8spv79qhjq4yi0wgly5s5rc8783jb1pyra9bkx1md0plxwrr"))
+                (patches
+                 (search-patches "libssh2-fix-build-failure-with-gcrypt.patch")))))))
+
 (define-public curl
   (package
    (name "curl")
@@ -65,7 +83,11 @@
    (inputs `(("gnutls" ,gnutls)
              ("gss" ,gss)
              ("libidn" ,libidn)
-             ("libssh2" ,libssh2)
+             ;; TODO XXX <https://bugs.gnu.org/34927>
+             ;; Curl doesn't actually use or refer to libssh2 because the build
+             ;; is not configured with '--with-libssh2'.  Remove this input when
+             ;; a mass rebuild is appropriate (e.g. core-updates).
+             ("libssh2" ,libssh2-1.8.0)
              ("openldap" ,openldap)
              ("nghttp2" ,nghttp2 "lib")
              ("zlib" ,zlib)))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 76ab9e3fa8..71e7c1b938 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
@@ -28,7 +28,7 @@
 ;;; Copyright © 2017, 2018 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
 ;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
@@ -1031,14 +1031,14 @@ changes.")
 (define-public tdb
   (package
     (name "tdb")
-    (version "1.3.18")
+    (version "1.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1drnsdh1w0px35r0y7l7g59yvyr67mvcsdrli4wab0mwi07b8mn1"))))
+                "0d9d2f1c83gmmq30bkfs50yb8399mr9xjjzscma4kyq0ajf75861"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -2611,6 +2611,7 @@ transforms idiomatic python function calls to well-formed SQL queries.")
        #:modules ((srfi srfi-1)
                   (guix build go-build-system)
                   (guix build utils))
+       #:install-source? #f
        #:phases
        (let ((all-tools
               '("bsondump" "mongodump" "mongoexport" "mongofiles"
@@ -2630,8 +2631,6 @@ transforms idiomatic python function calls to well-formed SQL queries.")
                  (("skipping restore of system.profile collection\", db)")
                   "skipping restore of system.profile collection\")"))
                #t))
-           ;; We don't need to install the source code for end-user applications
-           (delete 'install-source)
            (replace 'build
              (lambda _
                (for-each (lambda (tool)
@@ -2711,7 +2710,7 @@ Monitor read/write activity on a mongo server
 (define-public apache-arrow
   (package
     (name "apache-arrow")
-    (version "0.7.0")
+    (version "0.10.0")
     (source
       (origin
         (method git-fetch)
@@ -2720,8 +2719,8 @@ Monitor read/write activity on a mongo server
                (commit (string-append "apache-arrow-" version))))
         (file-name (git-file-name name version))
         (sha256
-          (base32
-            "1x7sdd8lbs3nfqjql1pcgbkjc19bls56zmgjayshkmablvlc4dy3"))))
+         (base32
+          "04xkp922b8qrrnpvv9ixxnvk7151n1plzx6aqdff6frn9651zvxs"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f
@@ -2765,9 +2764,7 @@ Monitor read/write activity on a mongo server
        ("rapidjson" ,rapidjson)
        ("brotli" ,google-brotli)
        ("flatbuffers" ,flatbuffers)
-       ;; Arrow is not yet compatible with jemalloc >= 5:
-       ;; https://issues.apache.org/jira/browse/ARROW-1141
-       ("jemalloc" ,jemalloc-4.5.0)
+       ("jemalloc" ,jemalloc)
        ("python-3" ,python)
        ("python-numpy" ,python-numpy)))
     (home-page "https://arrow.apache.org/")
@@ -2782,7 +2779,7 @@ algorithm implementations.")
 (define-public python-pyarrow
   (package
     (name "python-pyarrow")
-    (version "0.7.0")
+    (version "0.10.0")
     (source
       (origin
        (method git-fetch)
@@ -2791,14 +2788,14 @@ algorithm implementations.")
              (commit (string-append "apache-arrow-" version))))
        (file-name (git-file-name name version))
        (sha256
-         (base32
-           "1x7sdd8lbs3nfqjql1pcgbkjc19bls56zmgjayshkmablvlc4dy3"))))
+        (base32
+         "04xkp922b8qrrnpvv9ixxnvk7151n1plzx6aqdff6frn9651zvxs"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f ; XXX Test failures related to missing libhdfs, libhdfs3,
-                   ; and "Unsupported numpy type 22".
+     '(#:tests? #f ; XXX There are no tests in the "python" directory
        #:phases
        (modify-phases %standard-phases
+         (delete 'build) ; XXX the build is performed again during the install phase
          (add-after 'unpack 'enter-source-directory
            (lambda _ (chdir "python") #t))
          (add-after 'unpack 'set-env
@@ -2814,6 +2811,7 @@ algorithm implementations.")
      `(("cmake" ,cmake)
        ("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)
+       ("python-pytest-runner" ,python-pytest-runner)
        ("python-setuptools-scm" ,python-setuptools-scm)))
     (home-page "https://arrow.apache.org/docs/python/")
     (synopsis "Python bindings for Apache Arrow")
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index ef4ddc9cbb..49e40ee9cd 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -32,11 +32,13 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages code)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pretty-print)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages virtualization)
   #:use-module (ice-9 match)
@@ -355,13 +357,38 @@ input.  Zzuf's behaviour is deterministic, making it easy to reproduce bugs.")
         (base32
          "17p8sh0rj8yqz36ria5bp48c8523zzw3y9g8sbm2jwq7sc27i7s9"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--enable-gui")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'hardcode-python
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "gui/GameConqueror.py"
+               (("/usr/bin/env python")
+                (string-append (assoc-ref %build-inputs
+                                          "python-wrapper") "/bin/python")))
+             #t))
+         (add-after 'install 'wrap-gameconqueror
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out               (assoc-ref outputs "out"))
+                   (gi-typelib-path   (getenv "GI_TYPELIB_PATH"))
+                   (python-path       (getenv "PYTHONPATH")))
+               (wrap-program (string-append out "/share/gameconqueror/GameConqueror.py")
+                 `("GI_TYPELIB_PATH"        ":" prefix (,gi-typelib-path))
+                 `("PYTHONPATH"             ":" prefix (,python-path))))
+             #t)))))
     (native-inputs
      `(("libtool" ,libtool)
+       ("python-wrapper" ,python-wrapper)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+" ,gtk+)
        ("intltool" ,intltool)
        ("automake" ,automake)
        ("autoconf" ,autoconf)))
     (inputs
      `(("readline" ,readline)))
+    (propagated-inputs
+     `(("python-pygobject" ,python-pygobject)))
     (home-page "https://github.com/scanmem/scanmem")
     (synopsis "Memory scanner")
     (description "Scanmem is a debugging utility designed to isolate the
diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm
index 9bb81621d9..8fd29d533a 100644
--- a/gnu/packages/django.scm
+++ b/gnu/packages/django.scm
@@ -1,8 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
 ;;;
@@ -740,16 +740,17 @@ the order of added relations.")
 (define-public python-django-appconf
   (package
     (name "python-django-appconf")
-    (version "1.0.2")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "django-appconf" version))
               (sha256
                (base32
-                "0qdjdx35g66xjsc50v0c5h3kg6njs8df33mbjx6j4k1vd3m9lkba"))))
+                "1qw0p9qh78bvkgi38ba58djwn0rd5j1lrkg2c2wk5wb7snj3rw9m"))))
     (build-system python-build-system)
     (propagated-inputs
-     `(("python-django" ,python-django)))
+     `(("python-django" ,python-django)
+       ("python-six" ,python-six)))
     (home-page "https://github.com/django-compressor/django-appconf")
     (synopsis "Handle configuration defaults of packaged Django apps")
     (description
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 656c1f9d70..461d9f8c0c 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
@@ -146,7 +146,8 @@ and BOOTP/TFTP for network booting of diskless machines.")
                 "/share/man/man1/dig.1"
                 "/share/man/man1/host.1"
                 "/share/man/man1/nslookup.1"
-                "/share/man/man1/nsupdate.1"))))
+                "/share/man/man1/nsupdate.1"))
+             #t))
          ;; When and if guix provides user namespaces for the build process,
          ;; then the following can be uncommented and the subsequent "force-test"
          ;; will not be necessary.
@@ -156,8 +157,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
          ;;          (system "bin/tests/system/ifconfig.sh up")))
          (replace 'check
            (lambda _
-             (invoke "make" "force-test")
-             #t)))))
+             (invoke "make" "force-test"))))))
     (synopsis "An implementation of the Domain Name System")
     (description "BIND is an implementation of the @dfn{Domain Name System}
 (DNS) protocols for the Internet.  It is a reference implementation of those
@@ -364,14 +364,14 @@ to result in system-wide compromise.")
 (define-public unbound
   (package
     (name "unbound")
-    (version "1.9.0")
+    (version "1.9.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.unbound.net/downloads/unbound-"
                            version ".tar.gz"))
        (sha256
-        (base32 "05xrb8havr2vgjsdy7n85kgnvk1mg7qwhjp4a8n6pg4jhd5zjnj1"))))
+        (base32 "1iarvk0i92asvrkpla9z55aan20k6pklzpck9yk4rfnchsdvzh63"))))
     (build-system gnu-build-system)
     (outputs '("out" "python"))
     (native-inputs
@@ -569,14 +569,16 @@ Extensions} (DNSSEC).")
 (define-public knot
   (package
     (name "knot")
-    (version "2.7.6")
+    (version "2.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://secure.nic.cz/files/knot-dns/"
                                   "knot-" version ".tar.xz"))
               (sha256
                (base32
-                "18lpyq3vgr2ainmfiy14x7hcf1zxza66bhkpr54jaz2gy1viijx1"))
+                "1vw7xx7bm440jwrpvdd04vrp6ccz2b11swcn9msvs62hf0kdjjj9"))
+              (patches
+               (search-patches "knot-include-system-lmdb-header.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 7cb8f96258..88fc7fc6ec 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -43,7 +43,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization))
 
-(define %docker-version "18.09.2")
+(define %docker-version "18.09.3")
 
 (define-public python-docker-py
   (package
@@ -162,7 +162,7 @@ Python without keeping their credentials in a Docker configuration file.")
 (define-public containerd
   (package
     (name "containerd")
-    (version "1.2.4")
+    (version "1.2.5")
     (source
      (origin
       (method git-fetch)
@@ -171,7 +171,7 @@ Python without keeping their credentials in a Docker configuration file.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32 "1rw7f0y3iv0mapxid1rgpns80dcy8nhgmxmw27x8qzrzic5viivy"))))
+       (base32 "0npbzixf3c0jvzm159vygvkydrr8h36c9sq50yv0mdinrys2bvg0"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/containerd/containerd"
@@ -239,8 +239,7 @@ network attachments.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32
-        "1zfpk2n8j6gnwbrxrh6d6pj24y60dhbanpf55shrm2yxz54ka36c"))
+       (base32 "06yr5xwr181lalh8z1lk07nxlp7hn38aq8cyqjk617dfy4lz0ixx"))
       (patches
        (search-patches "docker-engine-test-noinstall.patch"
                        "docker-fix-tests.patch"))))
@@ -249,9 +248,11 @@ network attachments.")
      `(#:modules
        ((guix build gnu-build-system)
         ((guix build go-build-system) #:prefix go:)
+        (guix build union)
         (guix build utils))
        #:imported-modules
        (,@%gnu-build-system-modules
+        (guix build union)
         (guix build go-build-system))
        #:phases
        (modify-phases %standard-phases
@@ -412,8 +413,8 @@ network attachments.")
              ;; Make build faster
              (setenv "GOCACHE" "/tmp")
              #t))
-         (add-before 'build 'setup-environment
-           (assoc-ref go:%standard-phases 'setup-environment))
+         (add-before 'build 'setup-go-environment
+           (assoc-ref go:%standard-phases 'setup-go-environment))
          (replace 'build
            (lambda _
              ;; Our LD doesn't like the statically linked relocatable things
@@ -483,8 +484,7 @@ provisioning etc.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
-       (base32
-        "0jzcqh1kqbfyj6ax7z67gihaqgjiz6ddz6rq6k458l68v7zn77r8"))))
+       (base32 "09j1i668p330gjz5vw5pss8ghxh1mz7rl2q9ykp02q9p112zhy4j"))))
     (build-system go-build-system)
     (arguments
      `(#:import-path "github.com/docker/cli"
diff --git a/gnu/packages/easyrpg.scm b/gnu/packages/easyrpg.scm
index 05fd2b11a0..046b9dfb92 100644
--- a/gnu/packages/easyrpg.scm
+++ b/gnu/packages/easyrpg.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,7 +39,7 @@
 (define-public liblcf
   (package
     (name "liblcf")
-    (version "0.5.4")
+    (version "0.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -46,7 +47,7 @@
                     "/liblcf-" version ".tar.gz"))
               (sha256
                (base32
-                "1k99bcw5c23801jk3mbz5sj5h18x46w1qxrkknhwhfgqzpvxhwrs"))))
+                "0dcw9l800314f5c29mqrcg64rkcb6cwqjfnpvwsmvc2l2q5hwlag"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -74,7 +75,7 @@ It can read and write LCF and XML files.")
 (define-public easyrpg-player
   (package
     (name "easyrpg-player")
-    (version "0.5.4")
+    (version "0.6.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -82,7 +83,7 @@ It can read and write LCF and XML files.")
                     "/easyrpg-player-" version ".tar.gz"))
               (sha256
                (base32
-                "0w0idr61slg5828j1q31c1kh1h0ryp8psc006y06jph5pp3qgm48"))))
+                "0zdzp64sshjdl943jklsvzwzzja1fnapslvbd7xss51ym9ra4r6k"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index c54005ccf9..4b93cd1023 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -52,6 +52,7 @@
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (srfi srfi-1))
 
@@ -304,3 +305,68 @@ science for high school or college students.
 This package provides a @command{snap} executable calling @command{xdg-open}
 to open the application in a web browser, for offline usage.")
     (license license:agpl3+)))
+
+(define-public toutenclic
+  (package
+    (name "toutenclic")
+    (version "6.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.bipede.fr/downloads/logiciels/"
+                           "ToutEnClic-" version ".tar.xz"))
+       (sha256
+        (base32 "1pjprdzc4bn7ckbg4469691ph6yjjr8f022hb4gi4lacs4h71wnd"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'build)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share/toutenclic"))
+                    (pixmaps (string-append out "/share/pixmaps"))
+                    (bin (string-append out "/bin"))
+                    (executable "toutenclic.py"))
+               ;; Install icon.
+               (install-file "toutenclic.png" pixmaps)
+               ;; Move files into "share/" directory.
+               (mkdir-p share)
+               (copy-recursively "." share)
+               ;; Create executable in "bin/".
+               (mkdir-p bin)
+               (with-directory-excursion bin
+                 (symlink (string-append share "/" executable)
+                          executable)))
+             #t))
+         (add-after 'install 'create-desktop-file
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (applications (string-append out "/share/applications")))
+               (mkdir-p applications)
+               (call-with-output-file
+                   (string-append applications "/toutenclic.desktop")
+                 (lambda (file)
+                   (format file
+                           "[Desktop Entry]~@
+                            Name=ToutEnClic~@
+                            Comment=For schooling without difference~@
+                            Exec=~a/bin/toutenclic.py~@
+                            TryExec=~@*~a/bin/toutenclic.py~@
+                            Terminal=false~@
+                            Icon=toutenclic~@
+                            Type=Application~%"
+                           out)))
+               #t))))))
+    (inputs `(("python-pyqt" ,python-pyqt)))
+    (synopsis "School tools for physically disabled children")
+    (description "ToutEnClic is intended to facilitate the schooling
+of physically disabled children in ordinary schools.  It is both
+a multi-page virtual exercise book and a kit including pencil,
+scissors, glue, ruler, compass, protractor and square.  A virtual
+keyboard is also available if the child does not have any other
+specialized device.")
+    (home-page "https://bipede.fr/contrib/")
+    (license license:gpl3)))
diff --git a/gnu/packages/electronics.scm b/gnu/packages/electronics.scm
index bc30e619ec..2261cb9fda 100644
--- a/gnu/packages/electronics.scm
+++ b/gnu/packages/electronics.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -102,7 +102,7 @@ to take care of the OS-specific details when writing software that uses serial p
 (define-public sigrok-firmware-fx2lafw
   (package
     (name "sigrok-firmware-fx2lafw")
-    (version "0.1.5")
+    (version "0.1.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -110,7 +110,7 @@ to take care of the OS-specific details when writing software that uses serial p
                     "sigrok-firmware-fx2lafw-" version ".tar.gz"))
               (sha256
                (base32
-                "0bbdgy4rpc00jl0l0744m2ibjlqi26bhrkjr7vplivdsjdmhjx6a"))))
+                "18x5zj3xbcylvb651dia6n4zxbdnv0j62r5af60d0l2g68knkjg4"))))
     (native-inputs
      `(("sdcc" ,sdcc)))
     (build-system gnu-build-system)
diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm
index e154a2b2c1..9763c7a22b 100644
--- a/gnu/packages/elixir.scm
+++ b/gnu/packages/elixir.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 nee <nee.git@cock.li>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2018 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,7 +33,7 @@
 (define-public elixir
   (package
     (name "elixir")
-    (version "1.6.6")
+    (version "1.8.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/elixir-lang/elixir"
@@ -41,7 +41,8 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0c9qz5hasa59a9x1iwpcqpqj6wdbzpijfxqfmzimwj5z8q37nl3l"))))
+                "08lq5p82pnicd49gsj6r2zsbg35wrk6098nrrjb28fcrm5p6736y"))
+	      (patches (search-patches "elixir-path-length.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -84,7 +85,7 @@
     (inputs
      `(("erlang" ,erlang)
        ("git" ,git)))
-    (home-page "http://elixir-lang.org/")
+    (home-page "https://elixir-lang.org/")
     (synopsis "Elixir programming language")
     (description "Elixir is a dynamic, functional language used to build
 scalable and maintainable applications.  Elixir leverages the Erlang VM, known
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e998ded897..0f040b2b07 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
@@ -29,14 +29,14 @@
 ;;; Copyright © 2017, 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
-;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2018, 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
@@ -97,6 +97,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages music)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages w3m)
@@ -252,166 +253,143 @@ on stdout instead of using a socket as the Emacsclient does.")
     (license license:gpl3+)))
 
 (define-public emacs-magit
-  (package
-    (name "emacs-magit")
-    (version "2.90.1")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/magit/magit")
-                    (commit (string-append "v" version))))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("texinfo" ,texinfo)
-                     ("emacs" ,emacs-minimal)))
-    (inputs
-     `(("git" ,git)
-       ("perl" ,perl)))
-    (propagated-inputs
-     `(("dash" ,emacs-dash)
-       ("ghub" ,emacs-ghub)
-       ("graphql" ,emacs-graphql)
-       ("treepy" ,emacs-treepy)
-       ("magit-popup" ,emacs-magit-popup)
-       ("with-editor" ,emacs-with-editor)))
-    (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (guix build emacs-utils))
-       #:imported-modules (,@%gnu-build-system-modules
-                           (guix build emacs-utils))
-       #:test-target "test"
-       #:tests? #f               ; tests are not included in the release
-
-       #:make-flags
-       (list (string-append "PREFIX=" %output)
-             ;; Don't put .el files in a sub-directory.
-             (string-append "lispdir=" %output "/share/emacs/site-lisp")
-             (string-append "DASH_DIR="
-                            (assoc-ref %build-inputs "dash")
-                            "/share/emacs/site-lisp/guix.d/dash-"
-                            ,(package-version emacs-dash))
-             (string-append "GHUB_DIR="
-                            (assoc-ref %build-inputs "ghub")
-                            "/share/emacs/site-lisp/guix.d/ghub-"
-                            ,(package-version emacs-ghub))
-             (string-append "GRAPHQL_DIR="
-                            (assoc-ref %build-inputs "graphql")
-                            "/share/emacs/site-lisp/guix.d/graphql-"
-                            ,(package-version emacs-graphql))
-             (string-append "TREEPY_DIR="
-                            (assoc-ref %build-inputs "treepy")
-                            "/share/emacs/site-lisp/guix.d/treepy-"
-                            ,(package-version emacs-treepy))
-             (string-append "MAGIT_POPUP_DIR="
-                            (assoc-ref %build-inputs "magit-popup")
-                            "/share/emacs/site-lisp/guix.d/magit-popup-"
-                            ,(package-version emacs-magit-popup))
-             (string-append "WITH_EDITOR_DIR="
-                            (assoc-ref %build-inputs "with-editor")
-                            "/share/emacs/site-lisp/guix.d/with-editor-"
-                            ,(package-version emacs-with-editor)))
+  ;; Version 2.90.1 has trouble loading the transient library,
+  ;; so we use a more recent commit that fixes it.
+  (let ((commit "b4aec016b5577afa8d889f258b499814d1bb1d94"))
+    (package
+      (name "emacs-magit")
+      (version (git-version "2.90.1" "1" 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
+                  "0zl7v6z0y50pcgqsf2r8c1k3r5nwjad9ba7r6sgrnf4rc62br7jv"))))
+      (build-system gnu-build-system)
+      (native-inputs `(("texinfo" ,texinfo)
+                       ("emacs" ,emacs-minimal)))
+      (inputs
+       `(("git" ,git)
+         ("perl" ,perl)))
+      (propagated-inputs
+       `(("dash" ,emacs-dash)
+         ("with-editor" ,emacs-with-editor)
+         ("transient" ,emacs-transient)))
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build emacs-utils))
+         #:test-target "test"
+         #:tests? #f                   ; tests are not included in the release
+
+         #:make-flags
+         (list (string-append "PREFIX=" %output)
+               ;; Don't put .el files in a sub-directory.
+               (string-append "lispdir=" %output "/share/emacs/site-lisp")
+               (string-append "DASH_DIR="
+                              (assoc-ref %build-inputs "dash")
+                              "/share/emacs/site-lisp/guix.d/dash-"
+                              ,(package-version emacs-dash))
+               (string-append "WITH_EDITOR_DIR="
+                              (assoc-ref %build-inputs "with-editor")
+                              "/share/emacs/site-lisp/guix.d/with-editor-"
+                              ,(package-version emacs-with-editor))
+               (string-append "TRANSIENT_DIR="
+                              (assoc-ref %build-inputs "transient")
+                              "/share/emacs/site-lisp/guix.d/transient-"
+                              ,(package-version emacs-transient)))
 
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before
-          'build 'patch-exec-paths
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((perl (assoc-ref inputs "perl")))
-              (make-file-writable "lisp/magit-sequence.el")
-              (emacs-substitute-variables "lisp/magit-sequence.el"
-                ("magit-perl-executable" (string-append perl "/bin/perl")))
-              #t))))))
-    (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.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-before
+               'build 'patch-exec-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((perl (assoc-ref inputs "perl")))
+                 (make-file-writable "lisp/magit-sequence.el")
+                 (emacs-substitute-variables "lisp/magit-sequence.el"
+                   ("magit-perl-executable" (string-append perl "/bin/perl")))
+                 #t))))))
+      (home-page "https://magit.vc/")
+      (synopsis "Emacs interface for the Git version control system")
+      (description
+       "With Magit, you can inspect and modify your Git repositories with Emacs.
 You can review and commit the changes you have made to the tracked files, for
 example, and you can browse the history of past changes.  There is support for
 cherry picking, reverting, merging, rebasing, and other common Git
 operations.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public magit
   (deprecated-package "magit" emacs-magit))
 
 (define-public emacs-magit-svn
-  (package
-    (name "emacs-magit-svn")
-    (version "2.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/magit/magit-svn")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "01kcsc53q3mbhgjssjpby7ypnhqsr48rkl1xz3ahaypmlp929gl9"))))
-    (build-system trivial-build-system)
-    (native-inputs `(("emacs" ,emacs-minimal)))
-    (propagated-inputs `(("dash" ,emacs-dash)
-                         ("ghub" ,emacs-ghub)
-                         ("graphql" ,emacs-graphql)
-                         ("treepy" ,emacs-treepy)
-                         ("with-editor" ,emacs-with-editor)
-                         ("magit" ,emacs-magit)
-                         ("magit-popup" ,emacs-magit-popup)))
-    (arguments
-     `(#:modules ((guix build utils)
-                  (guix build emacs-utils))
+  (let ((commit "9e33ceee32f665db59909e1c00a667ccdd04178f"))
+    (package
+      (name "emacs-magit-svn")
+      (version (git-version "2.2.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/magit-svn")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1mlqz8dh6jy5rv72lgkxv253dgh73fmbaidskicypapvbl3lr6xy"))))
+      (build-system trivial-build-system)
+      (native-inputs `(("emacs" ,emacs-minimal)))
+      (propagated-inputs `(("dash" ,emacs-dash)
+                           ("with-editor" ,emacs-with-editor)
+                           ("magit" ,emacs-magit)
+                           ("transient" ,emacs-transient)))
+      (arguments
+       `(#:modules ((guix build utils)
+                    (guix build emacs-utils))
 
-       #:builder
-       (begin
-         (use-modules (guix build utils)
-                      (guix build emacs-utils))
-
-         (let ((emacs    (string-append (assoc-ref %build-inputs "emacs")
-                                        "/bin/emacs"))
-               (magit    (string-append (assoc-ref %build-inputs "magit")
-                                        "/share/emacs/site-lisp"))
-               (magit-popup (string-append (assoc-ref %build-inputs "magit-popup")
-                                           "/share/emacs/site-lisp/guix.d/magit-popup-"
-                                           ,(package-version emacs-magit-popup)))
-               (ghub     (string-append (assoc-ref %build-inputs "ghub")
-                                        "/share/emacs/site-lisp/guix.d/ghub-"
-                                        ,(package-version emacs-ghub)))
-               (graphql  (string-append (assoc-ref %build-inputs "graphql")
-                                        "/share/emacs/site-lisp/guix.d/graphql-"
-                                        ,(package-version emacs-graphql)))
-               (treepy   (string-append (assoc-ref %build-inputs "treepy")
-                                        "/share/emacs/site-lisp/guix.d/treepy-"
-                                        ,(package-version emacs-treepy)))
-               (dash     (string-append (assoc-ref %build-inputs "dash")
-                                        "/share/emacs/site-lisp/guix.d/dash-"
-                                        ,(package-version emacs-dash)))
-               (with-editor (string-append (assoc-ref %build-inputs "with-editor")
-                                           "/share/emacs/site-lisp/guix.d/with-editor-"
-                                           ,(package-version emacs-with-editor)))
-               (source   (assoc-ref %build-inputs "source"))
-               (lisp-dir (string-append %output "/share/emacs/site-lisp")))
-
-           (install-file (string-append source "/magit-svn.el")
-                         lisp-dir)
-
-           (with-directory-excursion lisp-dir
-             (parameterize ((%emacs emacs))
-               (emacs-generate-autoloads ,name lisp-dir)
-               (setenv "EMACSLOADPATH"
-                       (string-append ":" magit ":" magit-popup ":" ghub ":"
-                                      ":" graphql ":" treepy ":" dash ":" with-editor))
-               (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
-           #t))))
-    (home-page "https://github.com/magit/magit-svn")
-    (synopsis "Git-SVN extension to Magit")
-    (description
-     "This package is an extension to Magit, the Git Emacs mode, providing
+         #:builder
+         (begin
+           (use-modules (guix build utils)
+                        (guix build emacs-utils))
+
+           (let ((emacs    (string-append (assoc-ref %build-inputs "emacs")
+                                          "/bin/emacs"))
+                 (magit    (string-append (assoc-ref %build-inputs "magit")
+                                          "/share/emacs/site-lisp"))
+                 (transient (string-append (assoc-ref %build-inputs "transient")
+                                           "/share/emacs/site-lisp/guix.d/transient-"
+                                           ,(package-version emacs-transient)))
+                 (dash     (string-append (assoc-ref %build-inputs "dash")
+                                          "/share/emacs/site-lisp/guix.d/dash-"
+                                          ,(package-version emacs-dash)))
+                 (with-editor (string-append (assoc-ref %build-inputs "with-editor")
+                                             "/share/emacs/site-lisp/guix.d/with-editor-"
+                                             ,(package-version emacs-with-editor)))
+                 (source   (assoc-ref %build-inputs "source"))
+                 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
+
+             (install-file (string-append source "/magit-svn.el")
+                           lisp-dir)
+
+             (with-directory-excursion lisp-dir
+               (parameterize ((%emacs emacs))
+                 (emacs-generate-autoloads ,name lisp-dir)
+                 (setenv "EMACSLOADPATH"
+                         (string-append ":" magit ":" transient
+                                        ":" dash ":" with-editor))
+                 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
+             #t))))
+      (home-page "https://github.com/magit/magit-svn")
+      (synopsis "Git-SVN extension to Magit")
+      (description
+       "This package is an extension to Magit, the Git Emacs mode, providing
 support for Git-SVN.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public magit-svn
   (deprecated-package "magit-svn" emacs-magit-svn))
@@ -563,6 +541,35 @@ handful of functions that are not resource-specific.")
 for editing Racket's Scribble documentation syntax in Emacs.")
       (license license:gpl3+))))
 
+(define-public emacs-unpackaged-el
+  (let ((commit "f4df7f8dfea715e893b2223adda32545803f5cce")
+        (revision "1"))
+    (package
+      (name "emacs-unpackaged-el")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/alphapapa/unpackaged.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1yf3zrgqfhnr0az8gn1kqqwnhfi3nc0vbjkcagwcqwk3sp1jda86"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-org" ,emacs-org)
+         ("emacs-s" ,emacs-s)
+         ("emacs-use-package" ,emacs-use-package)))
+      (home-page "https://github.com/alphapapa/unpackaged.el")
+      (synopsis "Useful snippets of Emacs Lisp code")
+      (description "This package provides Emacs Lisp utilities for a variety
+of tasks, including version control, task management, and regex-based
+replacement.")
+      (license license:gpl3+))))
+
 (define-public emacs-haskell-mode
   (package
     (name "emacs-haskell-mode")
@@ -740,6 +747,36 @@ can be referred to during the expression.  This technique can improve clarity
 in certain cases.  It also enables recursion for anonymous functions.")
     (license license:public-domain)))
 
+(define-public emacs-xr
+  (package
+    (name "emacs-xr")
+    (version "1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/xr-" version ".tar"))
+       (sha256
+        (base32
+         "1mcild3034f4c1x8x05w9q0ps70i1nihvih22cmh3wj4cgllg5w0"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/xr.html")
+    (synopsis "Convert string regexp to rx notation")
+    (description
+     "This is an inverse companion to the @code{rx} package for translating
+regexps in string form to the @code{rx} notation.  Its chief uses are:
+
+@itemize
+@item Migrating existing code to @code{rx} form, for better readability and
+maintainability
+@item Understanding complex regexp strings and finding errors in them
+@end itemize
+
+In addition to Emacs regexps, this package can also parse and troubleshoot
+skip set strings, which are arguments to @code{skip-chars-forward} and
+@code{skip-chars-backward}.")
+    (license license:gpl3+)))
+
 
 ;;;
 ;;; Web browsing.
@@ -932,6 +969,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
                    (alsa    (assoc-ref inputs "alsa-utils"))
                    (mpg321  (assoc-ref inputs "mpg321"))
                    (mp3info (assoc-ref inputs "mp3info"))
+                   (mutagen (assoc-ref inputs "mutagen"))
                    (opus    (assoc-ref inputs "opus-tools")))
                ;; Specify the installation directory.
                (substitute* "Makefile"
@@ -975,8 +1013,9 @@ in certain cases.  It also enables recursion for anonymous functions.")
                    (("\"amixer\"")
                     (string-append "\"" alsa "/bin/amixer\"")))
                  (substitute* "emms-tag-editor.el"
-                   (("\"mp3info\"")
-                    (string-append "\"" mp3info "/bin/mp3info\"")))))))
+                   (("\"mid3v2\"")
+                    (string-append "\"" mutagen "/bin/mid3v2\"")))
+                 #t))))
          (add-before 'install 'pre-install
            (lambda* (#:key outputs #:allow-other-keys)
              ;; The 'install' rule expects the target directories to exist.
@@ -1009,6 +1048,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
               ("mpg321" ,mpg321)
               ("taglib" ,taglib)
               ("mp3info" ,mp3info)
+              ("mutagen" ,python-mutagen)
               ("opus-tools" ,opus-tools)))
     (properties '((upstream-name . "emms")))
     (synopsis "Emacs Multimedia System")
@@ -5217,8 +5257,8 @@ extensions.")
     (license license:gpl3+)))
 
 (define-public emacs-evil-collection
-  (let ((commit "e7b57aae0131634d0da5e599717a86c4b3ca6092")
-        (revision "7"))
+  (let ((commit "baa9c6880779d416a91bf5bde3589673a7403612")
+        (revision "8"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.1" revision commit))
@@ -5230,7 +5270,7 @@ extensions.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "1g7bxvgnsikpxxdimy0lymn3xz53fari048l827sjyw5kxi59d20"))))
+                  "09v97nk7qawphfijzqxzi2y63ydmfq7hsgpljjxwkykrc5h0kdlj"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)))
@@ -5355,14 +5395,14 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update its sha256
     ;; checksum as well.
-    (version "9.2.1")
+    (version "9.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "0ggca29pyksvfblyd2ciqhgi392wlqx0nmph7ck4m5wbzmk2qnry"))))
+                "02fq3x4haady2vagg9b363ynsrxzpijfp420qhciy7x8y7m89abw"))))
     (build-system emacs-build-system)
     (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -5376,14 +5416,14 @@ programming and reproducible research.")
   (package
     (inherit emacs-org)
     (name "emacs-org-contrib")
-    (version "20190203")
+    (version "20190311")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
                                   version ".tar"))
               (sha256
                (base32
-                "060rm62p1660n9f6i5w8l932w7gn5ign93q92gva4jy4bkmvczyb"))))
+                "189p0f70j7z3hh72ay8cxa9n8xkcj06dlw765fwnqd2mm72vx0nb"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -5863,42 +5903,46 @@ Yasnippet.")
       (license license:gpl2+))))
 
 (define-public emacs-helm-system-packages
-  (package
-    (name "emacs-helm-system-packages")
-    (version "1.10.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/emacs-helm/helm-system-packages")
-                    (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"))))
-    (build-system emacs-build-system)
-    (inputs
-     `(("recutils" ,recutils)))
-    (propagated-inputs
-     `(("emacs-helm" ,emacs-helm)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((recutils (assoc-ref inputs "recutils")))
-               ;; Specify the absolute file names of the various
-               ;; programs so that everything works out-of-the-box.
-               (substitute* "helm-system-packages-guix.el"
-                 (("recsel") (string-append recutils "/bin/recsel")))))))))
-    (home-page "https://github.com/emacs-helm/helm-system-packages")
-    (synopsis "Helm System Packages is an interface to your package manager")
-    (description "List all available packages in Helm (with installed
+  ;; There won't be a new release after 1.10.1 until
+  ;; https://github.com/emacs-helm/helm-system-packages/issues/25 is fixed,
+  ;; and latest commits fix import issues with Guix.
+  (let ((commit "6572340f41611ef1991e9612d34d59130957ee4a"))
+    (package
+      (name "emacs-helm-system-packages")
+      (version (git-version "1.10.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/emacs-helm/helm-system-packages")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0mcz6vkpk12vsyd37xv1rbg4v442sxc3lj8yxskqg294xbdaclz4"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("recutils" ,recutils)))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((recutils (assoc-ref inputs "recutils")))
+                 ;; Specify the absolute file names of the various
+                 ;; programs so that everything works out-of-the-box.
+                 (substitute* "helm-system-packages-guix.el"
+                   (("recsel") (string-append recutils "/bin/recsel")))))))))
+      (home-page "https://github.com/emacs-helm/helm-system-packages")
+      (synopsis "Helm System Packages is an interface to your package manager")
+      (description "List all available packages in Helm (with installed
 packages displayed in their own respective face).  Fuzzy-search, mark and
 execute the desired action over any selections of packages: Install,
 uninstall, display packages details (in Org Mode) or insert details at point,
 find files owned by packages...  And much more, including performing all the
 above over the network.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-memoize
   (package
@@ -9048,6 +9092,29 @@ arXiv, Google Scholar, Library of Congress, etc.
 @code{wmctrl} command-line window-management program.")
       (license license:gpl3+))))
 
+(define-public emacs-erc-image
+  (let ((commit "82fb3871f02e24b1e880770b9a3d187aab43d0f0")
+        (revision "1"))
+    (package
+      (name "emacs-erc-image")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kidd/erc-image.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1q8mkf612fb4fjp8h4kbr107wn083iqfdgv8f80pcmil8y33dw9i"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/kidd/erc-image.el")
+      (synopsis "Show inlined images (png/jpg/gif/svg) in ERC buffers")
+      (description "This plugin subscribes to hooks @code{erc-insert-modify-hook}
+and @code{erc-send-modify-hook} to download and show images.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-gtags
   (package
     (name "emacs-helm-gtags")
@@ -9946,27 +10013,51 @@ The default setup uses helm-bibtex.
 You should really read org-ref.org in this package for details.")
       (license license:gpl3+))))
 
+;; This project is unmaintained.  Please use emacs-org-re-reveal instead.
 (define-public emacs-org-reveal
+  (let ((commit "1cdd088ec5fab631c564dca7f9f74fd3e9b7d4d4"))
+    (package
+      (name "emacs-org-reveal")
+      (version (git-version "0.1" "2" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/yjwen/org-reveal.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1vjxjadq2i74p96y9jxnqj1yb86fsgxzmn7bjgnb88ay6nvc1l72"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/yjwen/org-reveal")
+      (synopsis "Org and Reveal.js powered HTML presentation tool")
+      (description "Org-Reveal is a command@{org-mode} extension that allows
+to create beautiful presentations (slides) with 3D effects from simple but
+powerful Org contents.")
+      (license license:gpl3+))))
+
+(define-public emacs-org-re-reveal
   (package
-    (name "emacs-org-reveal")
-    ;; There are no proper tag, so we use the latest commit of the stable
-    ;; branch, as does MELPA.
-    (version "20161027.926")
+    (name "emacs-org-re-reveal")
+    (version "1.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/yjwen/org-reveal.git")
-                    (commit "001567cc12d50ba07612edd1718b86a12e8c2547")))
-              (file-name (string-append name "-" version "-checkout"))
+                    (url "https://gitlab.com/oer/org-re-reveal.git")
+                    (commit "50cc6574c77f12d423f6cd096d8f76feb3673abc")))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "18rma8smjrskbjyna076zhvx79zs5r5vinb537h8mw13pfxd6cm8"))))
+                "1v3z30gpimg4spf6zzqwp9b597zxk89h0vpq6xp58js4rjg4ixk8"))))
     (build-system emacs-build-system)
-    (home-page "https://github.com/yjwen/org-reveal")
-    (synopsis "Org and Reveal.js powered HTML presentation tool")
-    (description "Org-Reveal is a command@{org-mode} extension that allows to
-create beautiful presentations (slides) with 3D effects from simple but
-powerful Org contents.")
+    (propagated-inputs
+     `(("emacs-htmlize" ,emacs-htmlize)
+       ("emacs-org" ,emacs-org)))
+    (home-page "https://gitlab.com/oer/org-re-reveal")
+    (synopsis "Build HTML presentations with reveal.js from Org source files")
+    (description "This project started as fork of org-reveal.  It provides an
+export back-end for HTML presentations with reveal.js from Org mode source
+files.")
     (license license:gpl3+)))
 
 (define-public emacs-add-hooks
@@ -10698,7 +10789,7 @@ keep Parens and Indentation inline with one another.")
 (define-public emacs-helm-eww
   (package
     (name "emacs-helm-eww")
-    (version "1.1")
+    (version "1.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -10707,7 +10798,7 @@ keep Parens and Indentation inline with one another.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "0dvlp7y6kqc4azg5b7jx5lz2rwd0ia7y0y3hcj9y23zd88r73lg7"))))
+                "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"))))
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)))
     (build-system emacs-build-system)
@@ -11199,6 +11290,29 @@ visiting the bookmark, a new @code{eshell} session will be opened in the
 appropriate directory if no @code{eshell} session is active.")
     (license license:gpl3+)))
 
+(define-public emacs-eshell-z
+  (package
+    (name "emacs-eshell-z")
+    (version "0.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xuchunyang/eshell-z")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1aac4m814jgxwpz7lbyx5r4z5dmawp4sk7pwbx0zqpnbcsaq5wwc"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/xuchunyang/eshell-z")
+    (synopsis "Quick navigation to frequently visited directories")
+    (description
+     "This package is a port of @code{z}, and keeps track of visited directories
+and commands invoked within them in order to enable navigation via input of
+matching regexps.")
+    (license license:gpl3+)))
+
 (define-public emacs-esh-autosuggest
   (package
     (name "emacs-esh-autosuggest")
@@ -11776,29 +11890,26 @@ e.g: @code{from:Peter to:Anne flag:attach search term}.")
       (license license:gpl3+))))
 
 (define-public emacs-helm-pass
-  (let ((commit "ebcbef1a962795a36e3491ae926e2a4b8a8b0ebb"))
-    (package
-      (name "emacs-helm-pass")
-      (version (git-version  "20180416" "1" commit))
-      (source
-       (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/jabranham/helm-pass/archive/"
-               commit
-               ".tar.gz"))
-         (sha256
-          (base32
-           "1pgq4hj9wvz7z2fyxwsvbh6rmc1akya84v382nx26rr76iavz6wi"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-password-store" ,emacs-password-store)))
-      (home-page
-       "https://github.com/jabranham/helm-pass")
-      (synopsis "Helm interface to pass, the standard Unix password manager")
-      (description
-       "Users of @code{helm-pass} may also be interested in functionality
+  (package
+    (name "emacs-helm-pass")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-helm/helm-pass")
+             (commit version)))
+       (sha256
+        (base32
+         "0vglaknmir3yv4iwibwn8r40ran8d04gcyp99hx73ldmf3zqpnxv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-password-store" ,emacs-password-store)))
+    (home-page "https://github.com/emacs-helm/helm-pass")
+    (synopsis "Helm interface to pass, the standard Unix password manager")
+    (description
+     "Users of @code{helm-pass} may also be interested in functionality
 provided by other Emacs packages dealing with pass:
 @itemize
 @item @code{emacs-password-store}, which @code{helm-pass} relies on.
@@ -11806,7 +11917,7 @@ provided by other Emacs packages dealing with pass:
 @item @code{auth-source-pass.el}: integration of Emacs' auth-source with
 @code{pass}, included in Emacs 26+).
 @end itemize\n")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-image+
   (let ((commit "6834d0c09bb4df9ecc0d7a559bd7827fed48fffc"))
@@ -12300,10 +12411,10 @@ files) are provided.")
       (license license:gpl2+))))
 
 (define-public emacs-hackernews
-  (let ((commit "d8c450bbc76d6bb65ec5cdb6c3b888a23f3769e9"))
+  (let ((commit "916c3da8da45c757f5ec2faeed57fa370513d4ac"))
     (package
       (name "emacs-hackernews")
-      (version (git-version "0.4.0" "1" commit))
+      (version (git-version "0.5.0" "1" commit))
       (source
        (origin
          (method git-fetch)
@@ -12313,7 +12424,7 @@ files) are provided.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "06mp4n6c300jv5lhwf50ircfjckzr2p1zd38s4mqnxxjlf1maim7"))))
+           "09bxaaczana1cfvxyk9aagjvdszkj0j1yldl5r4xa60b59lxihsg"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/clarete/hackernews.el")
       (synopsis "Hacker News client for Emacs")
@@ -12469,6 +12580,30 @@ execute its commands and resize images.")
 backends, including the @command{wordnet} offline backend.")
       (license license:gpl3+))))
 
+(define-public emacs-editorconfig
+  (package
+    (name "emacs-editorconfig")
+    (version "0.7.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/editorconfig/editorconfig-emacs")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "19j2428ij7sqvrqs7rqg1mcnv9109y6drqba40dkv3vrkk5d2yia"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/editorconfig/editorconfig-emacs")
+    (synopsis "Define and maintain consistent coding styles between different
+editors and IDEs")
+    (description "The EditorConfig project consists of a file format for
+defining coding styles and a collection of text editor plugins that enable
+editors to read the file format and adhere to defined styles.  EditorConfig
+files are easily readable and they work nicely with version control systems.")
+    (license license:gpl3+)))
+
 (define-public emacs-all-the-icons
   (package
     (name "emacs-all-the-icons")
@@ -12606,7 +12741,7 @@ correctly.")
 (define-public emacs-helm-slime
   (package
     (name "emacs-helm-slime")
-    (version "0.2.0")
+    (version "0.3.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -12615,7 +12750,7 @@ correctly.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0vn93vv2wclnwq6f480z14jn9wfp0ylhp5dd48ycc9jicfsnxqfj"))))
+                "1qhb9446rpj17pm0hi3miy5gs5k3ld43bq29kzy0y26bf7ivfcjv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)
@@ -13506,3 +13641,214 @@ like @code{company}, @code{flycheck}, and @code{projectile}.")
 @code{lsp-mode}, such as visual flychecking, displaying references in-line,
 and code peeking.")
     (license license:gpl3+)))
+
+(define-public emacs-helm-notmuch
+  (package
+    (name "emacs-helm-notmuch")
+    (version "1.2")
+    (home-page "https://github.com/emacs-helm/helm-notmuch/")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1k038dbdpaa411gl4071x19fklhnizhr346plxw23lsnxir9dhqc"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("notmuch" ,notmuch)))
+    (synopsis "Search emails with Emacs Notmuch and Helm")
+    (description
+     "This package can be used to search emails in Emacs, searching result
+displays as you type thanks to Helm, though @command{notmuch-search} does the
+real search.")
+    (license license:gpl3+)))
+
+(define-public emacs-elmacro
+  (let ((commit "89b9b0feabafd01fee48111d67131c4c9b5fed9a"))
+    (package
+      (name "emacs-elmacro")
+      (version (git-version "1.1.0" "1" commit))
+      (home-page "https://github.com/Silex/elmacro")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "06wkzafh6vbcjf0m3sl253mgcq32p8cdv7vsfmyx51baa36938ha"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)
+         ("emacs-dash" ,emacs-dash)))
+      (synopsis "Convert keyboard macros to Emacs Lisp")
+      (description
+       "This package displays keyboard macros or latest interactive commands
+as Emacs Lisp.")
+      (license license:gpl3+))))
+
+(define-public emacs-transient
+  ;; 0.1.0 depends on lv.el but not later versions.
+  (let ((commit "7e45a57ec81185631fe763733f64c99021df2a06"))
+    (package
+      (name "emacs-transient")
+      (version (git-version "0.1.0" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/transient")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0r6d4c1lga3bk0s7q7y4v4hbpxnd9h40cjxybqvax2z902931fz1"))))
+      (build-system gnu-build-system)
+      (native-inputs `(("texinfo" ,texinfo)
+                       ("emacs" ,emacs-minimal)))
+      (propagated-inputs
+       `(("dash" ,emacs-dash)))
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (srfi srfi-26)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build emacs-utils))
+         #:tests? #f                   ; tests are not included in the release
+         #:make-flags (list "lisp" "info"
+                            (string-append "LOAD_PATH=-L . -L "
+                                           (assoc-ref %build-inputs "dash")
+                                           "/share/emacs/site-lisp/guix.d/dash-"
+                                           ,(package-version emacs-dash)))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'install
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lisp (string-append out "/share/emacs/site-lisp/guix.d/"
+                                           "transient" "-" ,version))
+                      (info (string-append out "/share/info")))
+                 (for-each (cut install-file <> lisp)
+                           (find-files "." "\\.elc*$"))
+                 (install-file "docs/transient.info" (string-append info)))
+               #t)))))
+      (home-page "https://magit.vc/manual/transient")
+      (synopsis "Transient commands in Emacs")
+      (description
+       "Taking inspiration from prefix keys and prefix arguments in Emacs,
+Transient implements a similar abstraction involving a prefix command, infix
+arguments and suffix commands.  We could call this abstraction a \"transient
+command\", but because it always involves at least two commands (a prefix and
+a suffix) we prefer to call it just a \"transient\".")
+      (license license:gpl3+))))
+
+(define-public emacs-semantic-refactor
+  ;; The last release, 0.5, was made on 2015-07-26 and there have been 47
+  ;; commits since then.
+  (let ((commit "6f2c97d17fb70f4ca2112f5a2b99a8ec162004f5"))
+    (package
+      (name "emacs-semantic-refactor")
+      (version (git-version "0.5" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tuhdo/semantic-refactor")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1lyz3zjkx2csh0xdy1zpx8s32qp1p3sig57mwi9xhgpqjyf0axmb"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/tuhdo/semantic-refactor")
+      (synopsis "Refactoring tool for C/C++ and Lisp dialects")
+      (description "This package provides a refactoring tool based on the
+Emacs Semantic parser framework.  For C and C++ it supports operations such as:
+
+@enumerate
+@item Generating class implementations
+@item Generating function prototypes
+@item Converting functions to function pointers
+@item Moving semantic units
+@item etc...
+@end enumerate
+
+For Lisp dialects like Clojure, ELisp, and Scheme, it supports operations such
+as:
+
+@enumerate
+@item Formatting the whole buffer
+@item Converting sexpressions to one or multiple lines
+@item etc...
+@end enumerate\n")
+      (license license:gpl3+))))
+
+(define-public emacs-nhexl-mode
+  (package
+    (name "emacs-nhexl-mode")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/nhexl-mode-"
+             version ".el"))
+       (sha256
+        (base32
+         "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/nhexl-mode.html")
+    (synopsis "Minor mode to edit files via hex-dump format")
+    (description
+     "This package implements NHexl mode, a minor mode for editing files
+in hex dump format.  The mode command is called @command{nhexl-mode}.
+
+This minor mode implements similar functionality to @command{hexl-mode},
+but using a different implementation technique, which makes it
+usable as a \"plain\" minor mode.  It works on any buffer, and does
+not mess with the undo log or with the major mode.
+
+It also comes with:
+
+@itemize
+@item @command{nhexl-nibble-edit-mode}: a \"nibble editor\" minor mode, where
+the cursor pretends to advance by nibbles (4-bit) and the self-insertion keys
+(which only work for hex-digits) will only modify the nibble under point.
+@item @command{nhexl-overwrite-only-mode}: a minor mode to try and avoid
+moving text.  In this minor mode, not only self-inserting keys overwrite
+existing text, but commands like `yank' and @command{kill-region} as well.
+@item It overrides @code{C-u} to use hexadecimal, so you can do @code{C-u a 4
+C-f} to advance by #xa4 characters.
+@end itemize\n")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-wikipedia
+  (let ((commit "126f044e0a0e1432e0791c33ce2a41875d704a9b"))
+    (package
+      (name "emacs-helm-wikipedia")
+      (version (git-version "0.0.0" "1" commit))
+      (home-page "https://github.com/emacs-helm/helm-wikipedia/")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "148a5xsnbsiddhf9cl7yxdk41lrv38h0pip91kcflw9d7l0dp7pr"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("helm" ,emacs-helm)))
+      (synopsis "Search suggestions and article extracts from Wikipedia for Emacs")
+      (description
+       "This package provides an Emacs Helm interface for search suggestions
+and article extracts for Wikipedia.")
+      (license license:gpl3+))))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 74005972db..e00931c504 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 David Thompson <dthompson2@worcester.edu>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 8bed5795a0..4ac76e35b0 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+;;; Copyright © 2018, 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Tim Stahel <swedneck@swedneck.xyz>
 ;;;
@@ -1003,7 +1003,8 @@ interface to select the best such procedures to use on a given system.")
                 "0w1n4d249vlpda0hi6z1v13qp21vlbp3ykn0m8qg4rd5132j7fg1"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:phases
+     `(#:configure-flags '("--enable-shared")
+       #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'fix-tests
            (lambda _
@@ -1027,17 +1028,19 @@ determines the frequencies, decay constants, amplitudes, and phases of those sin
 (define-public guile-libctl
   (package
     (name "guile-libctl")
-    (version "3.2.2")
+    (version "4.2.0")
     (source (origin
               (method url-fetch)
               (uri
                (string-append
-                "http://ab-initio.mit.edu/libctl/libctl-"
-                version ".tar.gz"))
+                "https://github.com/NanoComp/libctl/releases/download/v"
+                version "/libctl-" version ".tar.gz"))
               (sha256
                (base32
-                "1g7gqybq20jhdnw5vg18bgbj9jz0408gfmjvs8b4xs30pic8pgca"))))
+                "0x8r56lpfq83kfbq28vr25icl19xpfd6fjrxzcpdmv30l9pash83"))))
     (build-system gnu-build-system)
+    (arguments
+      `(#:configure-flags '("--enable-shared")))
     (native-inputs
      `(("fortran" ,gfortran)))
     (inputs
@@ -1052,22 +1055,23 @@ for scientific simulations.")
 (define-public mpb
   (package
     (name "mpb")
-    (version "1.5")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri
                (string-append
-                "http://ab-initio.mit.edu/mpb/mpb-"
-                version ".tar.gz"))
+                "https://github.com/NanoComp/mpb/releases/download/v"
+                version "/mpb-" version ".tar.gz"))
               (sha256
                (base32
-                "1mqb2d8jq957nksayjygq58iy8i42vjryzg9iy5fpfay31wzxsix"))))
+                "1jgrb7dd6qs6j6y1gnxmdgrh79l2bvqa6nk60a4pw1annsks4brd"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
        (list (string-append "--with-libctl="
                             (assoc-ref %build-inputs "libctl")
-                            "/share/libctl"))))
+                            "/share/libctl")
+             "--enable-shared")))
     (native-inputs
      `(("fortran" ,gfortran)
        ("pkg-config" ,pkg-config)
@@ -1093,16 +1097,16 @@ fully-vectorial and three-dimensional methods.")
 (define-public meep
   (package
     (name "meep")
-    (version "1.3")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri
                (string-append
-                "http://ab-initio.mit.edu/meep/meep-"
-                version ".tar.gz"))
+                "https://github.com/NanoComp/meep/releases/download/v"
+                version "/meep-" version ".tar.gz"))
               (sha256
                (base32
-                "0f6lbw2hrksg7xscwdqs78jc9nmzx9fs8j0hz1y4i8qknkqiyk2n"))))
+                "14zyxmm3p80j5fz5b89sl7hgkgcisqjny5hjh4pi274ziqjqz8bm"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -1116,7 +1120,7 @@ fully-vectorial and three-dimensional methods.")
     (inputs
      `(("fftw" ,fftw)
        ("gsl" ,gsl)
-       ("guile" ,guile-2.0)             ; doesn't build with guile-2.2
+       ("guile" ,guile-2.2)
        ("harminv" ,harminv)
        ("hdf5" ,hdf5)
        ("lapack" ,lapack)
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index c3aa469776..d2853e62d6 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
 ;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
 ;;;
diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index 45206f71a0..9c38b53581 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2018 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index bb8548c1eb..6988443e94 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Jookia <166291@gmail.com>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
@@ -267,19 +267,17 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over
 (define-public font-liberation
   (package
     (name "font-liberation")
-    (version "2.00.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://releases.pagure.org/"
-                                  "liberation-fonts/liberation-fonts-ttf-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "010m4zfqan4w04b6bs9pm3gapn9hsb18bmwwgp2p6y6idj52g43q"))))
+    (version "2.00.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/liberationfonts/liberation-fonts/"
+                           "files/2926169/liberation-fonts-ttf-" version ".tar.gz"))
+       (sha256
+        (base32 "0kdjsbf0y716k1kv0i0ixdpvg7b9b8xkcsg6favaxdc7pshg0kzi"))))
     (build-system font-build-system)
-    (home-page "https://pagure.io/liberation-fonts/")
-    (synopsis
-     "Fonts compatible with Arial, Times New Roman, and Courier New")
+    (home-page "https://github.com/liberationfonts")
+    (synopsis "Fonts compatible with Arial, Times New Roman, and Courier New")
     (description
      "The Liberation font family aims at metric compatibility with
 Arial, Times New Roman, and Courier New.
@@ -353,14 +351,28 @@ Biolinum is available in both Regular and Bold weights.")
        (sha256
         (base32 "15qjcpalcxjiwsjgjg5k88vkwp56cs2nnx4ghya6mqp4i1c206qg"))))
     (build-system gnu-build-system)
+    (outputs (list "out" "pcf-8bit"))
+    (arguments
+     `(#:tests? #f                      ; no test target in tarball
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-more-bits
+           ;; X11 8-bit code pages aren't installed by default (they were
+           ;; until version 4.46).  Build and install them separately.
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "pcf-8bit" make-flags)))
+         (add-after 'install 'install-more-bits
+           (lambda* (#:key make-flags outputs #:allow-other-keys)
+             (let ((pcf-8bit (assoc-ref outputs "pcf-8bit")))
+               (apply invoke "make" "install-pcf-8bit" (string-append "prefix="
+                                                                      pcf-8bit)
+                      make-flags)))))))
     (native-inputs
      `(("bdftopcf" ,bdftopcf)
        ("font-util" ,font-util)
        ("mkfontdir" ,mkfontdir)
        ("pkg-config" ,pkg-config)
        ("python" ,python)))
-    (arguments
-     `(#:tests? #f))                    ; no test target in tarball
     (home-page "http://terminus-font.sourceforge.net/")
     (synopsis "Simple bitmap programming font")
     (description "Terminus Font is a clean, fixed-width bitmap font, designed
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index f97a27ccd5..21f8c7d227 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
@@ -388,29 +388,24 @@ X11-system or any other graphical user interface.")
 
 (define-public teckit
   (package
-   (name "teckit")
-   (version "2.5.8")
-   (source
-    (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/silnrsi/teckit")
-            (commit (string-append "v" version))))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32 "1jmsdmfz7bgq1n5qsqgpq1b1n77f1hll0czfw5wkxz4knzb14ndn"))))
-   (build-system gnu-build-system)
-   (inputs
-    `(("zlib" ,zlib)
-      ("expat" ,expat)))
-   (native-inputs
-    `(("autoconf" ,autoconf)
-      ("automake" ,automake)
-      ("libtool" ,libtool)
-      ("perl" ,perl))) ; for the tests
-   (synopsis "Toolkit for encoding conversions")
-   (description
-    "TECkit is a low-level toolkit intended to be used by other applications
+    (name "teckit")
+    (version "2.5.9")                   ;signed by key 0xC9183BEA0288CDEE
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/silnrsi/teckit/releases/"
+                           "download/v" version "/teckit-" version ".tar.gz"))
+       (sha256
+        (base32 "0gbxyip4wdibirdg2pvzayzyy927vxyd6dfyfiflx8zg88qzn8v8"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("zlib" ,zlib)
+       ("expat" ,expat)))
+    (native-inputs
+     `(("perl" ,perl)))                 ;for the tests
+    (synopsis "Toolkit for encoding conversions")
+    (description
+     "TECkit is a low-level toolkit intended to be used by other applications
 that need to perform encoding conversions (e.g., when importing legacy data
 into a Unicode-based application).  The primary component of the TECkit
 package is therefore a library that performs conversions; this is the
@@ -427,8 +422,8 @@ TECkit compiler.  However, it is not intended that these tools will be the
 primary means by which end users perform conversions, and they have not
 been designed, tested, and debugged to the extent that general-purpose
 applications should be.")
-   (license license:lgpl2.1+)
-   (home-page "http://scripts.sil.org/cms/scripts/page.php?cat_id=teckit")))
+    (license license:lgpl2.1+)
+    (home-page "http://scripts.sil.org/cms/scripts/page.php?cat_id=teckit")))
 
 (define-public graphite2
   (package
@@ -560,14 +555,14 @@ definitions.")
 (define-public fontforge
   (package
    (name "fontforge")
-   (version "20170731")
+   (version "20190317")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "https://github.com/fontforge/fontforge/releases/download/"
-                  version "/fontforge-dist-" version ".tar.xz"))
+                  version "/fontforge-" version ".tar.gz"))
             (sha256 (base32
-                     "08l8h3yvk4v7652jvmd3ls7nf5miybkx2fmkf1mpwwfixpxxw2l4"))))
+                     "1ddqbpc32cgbccdnv0lfw0qhj59hcqzb7616ph5lkvm91pnas4dp"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
@@ -614,11 +609,7 @@ definitions.")
                           "pango" "cairo" "fontconfig")))
                 ;; Checks for potrace program at runtime
                 `("PATH" ":" prefix (,potrace)))
-              #t))))
-
-      ;; Skip test 40 "FontForge .sfd file open check" to work around
-      ;; <https://github.com/fontforge/fontforge/issues/3246>.
-      #:make-flags '("TESTSUITEFLAGS=-k '!\\.sfd'")))
+              #t))))))
    (synopsis "Outline font editor")
    (description
     "FontForge allows you to create and modify postscript, truetype and
diff --git a/gnu/packages/forth.scm b/gnu/packages/forth.scm
index 5efc668b78..6902a4a4a3 100644
--- a/gnu/packages/forth.scm
+++ b/gnu/packages/forth.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 6e2061b413..0c27cd69a4 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -230,7 +230,7 @@ the freedesktop.org XDG Base Directory specification.")
 (define-public elogind
   (package
     (name "elogind")
-    (version "239.4")
+    (version "241.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -239,7 +239,7 @@ the freedesktop.org XDG Base Directory specification.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "106hld2fa89iz0d17gkmwvbkxc2yspn1klq73nvkj4878wx3vcr9"))))
+                "0a4irq4ycps3xcizjjr0gz3j46dyqvcwa4ncinpqpqlasi8l18nk"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -398,14 +398,14 @@ Python.")
 (define-public wayland
   (package
     (name "wayland")
-    (version "1.16.0")
+    (version "1.17.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://wayland.freedesktop.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1xajhxad43izq9f7sbww1hlg42nayijy8xnp21kgpk09c6sw4wjf"))))
+                "194ibzwpdcn6fvk4xngr4bf5axpciwg2bj82fdvz88kfmjw13akj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:parallel-tests? #f))
diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm
index 386edba591..ad0720a60c 100644
--- a/gnu/packages/fvwm.scm
+++ b/gnu/packages/fvwm.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 7f00f7080b..25935aafcc 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -857,16 +857,16 @@ interface (API).")
 (define-public python-pygame
   (package
     (name "python-pygame")
-    (version "1.9.3")
+    (version "1.9.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "pygame" version))
               (sha256
                (base32
-                "1hlydiyygl444bq5m5g8n3jsxsgrdyxlm42ipmfbw36wkf0j243m"))))
+                "1dn0nb86jl7yr8709cncxdr0yrmviqakw7zx3g8jbbwrr60if3bh"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f ; Tests require pygame to be installed first.
+     `(#:tests? #f                ; tests require pygame to be installed first
        #:phases
        (modify-phases %standard-phases
          ;; Set the paths to the dependencies manually because
@@ -891,23 +891,23 @@ interface (API).")
                (substitute* "Setup.in"
                  (("FONT = -lSDL_ttf")
                   (string-append "FONT = -I" font-ref "/include/SDL -L"
-                                             font-ref "/lib -lSDL_ttf")))
+                                 font-ref "/lib -lSDL_ttf")))
                (substitute* "Setup.in"
                  (("IMAGE = -lSDL_image")
                   (string-append "IMAGE = -I" image-ref "/include/SDL -L"
-                                              image-ref "/lib -lSDL_image")))
+                                 image-ref "/lib -lSDL_image")))
                (substitute* "Setup.in"
                  (("MIXER = -lSDL_mixer")
                   (string-append "MIXER = -I" mixer-ref "/include/SDL -L"
-                                              mixer-ref "/lib -lSDL_mixer")))
+                                 mixer-ref "/lib -lSDL_mixer")))
                (substitute* "Setup.in"
                  (("SMPEG = -lsmpeg")
                   (string-append "SMPEG = -I" smpeg-ref "/include/smpeg -L"
-                                              smpeg-ref "/lib -lsmpeg")))
+                                 smpeg-ref "/lib -lsmpeg")))
                (substitute* "Setup.in"
                  (("PNG = -lpng")
                   (string-append "PNG = -I" png-ref "/include -L"
-                                            png-ref "/lib -lpng")))
+                                 png-ref "/lib -lpng")))
                (substitute* "Setup.in"
                  (("JPEG = -ljpeg")
                   (string-append "JPEG = -I" jpeg-ref "/include -L"
@@ -1237,7 +1237,7 @@ scripted in a Python-like language.")
 (define-public eureka
   (package
     (name "eureka")
-    (version "1.21")
+    (version "1.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/eureka-editor/Eureka/"
@@ -1247,7 +1247,7 @@ scripted in a Python-like language.")
                                   "-source.tar.gz"))
               (sha256
                (base32
-                "1a7pf7xi56fcz7jc8layih5gq5m66g2ss4x5j61kzgip07j6rkir"))))
+                "1x4idjniz9sma3j9ss6ni7fafmz22zs2jnpsqw4my9rsnmra5d9v"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 1cd3faad3c..eac0ae376f 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
 ;;; Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
@@ -25,7 +25,7 @@
 ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info>
 ;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 nee <nee-git@hidamari.blue>
+;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
@@ -36,6 +36,8 @@
 ;;; 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 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -143,6 +145,7 @@
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages wget)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
@@ -256,13 +259,10 @@ canyons and wait for the long I-shaped block to clear four rows at a time.")
     (license license:gpl3+)))
 
 (define-public cataclysm-dda
-  (let ((commit "0b2c194e5c6a06f4fbf14a0ec1260e0f3cf2567c")
-        (revision "2"))
+  (let ((commit "9c732a5de48928691ab863d3ab275ca7b0e522fc"))
     (package
       (name "cataclysm-dda")
-      ;; This denotes the version released after the 0.C release.
-      ;; Revert to a normal version number if updating to stable version 0.D.
-      (version (git-version "0.C" revision commit))
+      (version "0.D")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -270,7 +270,7 @@ canyons and wait for the long I-shaped block to clear four rows at a time.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "1yzsn0y2g27bvbxjvivjyjhkmf2w5na1qqw5qfkswcfqqwym2y33"))
+                  "00zzhx1mh1qjq668cga5nbrxp2qk6b82j5ak65skhgnlr6ii4ysc"))
                 (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -2335,7 +2335,7 @@ world}, @uref{http://evolonline.org, Evol Online} and
        ("sdl" ,sdl)
        ("xz" ,xz)
        ("zlib" ,zlib)))
-    (synopsis "Transportation economics simulator")
+    (synopsis "Transportation economics simulator game")
     (description "OpenTTD is a game in which you transport goods and
 passengers by land, water and air.  It is a re-implementation of Transport
 Tycoon Deluxe with many enhancements including multiplayer mode,
@@ -2556,7 +2556,7 @@ Transport Tycoon Deluxe.")
 (define openrct2-objects
   (package
    (name "openrct2-objects")
-   (version "1.0.6")
+   (version "1.0.9")
    (source
     (origin
      (method url-fetch)
@@ -2564,8 +2564,7 @@ Transport Tycoon Deluxe.")
                          version "/objects.zip"))
      (file-name (string-append name "-" version ".zip"))
      (sha256
-      (base32
-       "00kfy95zx6g4ldr6br5p7bwkwfx6pw9v78fd3rvghjnwyvf5fhki"))))
+      (base32 "02apb8h553m7d6jvysgb1zahvxc1yzyygfca2iclb21b3fhpsas4"))))
    (build-system trivial-build-system)
    (native-inputs
     `(("bash" ,bash)
@@ -2597,41 +2596,42 @@ Transport Tycoon Deluxe.")
 (define-public openrct2
   (package
     (name "openrct2")
-    (version "0.2.1")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/OpenRCT2/OpenRCT2/archive/v"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1fxzk037xphpyk7vv5jfrcz739zrj86p43pnf5gjjv9rjxwv7m8f"))
+        (base32 "0yxaphgfq85piaacnnfy6lrvmnqmfj1891rxlkl5ndngq0zh0ysb"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
                                "-DDOWNLOAD_TITLE_SEQUENCES=OFF")
-       #:tests? #f ; Tests require network.
+       #:tests? #f                      ; tests require network access
        #:phases
-        (modify-phases %standard-phases
-          (add-after 'unpack 'fix-usr-share-paths&add-data
-            (lambda* (#:key inputs outputs #:allow-other-keys)
-              (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
-                    (objects (assoc-ref inputs "openrct2-objects")))
-              ;; Fix some references to /usr/share.
-              (substitute* "src/openrct2/platform/Platform.Linux.cpp"
-                (("/usr/share")
-                 (string-append (assoc-ref %outputs "out") "/share")))
-              (copy-recursively (string-append titles
-                                "/share/openrct2/title-sequences") "data/title")
-              (copy-recursively (string-append objects
-                                "/share/openrct2/objects") "data/object"))))
-          (add-before 'configure 'get-rid-of-errors
-            (lambda _
-              ;; Don't treat warnings as errors.
-              (substitute* "CMakeLists.txt"
-                (("-Werror") ""))
-              #t)))))
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-usr-share-paths&add-data
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((titles (assoc-ref inputs "openrct2-title-sequences"))
+                   (objects (assoc-ref inputs "openrct2-objects")))
+               ;; Fix some references to /usr/share.
+               (substitute* "src/openrct2/platform/Platform.Linux.cpp"
+                 (("/usr/share")
+                  (string-append (assoc-ref %outputs "out") "/share")))
+               (copy-recursively
+                (string-append titles "/share/openrct2/title-sequences")
+                "data/title")
+               (copy-recursively
+                (string-append objects "/share/openrct2/objects")
+                "data/object"))))
+         (add-before 'configure 'get-rid-of-errors
+           (lambda _
+             ;; Don't treat warnings as errors.
+             (substitute* "CMakeLists.txt"
+               (("-Werror") ""))
+             #t)))))
     (inputs `(("curl" ,curl)
               ("fontconfig" ,fontconfig)
               ("freetype" ,freetype)
@@ -4822,6 +4822,8 @@ Crowther & Woods, its original authors, in 1995.  It has been known as
              (("#elif defined(__FreeBSD__)" line)
               (string-append
                line " || defined(__GNUC__)")))
+           (substitute* '("src/tgl.h")
+             (("#include <GL/glext.h>") ""))
            #t))))
     (build-system gnu-build-system)
     (native-inputs
@@ -6272,3 +6274,130 @@ game field is extended to 4D space, which has to filled up by the gamer with
 4D hyper cubes.")
     (license license:gpl3)))
 
+(define-public arx-libertatis
+  (package
+    (name "arx-libertatis")
+    (version "1.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://arx-libertatis.org/files/arx-libertatis-"
+                           version ".tar.xz"))
+       (sha256
+        (base32
+         "0hjfxlsmp8wwqr06snv2dlly2s79ra0d9aw49gkp6rn8m50b9bc2"))))
+    (build-system cmake-build-system)
+    (outputs '("out" "installer"))
+    (arguments
+     '(#:tests? #f                      ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-install-helper-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((p7zip (assoc-ref inputs "p7zip"))
+                   (innoextract (assoc-ref inputs "innoextract"))
+                   (wget (assoc-ref inputs "wget"))
+                   (zenity (assoc-ref inputs "zenity")))
+               (substitute* "scripts/arx-install-data"
+                 (("have innoextract")
+                  (string-append "have " innoextract "/bin/innoextract"))
+                 (("then innoextract")
+                  (string-append "then " innoextract "/bin/innoextract"))
+                 (("else innoextract")
+                  (string-append "else " innoextract "/bin/innoextract"))
+                 (("for _extract_zip_sz in 7za 7z")
+                  (string-append "for _extract_zip_sz in " p7zip "/bin/7za"))
+                 (("else if have 7z")
+                  (string-append "else if have " p7zip "/bin/7za"))
+                 (("7z x -tiso")
+                  (string-append p7zip "/bin/7z x -tiso"))
+                 (("if have wget")
+                  (string-append "if have " wget "/bin/wget"))
+                 (("wget -O")
+                  (string-append wget "/bin/wget -O"))
+                 (("for backend in \\$preferred zenity")
+                  (string-append "for backend in $preferred " zenity "/bin/zenity"))
+                 (("zenity +--title")
+                  (string-append zenity "/bin/zenity --title"))
+                 (("^zenity\\)")
+                  (string-append zenity "/bin/zenity)"))))
+             #t))
+         (add-after 'install 'move-installer
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (installer (assoc-ref outputs "installer")))
+               (mkdir-p (string-append installer "/bin"))
+               (rename-file (string-append out "/bin/arx-install-data")
+                            (string-append installer "/bin/arx-install-data"))))))))
+    (inputs
+     `(("sdl" ,sdl)                     ; Switch to sdl2 in >1.1.2.
+       ("mesa" ,mesa)                   ; Switch to libepoxy in >1.1.2.
+       ("glew" ,glew)
+       ("openal" ,openal)
+       ("zlib" ,zlib)
+       ("boost" ,boost)
+       ("glm" ,glm)
+       ("freetype" ,freetype)
+       ;; The following are only needed by the arx-install-data script.
+       ("p7zip" ,p7zip) ; Install-helper uses it to extract ISO and .cab archives.
+       ("zenity" ,zenity)           ; GUI for install-helper.
+       ("wget" ,wget)     ; Used by the install-helper to download the patch.
+       ;; The install-helper needs it to extract the patch.
+       ("innoextract" ,innoextract)))
+    (home-page "https://arx-libertatis.org/")
+    (synopsis "Port of Arx Fatalis, a first-person role-playing game")
+    (description "Arx Libertatis is a cross-platform, open source port of Arx
+Fatalis, a 2002 first-person role-playing game / dungeon crawler developed by
+Arkane Studios.  This port however does not include the game data, so you need
+to obtain a copy of the original Arx Fatalis or its demo to play Arx
+Libertatis.  Arx Fatalis features crafting, melee and ranged combat, as well
+as a unique casting system where the player draws runes in real time to effect
+the desired spell.")
+    (license license:gpl3+)))
+
+(define-public edgar
+  (package
+    (name "edgar")
+    (version "1.30")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/riksweeney/edgar/releases/download/"
+                       version "/edgar-" version "-1.tar.gz"))
+       (sha256
+        (base32
+         "0bhbs33dg0nb8wqlh6px1jj41j05f89ngdqwdkffabmjk7wq5isx"))))
+    (build-system gnu-build-system)
+    (arguments '(#:tests? #f                    ; there are no tests
+                 #:make-flags
+                 (list "CC=gcc"
+                       (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                       (string-append "BIN_DIR=" (assoc-ref %outputs "out") "/bin/"))
+                 #:phases
+                 (modify-phases %standard-phases
+                   (delete 'configure)
+                   (add-before 'build 'fix-env
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (setenv "CPATH" (string-append (assoc-ref inputs "sdl")
+                                                      "/include/SDL/"))
+                       #t)))))
+    (inputs `(("sdl" ,sdl)
+              ("sdl-img" ,sdl-image)
+              ("sdl-mixer" ,sdl-mixer)
+              ("sdl-ttf" ,sdl-ttf)
+              ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gnu-gettext" ,gnu-gettext)
+       ("libtool" ,libtool)
+       ("which" ,which)))
+    (synopsis "2d action platformer game")
+    (description "The Legend of Edgar is a 2D platform game with a persistent world.
+When Edgar's father fails to return home after venturing out one dark and stormy night,
+Edgar fears the worst: he has been captured by the evil sorcerer who lives in
+a fortress beyond the forbidden swamp.")
+    (home-page "https://www.parallelrealities.co.uk/games/edgar/")
+    (license license:gpl2+)))
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 2012a38e26..5b3f8509f8 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 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -99,15 +99,14 @@ most common applications of GD involve website development.")
 (define-public perl-gd
   (package
     (name "perl-gd")
-    (version "2.69")
+    (version "2.71")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "GD-" version ".tar.gz"))
        (sha256
-        (base32
-         "0palmq7l42fibqxhrabnjm7di4q8kciq9323902d717x3i4jvc6x"))))
+        (base32 "1ivskdb4nwy7ky37369hwkfxp11fkp6ri5k7qlf2dmra7f3y86s5"))))
     (build-system perl-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -130,15 +129,14 @@ you can create PNG images on the fly or modify existing files.")
 (define-public perl-gd-securityimage
   (package
     (name "perl-gd-securityimage")
-    (version "1.73")
+    (version "1.75")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/B/BU/BURAK/"
                            "GD-SecurityImage-" version ".tar.gz"))
        (sha256
-        (base32
-         "1kaxs67rfd4w46lxgcg3pa05a596l0h1k8n4zk2gwrrar4022wpx"))))
+        (base32 "19lf1kzdavrkkx3f900jnpynr55d5kjd2sdmwpfir5dsmkcj9pix"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
index 792bddf5a5..fdf686f9d7 100644
--- a/gnu/packages/genimage.scm
+++ b/gnu/packages/genimage.scm
@@ -35,8 +35,8 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mtools)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages virtualization)
-  #:use-module (gnu packages wm))
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages virtualization))
 
 (define-public genimage
   (package
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index a48fa2387e..4761a277ae 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -52,6 +52,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sqlite)
@@ -201,15 +202,14 @@ and driving.")
 (define-public libgeotiff
   (package
     (name "libgeotiff")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0vjy3bwfhljjx66p9w999i4mdhsf7vjshx29yc3pn5livf5091xd"))
+        (base32 "0rbjqixi4c8yz19larlzq6jda0px2gpmpp9c52cyhplbjsdhsldq"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -741,29 +741,6 @@ to create databases that are optimized for rendering/tile/map-services.")
                license:bsd-2
                license:bsd-3))))
 
-(define-public protozero
-  (package
-    (name "protozero")
-    (version "1.6.5")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/mapbox/protozero.git")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32 "10ldzni46cplmkgx1f73yn95qcb71xh9nxpcfdmi107y3kvicv3c"))))
-    (build-system cmake-build-system)
-    (home-page "https://github.com/mapbox/protozero")
-    (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
-    (description "Protozero is a minimalistic protocol buffer decoder and
-encoder in C++.  The developer using protozero has to manually translate the
-@file{.proto} description into code.")
-    (license (list
-              license:asl2.0            ; for folly
-              license:bsd-2))))
-
 (define-public libosmium
   (package
     (name "libosmium")
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index c3cb9cab23..7ee267c9e2 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net>
 ;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
@@ -221,7 +221,7 @@ also known as DXTn or DXTC) for Mesa.")
 (define-public mesa
   (package
     (name "mesa")
-    (version "18.3.4")
+    (version "18.3.5")
     (source
       (origin
         (method url-fetch)
@@ -233,10 +233,10 @@ also known as DXTn or DXTC) for Mesa.")
                                   version "/mesa-" version ".tar.xz")))
         (sha256
          (base32
-          "01xv03ah4l5lcfx015n3fg1620dh4nbbv6gmhh6zhdsx6sj4sc9j"))
+          "0lvrfjaic7dhay9v52f9k3q5aac8xagfq3pnzjrl0cn65jlaw9s0"))
         (patches
          (search-patches "mesa-skip-disk-cache-test.patch"))))
-    (build-system gnu-build-system)
+    (build-system meson-build-system)
     (propagated-inputs
       `(;; The following are in the Requires.private field of gl.pc.
         ("libdrm" ,libdrm)
@@ -264,7 +264,10 @@ also known as DXTn or DXTC) for Mesa.")
         ("wayland" ,wayland)
         ("wayland-protocols" ,wayland-protocols)))
     (native-inputs
-      `(("pkg-config" ,pkg-config)
+      `(("bison" ,bison)
+        ("flex" ,flex)
+        ("gettext" ,gettext-minimal)
+        ("pkg-config" ,pkg-config)
         ("python" ,python)
         ("python-mako" ,python-mako)
         ("which" ,(@ (gnu packages base) which))))
@@ -273,47 +276,48 @@ also known as DXTn or DXTC) for Mesa.")
        '(,@(match (%current-system)
              ((or "armhf-linux" "aarch64-linux")
               ;; TODO: Fix svga driver for aarch64 and armhf.
-              '("--with-gallium-drivers=etnaviv,freedreno,imx,nouveau,pl111,r300,r600,swrast,tegra,v3d,vc4,virgl"))
+              '("-Dgallium-drivers=etnaviv,freedreno,imx,nouveau,pl111,r300,r600,swrast,tegra,v3d,vc4,virgl"))
              (_
-              '("--with-gallium-drivers=i915,nouveau,r300,r600,radeonsi,svga,swrast,virgl")))
+              '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,svga,swrast,virgl")))
          ;; Enable various optional features.  TODO: opencl requires libclc,
          ;; omx requires libomxil-bellagio
-         "--with-platforms=x11,drm,surfaceless,wayland"
-         "--enable-glx-tls"        ;Thread Local Storage, improves performance
-         ;; "--enable-opencl"
-         ;; "--enable-omx"
-         "--enable-osmesa"
-         "--enable-xa"
+         "-Dplatforms=x11,drm,surfaceless,wayland"
+         "-Dglx=dri"        ;Thread Local Storage, improves performance
+         ;; "-Dopencl=true"
+         ;; "-Domx=true"
+         "-Dosmesa=gallium"
+         "-Dgallium-xa=true"
+
          ;; features required by wayland
-         "--enable-gles2"
-         "--enable-gbm"
-         "--enable-shared-glapi"
+         "-Dgles2=true"
+         "-Dgbm=true"
+         "-Dshared-glapi=true"
 
          ;; Enable Vulkan on i686-linux and x86-64-linux.
          ,@(match (%current-system)
              ("x86_64-linux"
-              '("--with-vulkan-drivers=intel,radeon"))
+              '("-Dvulkan-drivers=intel,amd"))
              ;; TODO: Fix intel driver on i686-linux.
              ("i686-linux"
-              '("--with-vulkan-drivers=radeon"))
+              '("-Dvulkan-drivers=amd"))
              (_
-              '("")))
+              '("-Dvulkan-drivers=auto")))
 
          ;; Also enable the tests.
-         "--enable-gallium-tests"
+         "-Dbuild-tests=true"
 
          ;; on non-intel systems, drop i915 and i965
          ;; from the default dri drivers
          ,@(match (%current-system)
              ((or "x86_64-linux" "i686-linux")
-              '("--with-dri-drivers=i915,i965,nouveau,r200,radeon,swrast"
-                "--enable-llvm"))         ; default is x86/x86_64 only
+              '("-Ddri-drivers=i915,i965,nouveau,r200,r100"
+                "-Dllvm=true"))         ; default is x86/x86_64 only
              (_
-              '("--with-dri-drivers=nouveau,r200,radeon,swrast"))))
+              '("-Ddri-drivers=nouveau,r200,r100"))))
        #:modules ((ice-9 match)
                   (srfi srfi-1)
                   (guix build utils)
-                  (guix build gnu-build-system))
+                  (guix build meson-build-system))
        #:phases
        (modify-phases %standard-phases
          (add-after
@@ -323,7 +327,7 @@ also known as DXTn or DXTC) for Mesa.")
                (("/usr/bin/env python2") (which "python")))
              #t))
          (add-before
-           'build 'fix-dlopen-libnames
+           'configure 'fix-dlopen-libnames
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                ;; Remain agnostic to .so.X.Y.Z versions while doing
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index f3cae2f521..3689c31f30 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
@@ -668,7 +668,7 @@ useful for C++.")
 (define-public perl-glib
   (package
     (name "perl-glib")
-    (version "1.327")
+    (version "1.329")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -676,7 +676,7 @@ useful for C++.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0n7hjhbh5xhagvb0qjwzg21j22ks0csah0chgk98g4wnfllxjl0k"))))
+                "0d9ak0zknz81lv3cqkzr2mxdic6g5rrbb87skqc4jj48rz4f2k3v"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-extutils-depends" ,perl-extutils-depends)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index c4921f6c59..e8c5659a09 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2015, 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
-;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -19,7 +19,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -58,6 +58,7 @@
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages calendar)
@@ -120,6 +121,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages popt)
+  #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
@@ -1310,6 +1312,72 @@ dealing with different structured file formats.")
 (define-public librsvg
   (package
     (name "librsvg")
+    (version "2.40.20")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0ay9himvw1l1swcf3h1312d2iqzfl65kpbfgiyfykgvq7cydvx6g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--disable-static"
+             "--enable-vala") ; needed for e.g. gnome-mines
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "gdk-pixbuf-loader/Makefile.in"
+               ;; By default the gdk-pixbuf loader is installed under
+               ;; gdk-pixbuf's prefix.  Work around that.
+               (("gdk_pixbuf_moduledir = .*$")
+                (string-append "gdk_pixbuf_moduledir = "
+                               "$(prefix)/lib/gdk-pixbuf-2.0/2.10.0/"
+                                "loaders\n"))
+               ;; Drop the 'loaders.cache' file, it's in gdk-pixbuf+svg.
+               (("gdk_pixbuf_cache_file = .*$")
+                "gdk_pixbuf_cache_file = $(TMPDIR)/loaders.cache\n"))
+             #t))
+         (add-before 'check 'remove-failing-tests
+           (lambda _
+             (with-directory-excursion "tests/fixtures/reftests"
+               (for-each delete-file
+                         '(;; 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)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("vala" ,vala)
+       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
+    (inputs
+     `(("pango" ,pango)
+       ("libcroco" ,libcroco)
+       ("bzip2" ,bzip2)
+       ("libgsf" ,libgsf)
+       ("libxml2" ,libxml2)))
+    (propagated-inputs
+     ;; librsvg-2.0.pc refers to all of that.
+     `(("cairo" ,cairo)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("glib" ,glib)))
+    (home-page "https://wiki.gnome.org/LibRsvg")
+    (synopsis "Render SVG files using Cairo")
+    (description
+     "Librsvg is a C library to render SVG files using the Cairo 2D graphics
+library.")
+    (license license:lgpl2.0+)))
+
+(define-public librsvg-next
+  (package
+    (name "librsvg")
     (version "2.44.12")
     (source (origin
               (method url-fetch)
@@ -2382,7 +2450,7 @@ and RDP protocols.")
 (define-public dconf
   (package
     (name "dconf")
-    (version "0.28.0")
+    (version "0.32.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2391,7 +2459,7 @@ and RDP protocols.")
                     name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0hn7v6769xabqz7kvyb2hfm19h46z1whkair7ff752zmbs3b7lv1"))))
+                "1azz4hb9z76yxn34yrrsiib3iqz5z4vpwn5q7cncp55w365ygg38"))))
     (build-system meson-build-system)
     (propagated-inputs
      ;; In Requires of dconf.pc.
@@ -2400,7 +2468,8 @@ and RDP protocols.")
      `(("gtk+" ,gtk+)
        ("dbus" ,dbus)))
     (native-inputs
-     `(("libxslt" ,libxslt)                     ;for xsltproc
+     `(("bash-completion" ,bash-completion)
+       ("libxslt" ,libxslt)                     ;for xsltproc
        ("libxml2" ,libxml2)                     ;for XML_CATALOG_FILES
        ("docbook-xml" ,docbook-xml-4.2)
        ("docbook-xsl" ,docbook-xsl)
@@ -3260,15 +3329,15 @@ playlists in a variety of formats.")
 (define-public aisleriot
   (package
     (name "aisleriot")
-    (version "3.22.5")
+    (version "3.22.8")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://gnome/sources/" name "/"
+              (uri (string-append "mirror://gnome/sources/aisleriot/"
                                   (version-major+minor version) "/"
-                                  name "-" version ".tar.xz"))
+                                  "aisleriot-" version ".tar.xz"))
               (sha256
                (base32
-                "0rl39psr5xi584310pyrgw36ini4wn7yr2m1q5118w3a3v1dkhzh"))))
+                "15pm39679ymxki07sb5nvhycz4z53zwbvascyp5wm4864bn98815"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      '(#:configure-flags
@@ -3764,7 +3833,8 @@ for application developers.")
        (sha256
         (base32
          "1llyisls3pzf5bwkpxyfyxc2d3gpa09n5pjy7qsjdqrp3ya4k36g"))
-       (patches (search-patches "totem-meson-easy-codec.patch"))))
+       (patches (search-patches "totem-meson-easy-codec.patch"
+                                "totem-meson-compat.patch"))))
     (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -4772,7 +4842,7 @@ configuration program to choose applications starting on login.")
        ;; For testing
        ("dbus-launch" ,dbus)
        ("uuidgen" ,util-linux)
-       ("xvfb" ,xorg-server)))
+       ("xvfb" ,xorg-server-for-tests)))
     (propagated-inputs
      ;; These are all in the Requires.private field of gjs-1.0.pc.
      `(("cairo" ,cairo)
@@ -5758,13 +5828,21 @@ properties, screen resolution, and other GNOME parameters.")
                    #t))))
     (build-system meson-build-system)
     (arguments
-     '(#:glib-or-gtk? #t
+     `(#:glib-or-gtk? #t
+       #:disallowed-references ((,glib "bin")
+                                ,inkscape ,libxslt
+                                ,ruby-sass)
        #:configure-flags
        (list "-Dsystemd=false"
              ;; Otherwise, the RUNPATH will lack the final path component.
              (string-append "-Dc_link_args=-Wl,-rpath="
                             (assoc-ref %outputs "out")
                             "/lib/gnome-shell"))
+
+       #:modules ((guix build meson-build-system)
+                  (guix build utils)
+                  (srfi srfi-1))
+
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-keysdir
@@ -5807,7 +5885,16 @@ properties, screen resolution, and other GNOME parameters.")
                     `("PYTHONPATH"      ":" prefix (,python-path))
                     `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
                 '("gnome-shell-extension-tool" "gnome-shell-perf-tool"))
-               #t))))))
+               #t)))
+         (replace 'glib-or-gtk-wrap
+           (let ((wrap (assoc-ref %standard-phases 'glib-or-gtk-wrap)))
+             (lambda* (#:key inputs outputs #:allow-other-keys #:rest rest)
+               ;; By default Inkscape et al. would end up in the XDG_DATA_DIRS
+               ;; settings of the wrappers created by the 'glib-or-gtk-wrap'
+               ;; phase.  Fix that since we don't need these.
+               (wrap #:inputs (fold alist-delete inputs
+                                    '("inkscape" "intltool" "glib:bin"))
+                     #:outputs outputs)))))))
     (native-inputs
      `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
        ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
@@ -5820,7 +5907,7 @@ properties, screen resolution, and other GNOME parameters.")
        ("sassc" ,sassc)
        ("xsltproc" ,libxslt)
        ;; For tests
-       ("xorg-server" ,xorg-server)))
+       ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      `(("accountsservice" ,accountsservice)
        ("caribou" ,caribou)
@@ -7702,3 +7789,52 @@ underlying library but cannot for various reasons.  In most cases, they are
 wildly out of scope for those libraries.  In other cases, they are not quite
 generic enough to work for everyone.")
     (license license:gpl3+)))
+
+(define-public evolution
+  (package
+    (name "evolution")
+    (version "3.28.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/evolution/"
+                                  (version-major+minor version) "/"
+                                  "evolution-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0sdv5lg2vlz5f4raymz9d8a5jq4j18vbqyigaip6508p3bjnfj8l"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "-DENABLE_PST_IMPORT=OFF"    ; libpst is not packaged
+             "-DENABLE_LIBCRYPTUI=OFF"))) ; libcryptui hasn't seen a release
+                                          ; in four years and cannot be built.
+    (native-inputs
+     `(("glib" ,glib "bin")               ; glib-mkenums
+       ("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)
+       ("itstool" ,itstool)))
+    (inputs
+     `(("enchant" ,enchant)
+       ("evolution-data-server" ,evolution-data-server) ; must be the same version
+       ("gcr" ,gcr)
+       ("gnome-autoar" ,gnome-autoar)
+       ("gnome-desktop" ,gnome-desktop)
+       ("gtkspell3" ,gtkspell3)
+       ("highlight" ,highlight)
+       ("libcanberra" ,libcanberra)
+       ("libgweather" ,libgweather)
+       ("libnotify" ,libnotify)
+       ("libsoup" ,libsoup)
+       ("nss" ,nss)
+       ("openldap" ,openldap)
+       ("webkitgtk" ,webkitgtk)
+       ("ytnef" ,ytnef)))
+    (home-page "https://gitlab.gnome.org/GNOME/evolution")
+    (synopsis "Manage your email, contacts and schedule")
+    (description "Evolution is a personal information management application
+that provides integrated mail, calendaring and address book
+functionality.")
+    ;; See COPYING for details.
+    (license (list license:lgpl2.1 license:lgpl3 ; either one of these
+                   license:openldap2.8 ; addressbook/gui/component/openldap-extract.h
+                   license:lgpl2.1+))))  ; smime/lib/*
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 461180161e..19e99644dd 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018, 2019 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;;
@@ -68,16 +68,14 @@
 (define-public libextractor
   (package
    (name "libextractor")
-   (version "1.8")
+   (version "1.9")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libextractor/libextractor-"
                                 version ".tar.gz"))
-            (patches (search-patches "libextractor-CVE-2018-20430.patch"
-                                     "libextractor-CVE-2018-20431.patch"))
             (sha256
              (base32
-              "1z1cb35griqzvshqdv5ck98dy0sgpsswn7fgiy7lbzi34sma8dg2"))))
+              "1zz2zvikvfibxnk1va3kgzs7djsmiqy7bmk8y01vbsf54ryjb3zh"))))
    (build-system gnu-build-system)
    ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
    ;; not to be a symbolic link to /run/shm.
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 42b66f8953..d1d55c3a11 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
@@ -223,14 +223,14 @@ compatible to GNU Pth.")
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.2.13")
+    (version "2.2.14")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1n0igfn9nwdajzkcgdx7apwm9m5rpw0fg6vwskmf1rpranlqgivn"))))
+                "0yzqrg24j9fc4f8ss5pclyvg70a9z53sv89vl77xii8yvi3fvy8v"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 16ed207cb1..4260dfc15d 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
@@ -407,7 +407,7 @@ in C/C++.")
 (define-public nspr
   (package
     (name "nspr")
-    (version "4.20")
+    (version "4.21")
     (source (origin
              (method url-fetch)
              (uri (string-append
@@ -415,7 +415,7 @@ in C/C++.")
                    version "/src/nspr-" version ".tar.gz"))
              (sha256
               (base32
-               "0vjms4j75zvv5b2siyafg7hh924ysx2cwjad8spzp7x87n8n929c"))))
+               "0nkbgk0x31nfm4xl8la0a3vrnpa8gzkh7g4k65p7n880n73k5shm"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("perl" ,perl)))
@@ -443,7 +443,7 @@ in the Mozilla clients.")
 (define-public nss
   (package
     (name "nss")
-    (version "3.42.1")
+    (version "3.43")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -454,7 +454,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1ihzqspvqjmysp1c15xxr7kqvj3zm9dqnanxhkaxyjgx71yv6z88"))
+                "1jp27w4w9nj5pkzrbc1zqj6pa09h2yy7vhzyx5fvg1q86fvw22zk"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-pkgconfig.patch"
                                        "nss-increase-test-timeout.patch"))))
@@ -578,7 +578,7 @@ from forcing GEXP-PROMISE."
                       #:system system
                       #:guile-for-build guile)))
 
-(define %icecat-version "60.5.1-guix1")
+(define %icecat-version "60.6.0-guix1")
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -600,7 +600,7 @@ from forcing GEXP-PROMISE."
                   "firefox-" upstream-firefox-version ".source.tar.xz"))
             (sha256
              (base32
-              "1xbi1gvrrvqby04vx6klxff7h5r87dqgi1fx6i4mbg3ll59gy09z"))))
+              "1mc57dhwyjr6qjm3q617wvj306wi72548wjx7lz1dxkz6hndi03w"))))
 
          (upstream-icecat-base-version "60.3.0") ; maybe older than base-version
          (upstream-icecat-gnu-version "1")
@@ -722,11 +722,15 @@ from forcing GEXP-PROMISE."
                         (string-append old-icecat-dir "/l10n")
                         (string-append old-icecat-dir "/debian"))
 
-                (format #t (string-append "Packing new IceCat tarball...~%"))
+                (format #t "Packing new IceCat tarball...~%")
                 (force-output)
                 (invoke "tar" "cfa" #$output
-                        ;; avoid non-determinism in the archive
-                        "--mtime=@0"
+                        ;; Avoid non-determinism in the archive.  We set the
+                        ;; mtime of files in the archive to early 1980 because
+                        ;; the build process fails if the mtime of source
+                        ;; files is pre-1980, due to the creation of zip
+                        ;; archives.
+                        "--mtime=@315619200" ; 1980-01-02 UTC
                         "--owner=root:0"
                         "--group=root:0"
                         "--sort=name"
diff --git a/gnu/packages/gobby.scm b/gnu/packages/gobby.scm
index 45ebed7c43..a7eb1ea0cd 100644
--- a/gnu/packages/gobby.scm
+++ b/gnu/packages/gobby.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Andy Wingo <wingo@igalia.com>
-;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -182,7 +182,7 @@ together over the internet in real-time.")
 (define-public libinfinity
   (package
     (name "libinfinity")
-    (version "0.6.8")
+    (version "0.7.1")
     (source
      (origin
        (method url-fetch)
@@ -190,12 +190,12 @@ together over the internet in real-time.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0nylsb6qz9pjw3agjp27c4za205i6zg6i5g1vgs5vbdnbh77wkhc"))))
+         "1jw2fhrcbpyz99bij07iyhy9ffyqdn87vl8cb1qz897y3f2f0vk2"))))
     (build-system gnu-build-system)
     (inputs
      `(("glib" ,glib)
        ("gsasl" ,gsasl)
-       ("gtk+" ,gtk+-2)
+       ("gtk+" ,gtk+)
        ("libxml2" ,libxml2)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index cfdf6932bb..cc896405cb 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -12,7 +12,8 @@
 ;;; 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 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright @ 2018, 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
+;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,9 +48,7 @@
   #:use-module (gnu packages lua)
   #:use-module (gnu packages mp3)
   #:use-module (ice-9 match)
-  #:use-module (srfi srfi-1)
-  #:export (go-github-com-gogo-protobuf-union)
-  #:export (go-golang-org-x-crypto-union))
+  #:use-module (srfi srfi-1))
 
 ;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
 ;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
@@ -223,11 +222,11 @@ 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.9
+(define-public go-1.11
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.9.7")
+    (version "1.11.6")
     (source
      (origin
        (method url-fetch)
@@ -235,13 +234,12 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "08kpy874x0rx43zpyv5kwd8xj2ma91xm33i0ka2v1v788px18a2q"))))
+         "0cz1sdhxf9283p1p4jxb020pym0ncd0qlfh36r3hkv6bbm1a2vd9"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:phases phases)
         `(modify-phases ,phases
            (replace 'prebuild
-             ;; TODO: Most of this could be factorized with Go 1.4.
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
                       (ld (string-append (assoc-ref inputs "libc") "/lib"))
@@ -251,43 +249,48 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                        (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
                       (output (assoc-ref outputs "out")))
 
-                 ;; Removing net/ tests, which fail when attempting to access
-                 ;; network resources not present in the build container.
                  (for-each delete-file
+                           ;; Removing net/ tests, which fail when attempting to access
+                           ;; network resources not present in the build container.
                            '("net/listen_test.go"
                              "net/parse_test.go"
-                             "net/cgo_unix_test.go"))
+                             "net/cgo_unix_test.go"
+                             ;; A side effect of these test scripts is testing
+                             ;; cgo. Attempts at using cgo flags and
+                             ;; directives with these scripts as specified
+                             ;; here (https://golang.org/cmd/cgo/) have not
+                             ;; worked. The tests continue to state that they
+                             ;; can not find crt1.o despite being present.
+                             "cmd/go/testdata/script/list_compiled_imports.txt"
+                             "cmd/go/testdata/script/mod_case_cgo.txt"
+                             ;; https://github.com/golang/go/issues/24884
+                             "os/user/user_test.go"))
 
                  (substitute* "os/os_test.go"
                    (("/usr/bin") (getcwd))
                    (("/bin/pwd") (which "pwd"))
                    (("/bin/sh") (which "sh")))
 
+                 (substitute* "cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go"
+                   (("/usr/bin") "/tmp"))
+
                  ;; Add libgcc to runpath
                  (substitute* "cmd/link/internal/ld/lib.go"
                    (("!rpath.set") "true"))
-                 (substitute* "cmd/go/internal/work/build.go"
+                 (substitute* "cmd/go/internal/work/gccgo.go"
                    (("cgoldflags := \\[\\]string\\{\\}")
                     (string-append "cgoldflags := []string{"
                                    "\"-rpath=" gcclib "\""
                                    "}"))
+                   (("\"-lgcc_s\", ")
+                    (string-append
+                     "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
+                 (substitute* "cmd/go/internal/work/gc.go"
                    (("ldflags = setextld\\(ldflags, compiler\\)")
                     (string-append
                      "ldflags = setextld(ldflags, compiler)\n"
                      "ldflags = append(ldflags, \"-r\")\n"
-                     "ldflags = append(ldflags, \"" gcclib "\")\n"))
-                   (("\"-lgcc_s\", ")
-                    (string-append
-                     "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
-
-                 ;; XXX Commit 65fa2b615b72c1fa61a7 in the Go repo.  We do this
-                 ;; without a patch because ((guix packages) patch-and-repack)
-                 ;; resets file mtimes, and parts of Go's test suite rely on
-                 ;; those timestamps.
-                 ;; <https://github.com/golang/go/issues/26369>
-                 (substitute* "cmd/internal/objfile/elf.go"
-                   (("PT_LOAD")
-                     "PT_LOAD && p.Flags&elf.PF_X != 0"))
+                     "ldflags = append(ldflags, \"" gcclib "\")\n")))
 
                  ;; Disable failing tests: these tests attempt to access
                  ;; commands or network resources which are neither available
@@ -322,9 +325,6 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                     ("syscall/exec_linux_test.go"
                      "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
 
-                 (substitute* "../misc/cgo/testsanitizers/test.bash"
-                   (("(CC=)cc" all var) (string-append var "gcc")))
-
                  ;; fix shebang for testar script
                  ;; note the target script is generated at build time.
                  (substitute* "../misc/cgo/testcarchive/carchive_test.go"
@@ -342,19 +342,10 @@ in the style of communicating sequential processes (@dfn{CSP}).")
            (add-before 'build 'set-bootstrap-variables
              (lambda* (#:key outputs inputs #:allow-other-keys)
                ;; Tell the build system where to find the bootstrap Go.
-               (let ((go  (assoc-ref inputs "go"))
-                     (out (assoc-ref outputs "out")))
+               (let ((go  (assoc-ref inputs "go")))
                  (setenv "GOROOT_BOOTSTRAP" go)
-                 (setenv "PATH"
-                         (string-append out "/bin:"
-                                        (dirname (getcwd)) "/bin:"
-                                        (getenv "PATH")))
-
-                 ;; XXX: The following variables seem unrelated.
                  (setenv "GOGC" "400")
-                 (setenv "GO_TEST_TIMEOUT_SCALE" "9999")
                  #t)))
-
            (replace 'build
              (lambda* (#:key inputs outputs #:allow-other-keys)
                ;; FIXME: Some of the .a files are not bit-reproducible.
@@ -375,6 +366,11 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                       (src (string-append
                             (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
                  (delete-file-recursively "../pkg/bootstrap")
+                 ;; Prevent installation of the build cache, which contains
+                 ;; store references to most of the tools used to build Go and
+                 ;; would unnecessarily increase the size of Go's closure if it
+                 ;; was installed.
+                 (delete-file-recursively "../pkg/obj")
 
                  (mkdir-p src)
                  (copy-recursively "../test" (string-append src "/test"))
@@ -406,11 +402,12 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        ,@(package-native-inputs go-1.4)))
     (supported-systems %supported-systems)))
 
-(define-public go-1.11
+
+(define-public go-1.12
   (package
-    (inherit go-1.9)
+    (inherit go-1.4)
     (name "go")
-    (version "1.11.5")
+    (version "1.12.1")
     (source
      (origin
        (method url-fetch)
@@ -418,23 +415,11 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "0gllmbjvp12iszwils8id78mvjxwviwf98lh2gdkb236n4mz07mw"))))
+         "12l12mmgqvy3nbscy7sz83qj4m6iz5a322aq9sk45f7l9ml2gq8b"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments go-1.9)
+     (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:phases phases)
         `(modify-phases ,phases
-           ;; XXX Work around the Go 1.11.5 tarbomb.
-           ;; <https://github.com/golang/go/issues/29906>
-           (add-after 'unpack 'tarbomb-workaround
-             (lambda _
-               (chdir "..")
-               (delete-file-recursively "gocache")
-               (delete-file-recursively "tmp")
-               #t))
-           (replace 'chdir
-             (lambda _
-               (chdir "go/src")
-               #t))
            (replace 'prebuild
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
@@ -445,22 +430,17 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                        (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
                       (output (assoc-ref outputs "out")))
 
-                 (for-each delete-file
-                           ;; Removing net/ tests, which fail when attempting to access
-                           ;; network resources not present in the build container.
-                           '("net/listen_test.go"
-                             "net/parse_test.go"
-                             "net/cgo_unix_test.go"
-                             ;; A side effect of these test scripts is testing
-                             ;; cgo. Attempts at using cgo flags and
-                             ;; directives with these scripts as specified
-                             ;; here (https://golang.org/cmd/cgo/) have not
-                             ;; worked. The tests continue to state that they
-                             ;; can not find crt1.o despite being present.
-                             "cmd/go/testdata/script/list_compiled_imports.txt"
-                             "cmd/go/testdata/script/mod_case_cgo.txt"
-                             ;; https://github.com/golang/go/issues/24884
-                             "os/user/user_test.go"))
+                 ;; A side effect of these test scripts is testing
+                 ;; cgo. Attempts at using cgo flags and directives with these
+                 ;; scripts as specified here (https://golang.org/cmd/cgo/)
+                 ;; have not worked. The tests continue to state that they can
+                 ;; not find object files/headers despite being present.
+                 (for-each
+                  delete-file
+                  '("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"))
 
                  (substitute* "os/os_test.go"
                    (("/usr/bin") (getcwd))
@@ -499,7 +479,17 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                         (string-append before "Disabled" test_name)))))
                   '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
                     ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
+                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
+                    ;; 127.0.0.1 doesn't exist
+                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
+                    ;; 127.0.0.1 doesn't exist
+                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
+                    ;; /etc/services doesn't exist
+                    ("net/parse_test.go" "(.+)(TestReadLine.+)")
                     ("os/os_test.go" "(.+)(TestHostname.+)")
+                    ;; The user's directory doesn't exist
+                    ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
                     ("time/format_test.go" "(.+)(TestParseInSydney.+)")
                     ("time/format_test.go" "(.+)(TestParseInLocation.+)")
                     ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
@@ -535,23 +525,68 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (substitute* (find-files "cmd" "\\.go")
                    (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
                  #t)))
-           ;; Prevent installation of the build cache, which contains store
-           ;; references to most of the tools used to build Go and would
-           ;; unnecessarily increase the size of Go's closure if it was
-           ;; installed.
-           ;; TODO This should be moved into the 'install' phase when Go 1.9 is
-           ;; removed.
-           (add-before 'install 'delete-extraneous-files
-             (lambda _
-               (delete-file-recursively "../pkg/obj")
-               #t))
-           (replace 'set-bootstrap-variables
+           (add-before 'build 'set-bootstrap-variables
              (lambda* (#:key outputs inputs #:allow-other-keys)
                ;; Tell the build system where to find the bootstrap Go.
                (let ((go  (assoc-ref inputs "go")))
                  (setenv "GOROOT_BOOTSTRAP" go)
                  (setenv "GOGC" "400")
-                 #t)))))))))
+                 #t)))
+           (replace 'build
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; FIXME: Some of the .a files are not bit-reproducible.
+               (let* ((output (assoc-ref outputs "out")))
+                 (setenv "CC" (which "gcc"))
+                 (setenv "GOOS" "linux")
+                 (setenv "GOROOT" (dirname (getcwd)))
+                 (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)
+               (let* ((output (assoc-ref outputs "out"))
+                      (doc_out (assoc-ref outputs "doc"))
+                      (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+                      (src (string-append
+                            (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
+                 (delete-file-recursively "../pkg/bootstrap")
+                 ;; Prevent installation of the build cache, which contains
+                 ;; store references to most of the tools used to build Go and
+                 ;; would unnecessarily increase the size of Go's closure if it
+                 ;; was installed.
+                 (delete-file-recursively "../pkg/obj")
+
+                 (mkdir-p src)
+                 (copy-recursively "../test" (string-append src "/test"))
+                 (delete-file-recursively "../test")
+                 (mkdir-p docs)
+                 (copy-recursively "../api" (string-append docs "/api"))
+                 (delete-file-recursively "../api")
+                 (copy-recursively "../doc" (string-append docs "/doc"))
+                 (delete-file-recursively "../doc")
+
+                 (for-each
+                  (lambda (file)
+                    (let* ((filein (string-append "../" file))
+                           (fileout (string-append docs "/" file)))
+                      (copy-file filein fileout)
+                      (delete-file filein)))
+                  ;; Note the slightly different file names compared to 1.4.
+                  '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+                    "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
+
+                 (copy-recursively "../" output)
+                 #t)))))))
+    (native-inputs
+     `(("go" ,go-1.4)
+       ,@(match (%current-system)
+           ((or "armhf-linux" "aarch64-linux")
+            `(("gold" ,binutils-gold)))
+           (_ `()))
+       ,@(package-native-inputs go-1.4)))
+    (supported-systems %supported-systems)))
 
 (define-public go go-1.11)
 
@@ -740,8 +775,8 @@ expressing configuration which is easy for both humans and machines to read.")
       (license license:mpl2.0))))
 
 (define-public go-golang-org-x-crypto-bcrypt
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-bcrypt")
       (version (git-version "0.0.0" revision commit))
@@ -754,22 +789,11 @@ expressing configuration which is easy for both humans and machines to read.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/bcrypt"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Bcrypt in Go")
       (description "This package provides a Go implementation of the bcrypt
 password hashing function.")
@@ -777,8 +801,8 @@ password hashing function.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-blowfish
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-blowfish")
       (version (git-version "0.0.0" revision commit))
@@ -791,22 +815,11 @@ password hashing function.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/blowfish"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Blowfish in Go")
       (description "This package provides a Go implementation of the Blowfish
 symmetric-key block cipher.")
@@ -814,8 +827,8 @@ symmetric-key block cipher.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-pbkdf2
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-pbkdf2")
       (version (git-version "0.0.0" revision commit))
@@ -828,22 +841,11 @@ symmetric-key block cipher.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/pbkdf2"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "PBKDF2 in Go")
       (description "This package provides a Go implementation of the PBKDF2 key
 derivation function.")
@@ -851,8 +853,8 @@ derivation function.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-tea
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-tea")
       (version (git-version "0.0.0" revision commit))
@@ -865,22 +867,11 @@ derivation function.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/tea"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Tiny Encryption Algorithm (TEA) in Go")
       (description "This packages a Go implementation of the Tiny Encryption
 Algorithm (TEA) block cipher.")
@@ -888,8 +879,8 @@ Algorithm (TEA) block cipher.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-salsa20
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-salsa20")
       (version (git-version "0.0.0" revision commit))
@@ -902,22 +893,11 @@ Algorithm (TEA) block cipher.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/salsa20"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Salsa20 in Go")
       (description "This packages provides a Go implementation of the Salsa20
 stream cipher.")
@@ -925,8 +905,8 @@ stream cipher.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-cast5
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-cast5")
       (version (git-version "0.0.0" revision commit))
@@ -939,22 +919,11 @@ stream cipher.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/cast5"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Cast5 in Go")
       (description "This packages provides a Go implementation of the Cast5
 symmetric-key block cipher.")
@@ -962,8 +931,8 @@ symmetric-key block cipher.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-twofish
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-twofish")
       (version (git-version "0.0.0" revision commit))
@@ -976,22 +945,11 @@ symmetric-key block cipher.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/twofish"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Twofish in Go")
       (description "This packages provides a Go implementation of the Twofish
 symmetric-key block cipher.")
@@ -999,8 +957,8 @@ symmetric-key block cipher.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-crypto-xtea
-  (let ((commit "95a4943f35d008beabde8c11e5075a1b714e6419")
-        (revision "1"))
+  (let ((commit "0fcca4842a8d74bfddc2c96a073bd2a4d2a7a2e8")
+        (revision "2"))
     (package
       (name "go-golang-org-x-crypto-xtea")
       (version (git-version "0.0.0" revision commit))
@@ -1013,22 +971,11 @@ symmetric-key block cipher.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "0bkm0jx9mxmi1liabb9c04kf765n7d0062zdp3zmvzyamsq00lcx"))))
+                  "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/crypto/xtea"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "eXtended Tiny Encryption Algorithm (XTEA) in Go")
       (description "This package provides a Go implementation of the eXtended
 Tiny Encryption Algorithm (XTEA) block cipher.")
@@ -1040,9 +987,19 @@ Tiny Encryption Algorithm (XTEA) block cipher.")
     (inherit go-golang-org-x-crypto-bcrypt)
     (name "go-golang-org-x-crypto-ed25519")
     (arguments
-     (substitute-keyword-arguments (package-arguments go-golang-org-x-crypto-bcrypt)
-       ((#:import-path _)
-        "golang.org/x/crypto/ed25519")))
+     `(#:import-path "golang.org/x/crypto/ed25519"
+       #:unpack-path "golang.org/x/crypto"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (map (lambda (file)
+                    (make-file-writable file))
+                  (find-files
+                    (string-append (assoc-ref outputs "out")
+                                   "/src/golang.org/x/crypto/ed25519/testdata")
+                    ".*\\.gz$"))
+             #t)))))
     (synopsis "ED25519 in Go")
     (description "This package provides a Go implementation of the ED25519
 signature algorithm.")))
@@ -1084,51 +1041,9 @@ hash algorithm.")))
 fixed-output-length hash functions and the SHAKE variable-output-length hash
 functions defined by FIPS-202.")))
 
-;; Go searches for library modules by looking in the GOPATH environment
-;; variable.  This variable is a list of paths.  However, Go does not
-;; keep searching on GOPATH if it tries and fails to import a module.
-;; So, we use a union for packages sharing a namespace.
-(define* (go-golang-org-x-crypto-union #:optional
-                                    (packages (list go-golang-org-x-crypto-blowfish
-                                                    go-golang-org-x-crypto-bcrypt
-                                                    go-golang-org-x-crypto-tea
-                                                    go-golang-org-x-crypto-xtea
-                                                    go-golang-org-x-crypto-pbkdf2
-                                                    go-golang-org-x-crypto-twofish
-                                                    go-golang-org-x-crypto-cast5
-                                                    go-golang-org-x-crypto-salsa20
-                                                    go-golang-org-x-crypto-ed25519
-                                                    go-golang-org-x-crypto-ripemd160
-                                                    go-golang-org-x-crypto-blake2s
-                                                    go-golang-org-x-crypto-sha3)))
-  (package
-    (name "go-golang-org-x-crypto")
-    (version (package-version go-golang-org-x-crypto-bcrypt))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of the Go x crypto libraries")
-    (description "A union of the Golang cryptographic libraries.  A
-union is required because `go build` assumes that all of the headers and
-libraries are in the same directory.")
-    (home-page (package-home-page go-golang-org-x-crypto-bcrypt))
-    (license (package-license go-golang-org-x-crypto-bcrypt))))
-
 (define-public go-golang-org-x-net-ipv4
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-ipv4")
       (version (git-version "0.0.0" revision commit))
@@ -1140,7 +1055,7 @@ libraries are in the same directory.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/ipv4"
@@ -1152,8 +1067,8 @@ socket options for the Internet Protocol version 4.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-net-bpf
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-bpf")
       (version (git-version "0.0.0" revision commit))
@@ -1166,7 +1081,7 @@ socket options for the Internet Protocol version 4.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/bpf"
@@ -1178,8 +1093,8 @@ Packet Filter (BPF) virtual machine.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-net-context
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-context")
       (version (git-version "0.0.0" revision commit))
@@ -1192,7 +1107,7 @@ Packet Filter (BPF) virtual machine.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/context"
@@ -1204,9 +1119,59 @@ request-scoped values across API boundaries and between processes.")
       (home-page "https://go.googlesource.com/net/")
       (license license:bsd-3))))
 
+(define-public go-golang-org-x-net-internal-socks
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
+    (package
+      (name "go-golang-org-x-net-internal-socks")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/internal/socks"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "")
+      (description "")
+      (home-page "https://go.googlesource.com/net/")
+      (license license:bsd-3))))
+
+(define-public go-golang-org-x-net-internal-socket
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
+    (package
+      (name "go-golang-org-x-net-internal-socket")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://go.googlesource.com/net")
+                      (commit commit)))
+                (file-name (string-append "go.googlesource.com-net-"
+                                          version "-checkout"))
+                (sha256
+                 (base32
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
+      (build-system go-build-system)
+      (arguments
+       `(#:import-path "golang.org/x/net/internal/socket"
+         #:unpack-path "golang.org/x/net"))
+      (synopsis "")
+      (description "")
+      (home-page "https://go.googlesource.com/net/")
+      (license license:bsd-3))))
+
 (define-public go-golang-org-x-net-internal-iana
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-internal-iana")
       (version (git-version "0.0.0" revision commit))
@@ -1219,7 +1184,7 @@ request-scoped values across API boundaries and between processes.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/internal/iana"
@@ -1231,8 +1196,8 @@ number resources managed by the Internet Assigned Numbers Authority (IANA).")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-net-ipv6
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-ipv6")
       (version (git-version "0.0.0" revision commit))
@@ -1245,7 +1210,7 @@ number resources managed by the Internet Assigned Numbers Authority (IANA).")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/ipv6"
@@ -1257,8 +1222,8 @@ IP-level socket options for the Internet Protocol version 6.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-net-proxy
-  (let ((commit "d866cfc389cec985d6fda2859936a575a55a3ab6")
-        (revision "1"))
+  (let ((commit "351d144fa1fc0bd934e2408202be0c29f25e35a0")
+        (revision "2"))
     (package
       (name "go-golang-org-x-net-proxy")
       (version (git-version "0.0.0" revision commit))
@@ -1271,7 +1236,7 @@ IP-level socket options for the Internet Protocol version 6.")
                                           version "-checkout"))
                 (sha256
                  (base32
-                  "10iahqcsiih5hgmqw8yfgv5b3fimfwl1skxg5062avcjjks59f03"))))
+                  "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/net/proxy"
@@ -1283,8 +1248,8 @@ for a variety of protocols to proxy network data.")
       (license license:bsd-3))))
 
 (define-public go-golang-org-x-sys-unix
-  (let ((commit "83801418e1b59fb1880e363299581ee543af32ca")
-        (revision "1"))
+  (let ((commit "4d1cda033e0619309c606fc686de3adcf599539e")
+        (revision "2"))
     (package
       (name "go-golang-org-x-sys-unix")
       (version (git-version "0.0.0" revision commit))
@@ -1296,19 +1261,11 @@ for a variety of protocols to proxy network data.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0ilykaanvnzb27d42kmbr4i37hcn7hgqbx98z945gy63aa8dskji"))))
+                  "1wgaldbnkmh568v8kkgvnmkskaj96fqrbzhx23yji2kh1432q6gh"))))
       (build-system go-build-system)
       (arguments
        `(#:import-path "golang.org/x/sys/unix"
-         #:unpack-path "golang.org/x/sys"
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'patch-tests
-             (lambda _
-               (pk (getcwd))
-               (substitute* "src/golang.org/x/sys/unix/syscall_unix_test.go"
-                 (("/usr/bin") "/tmp"))
-               #t)))))
+         #:unpack-path "golang.org/x/sys"))
       (synopsis "Go support for low-level system interaction")
       (description "This package provides @code{unix}, which offers Go support
 for low-level interaction with the operating system.")
@@ -1417,18 +1374,7 @@ limiting in Go.")
        `(("go-golang-org-x-sys-unix" ,go-golang-org-x-sys-unix)))
       (arguments
        `(#:import-path "golang.org/x/crypto/ssh/terminal"
-         #:unpack-path "golang.org/x/crypto"
-         #:phases
-         (modify-phases %standard-phases
-           (add-before 'reset-gzip-timestamps 'make-gzip-archive-writable
-             (lambda* (#:key outputs #:allow-other-keys)
-               (map (lambda (file)
-                      (make-file-writable file))
-                    (find-files
-                      (string-append (assoc-ref outputs "out")
-                                     "/src/golang.org/x/crypto/ed25519/testdata")
-                      ".*\\.gz$"))
-               #t)))))
+         #:unpack-path "golang.org/x/crypto"))
       (synopsis "Terminal functions for Go")
       (description "This package provides @{terminal}, which implements
 support functions for dealing with terminals, as commonly found on UNIX
@@ -2084,30 +2030,28 @@ values.")
       (license license:asl2.0))))
 
 (define-public go-github-com-mattn-go-isatty
-  (let ((commit "6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c")
-        (revision "0"))
-    (package
-      (name "go-github-com-mattn-go-isatty")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/mattn/go-isatty")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/mattn/go-isatty"))
-      (home-page "https://github.com/mattn/go-isatty")
-      (synopsis "Provide @code{isatty} for Golang")
-      (description "This package provides @code{isatty}, a Go module that can
+  (package
+    (name "go-github-com-mattn-go-isatty")
+    (version "0.0.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mattn/go-isatty")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/mattn/go-isatty"))
+    (home-page "https://github.com/mattn/go-isatty")
+    (synopsis "Provide @code{isatty} for Golang")
+    (description "This package provides @code{isatty}, a Go module that can
 tell you whether a file descriptor points to a terminal and the type of the
 terminal.")
-      (license license:expat))))
+    (license license:expat)))
 
 (define-public go-github-com-mattn-go-colorable
   (let ((commit "efa589957cd060542a26d2dd7832fd6a6c6c3ade")
@@ -2348,32 +2292,6 @@ methods can be called and usual operations such as indexing or arithmetic can
 be performed.")
       (license license:expat))))
 
-(define-public go-github-com-kr-text
-  (let ((commit "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f")
-        (revision "0"))
-    (package
-      (name "go-github-com-kr-text")
-      (version (git-version "0.0.0" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url
-                "https://github.com/kr/text")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/kr/text"))
-      (home-page "https://github.com/kr/text")
-      (synopsis "Go package for manipulating paragraphs of text")
-      (description "Package @code{text} provides manipulation Go functions for
-paragraphs of text.")
-      (license license:expat))))
-
 (define-public go-github-com-michiwend-golang-pretty
   (let ((commit "8ac61812ea3fa540f3f141a444fcb0dd713cdca4")
         (revision "0"))
@@ -2478,56 +2396,25 @@ and lookup requests.  Browse requests are not supported yet.")
       (description "Go wrapper for taglib")
       (license license:unlicense))))
 
-(define* (go-github-com-gogo-protobuf-union
-           #:optional (packages (list go-github-com-gogo-protobuf
-                                      go-github-com-gogo-protobuf-protoc-gen-gogo)))
+(define-public go-github-com-gogo-protobuf
   (package
-    (name "go-github-com-gogo-protobuf-union")
-    (version (package-version go-github-com-gogo-protobuf))
-    (source #f)
-    (build-system trivial-build-system)
+    (name "go-github-com-gogo-protobuf")
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/gogo/protobuf")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
+    (build-system go-build-system)
     (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of Go protobuf libraries")
-    (description "This is a union of Go protobuf libraries")
-    (home-page (package-home-page go-github-com-gogo-protobuf))
-    (license (package-license go-github-com-gogo-protobuf))))
-
-(define-public go-github-com-gogo-protobuf
-  (let ((commit "160de10b2537169b5ae3e7e221d28269ef40d311")
-        (revision "2"))
-    (package
-      (name "go-github-com-gogo-protobuf")
-      (version (git-version "0.5" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/gogo/protobuf")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0hxq28sgxym04rv0q40gpwkh4ni359q21hq3g78wwxwx4qfd4zwm"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/gogo/protobuf/proto"
-         #:unpack-path "github.com/gogo/protobuf"))
-      (propagated-inputs
-       `(("go-github-com-gogo-protobuf-protoc-gen-gogo"
-          ,go-github-com-gogo-protobuf-protoc-gen-gogo)))
-      (synopsis "Protocol Buffers for Go with Gadgets")
-      (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+     `(#:import-path "github.com/gogo/protobuf/proto"
+       #:unpack-path "github.com/gogo/protobuf"))
+    (synopsis "Protocol Buffers for Go with Gadgets")
+    (description "Gogoprotobuf is a fork of golang/protobuf with extra code
 generation features.  This code generation is used to achieve:
 @itemize
 @item fast marshalling and unmarshalling
@@ -2537,30 +2424,29 @@ generation features.  This code generation is used to achieve:
 @item peace of mind by optionally generating test and benchmark code
 @item other serialization formats
 @end itemize")
-      (home-page "https://github.com/gogo/protobuf")
-      (license license:bsd-3))))
+    (home-page "https://github.com/gogo/protobuf")
+    (license license:bsd-3)))
 
 (define-public go-github-com-gogo-protobuf-protoc-gen-gogo
-  (let ((commit "efccd33a0c20aa078705571d5ddbfa14c8395a63")
-        (revision "0"))
-    (package
-      (name "go-github-com-gogo-protobuf-protoc-gen-gogo")
-      (version (git-version "0.2" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/gogo/protobuf")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "09kfa3aqmhh7p0rc6wd4fw5cjccidsk9vgcy13albv0g8vnbmmgw"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/gogo/protobuf/protoc-gen-gogo"
-         #:unpack-path "github.com/gogo/protobuf"))
-      (synopsis "Protocol Buffers for Go with Gadgets")
-      (description "Gogoprotobuf is a fork of golang/protobuf with extra code
+  (package
+    (name "go-github-com-gogo-protobuf-protoc-gen-gogo")
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/gogo/protobuf")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/gogo/protobuf/protoc-gen-gogo"
+       #:unpack-path "github.com/gogo/protobuf"
+       #:tests? #f)) ; Requires the unpackaged 'protoc-min-version'
+    (synopsis "Protocol Buffers for Go with Gadgets")
+    (description "Gogoprotobuf is a fork of golang/protobuf with extra code
 generation features.  This code generation is used to achieve:
 @itemize
 @item fast marshalling and unmarshalling
@@ -2570,35 +2456,56 @@ generation features.  This code generation is used to achieve:
 @item peace of mind by optionally generating test and benchmark code
 @item other serialization formats
 @end itemize")
-      (home-page "https://github.com/gogo/protobuf")
-      (license license:bsd-3))))
+    (home-page "https://github.com/gogo/protobuf")
+    (license license:bsd-3)))
+
+(define-public go-github-com-gogo-protobuf-gogoproto
+  (package
+    (name "go-github-com-gogo-protobuf-gogoproto")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/gogo/protobuf.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:unpack-path "github.com/gogo/protobuf"
+       #:import-path "github.com/gogo/protobuf/gogoproto"))
+    (home-page "https://github.com/gogo/protobuf")
+    (synopsis "Extensions to protocol buffers")
+    (description "This package provides extensions to the Gogo protocol buffers
+implementation.")
+    (license license:bsd-3)))
 
 (define-public go-github-com-gogo-protobuf-proto
-  (let ((commit
-          "fd322a3c49630fe6d05737e2b7d9426e6680e28d")
-        (revision "0"))
-    (package
-      (name "go-github-com-gogo-protobuf-proto")
-      (version (git-version "0.0.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/gogo/protobuf.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-            (base32
-              "1zi85584dy91hyrwpanygz1pppi0chn3hzzv128i83i6j45a5fp9"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:unpack-path "github.com/gogo/protobuf"
-         #:import-path "github.com/gogo/protobuf/proto"))
-      (native-inputs `())
-      (home-page "https://github.com/gogo/protobuf")
-      (synopsis "XXX")
-      (description "XXX")
-      (license license:expat))))
+  (package
+    (name "go-github-com-gogo-protobuf-proto")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/gogo/protobuf.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "06yqa6h0kw3gr5pc3qmas7f7435a96zf7iw7p0l00r2hqf6fqq6m"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:unpack-path "github.com/gogo/protobuf"
+       #:import-path "github.com/gogo/protobuf/proto"))
+    (home-page "https://github.com/gogo/protobuf")
+    (synopsis "Protocol buffers component")
+    (description "This is a component of the Gogo protocol buffers
+implementation.")
+    (license license:bsd-3)))
 
 (define-public go-github-com-libp2p-go-flow-metrics
   (let ((commit "7e5a55af485341567f98d6847a373eb5ddcdcd43")
@@ -2733,8 +2640,8 @@ needing to use secp256k1 elliptic curve cryptography.")
       (license license:isc))))
 
 (define-public go-github-com-minio-sha256-simd
-  (let ((commit "51976451ce1942acbb55707a983ed232fa027110")
-        (revision "2"))
+  (let ((commit "cc1980cb03383b1d46f518232672584432d7532d")
+        (revision "3"))
     (package
       (name "go-github-com-minio-sha256-simd")
       (version (git-version "0.0.0" revision commit))
@@ -2747,7 +2654,7 @@ needing to use secp256k1 elliptic curve cryptography.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0kaxvpidf6ygkkb06vi95pirll31jnmywhyalfjvf7djhim2wr8f"))))
+           "04fp98nal0wsb26zwhw82spn5camxslc68g3xp8g4af9w6k9g31j"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/minio/sha256-simd"))
@@ -2936,7 +2843,8 @@ required by Go's standard Hash interface.")
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
       (home-page "https://github.com/multiformats/go-multihash")
       (synopsis "Multihash implementation in Go")
       (description "Multihash implementation in Go.")
@@ -2971,7 +2879,9 @@ required by Go's standard Hash interface.")
          ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
          ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
+         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
       (home-page "https://github.com/libp2p/go-libp2p-peer")
       (synopsis "PKI based identities for use in go-libp2p")
       (description "PKI based identities for use in @command{go-libp2p}.")
@@ -3034,7 +2944,9 @@ required by Go's standard Hash interface.")
          ("go-github-com-minio-blake2b-simd" ,go-github-com-minio-blake2b-simd)
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
+         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
       (home-page "https://github.com/libp2p/go-libp2p-metrics")
       (synopsis "Connection wrapper for go-libp2p that provides bandwidth metrics")
       (description "A connection wrapper for @command{go-libp2p} that provides bandwidth
@@ -3107,7 +3019,8 @@ cross-compilation.")
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
       (home-page "https://github.com/multiformats/go-multiaddr")
       (synopsis "Composable and future-proof network addresses")
       (description "Multiaddr is a standard way to represent addresses that
@@ -3151,7 +3064,8 @@ does the following:
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))))
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)))
       (home-page "https://github.com/multiformats/go-multiaddr-net")
       (synopsis "Multiaddress net tools")
       (description "This package provides Multiaddr specific versions of
@@ -3245,11 +3159,11 @@ as conversion to and from @command{net.Addr}.")
       (license license:expat))))
 
 (define-public go-github-com-urfave-cli
-  (let ((commit "934abfb2f102315b5794e15ebc7949e4ca253920")
+  (let ((commit "693af58b4d51b8fcc7f9d89576da170765980581")
         (revision "0"))
     (package
       (name "go-github-com-urfave-cli")
-      (version (git-version "1.19.1" revision commit))
+      (version (git-version "1.20.0" revision commit))
       (source
        (origin
          (method git-fetch)
@@ -3259,7 +3173,7 @@ as conversion to and from @command{net.Addr}.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "0c5r8pgj3k48dfcwj8lw3cxkwkl8vh0fhvz5snfdwd0bcxdqx1yq"))))
+           "1krq752xgy658an1696vf4dc2zmp541clwjinhn11394sx2qksh6"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/urfave/cli"))
@@ -3394,3 +3308,81 @@ have super fancy logs.")
       (description "This package provides a library for parsing the dotenv
 format in Go.")
       (license license:expat))))
+
+(define-public go-github-com-kr-pretty
+  (package
+    (name "go-github-com-kr-pretty")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/kr/pretty.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp"))))
+    (build-system go-build-system)
+    (propagated-inputs
+     `(("go-github-com-kr-text" ,go-github-com-kr-text)))
+    (arguments
+     '(#:import-path "github.com/kr/pretty"))
+    (synopsis "A pretty printer for Go values")
+    (description "This package provides a pretty printer for Go values.")
+    (home-page "https://github.com/kr/pretty")
+    (license license:expat)))
+
+(define-public go-github-com-kr-text
+  (package
+    (name "go-github-com-kr-text")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/kr/text.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/kr/text"))
+    (synopsis "Text formatting in Go")
+    (description "This package provides a text formatting functions in Go.")
+    (home-page "https://github.com/kr/text")
+    (license license:expat)))
+
+(define-public go-github-com-burntsushi-locker
+  (let ((commit "a6e239ea1c69bff1cfdb20c4b73dadf52f784b6a")
+        (revision "0"))
+    (package
+      (name "go-github-com-burntsushi-locker")
+      (version (git-version "0.0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/BurntSushi/locker")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1xak4aync4klswq5217qvw191asgla51jr42y94vp109lirm5dzg"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/BurntSushi/locker"))
+      (home-page "https://github.com/BurntSushi/locker")
+      (synopsis "Manage named ReadWrite mutexes in Go")
+      (description "Golang package for conveniently using named read/write
+locks.  These appear to be especially useful for synchronizing access to
+session based information in web applications.
+
+The common use case is to use the package level functions, which use a package
+level set of locks (safe to use from multiple goroutines
+simultaneously).  However, you may also create a new separate set of locks
+test.
+
+All locks are implemented with read-write mutexes.  To use them like a regular
+mutex, simply ignore the RLock/RUnlock functions.")
+      (license license:unlicense))))
diff --git a/gnu/packages/gpodder.scm b/gnu/packages/gpodder.scm
new file mode 100644
index 0000000000..5b872908a5
--- /dev/null
+++ b/gnu/packages/gpodder.scm
@@ -0,0 +1,79 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.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 gpodder)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt))
+
+(define-public libmygpo-qt
+  (package
+    (name "libmygpo-qt")
+    (version "1.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://stefan.derkits.at/files/"
+                                  "libmygpo-qt/libmygpo-qt." version ".tar.gz"))
+              (sha256
+               (base32
+                "1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2"))
+              (patches (search-patches "libmygpo-qt-fix-qt-5.11.patch"
+                                       "libmygpo-qt-missing-qt5-modules.patch"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("qt" ,qtbase)))
+    (arguments
+     `(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON")
+       ;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446
+       ;; is fixed.
+       #:tests? #f))
+    (home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt")
+    (synopsis "Qt/C++ library wrapping the gpodder web service")
+    (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
+@url{https://gpodder.net} APIs.  It allows applications to discover, manage
+and track podcasts.")
+    (license license:lgpl2.1+)))
+
+(define-public python-podcastparser
+  (package
+    (name "python-podcastparser")
+    (version "0.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "podcastparser" version))
+       (sha256
+        (base32
+         "1ksj1gcmbnm5i43xhpqxbs2mqi6xzawwwkwbh9h6lwa1wxxvv247"))))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (build-system python-build-system)
+    (home-page "http://gpodder.org/podcastparser")
+    (synopsis "Simplified and fast RSS parser Python library")
+    (description "@code{podcastparser} is a library for the gPodder project to
+provide an easy and reliable way of parsing RSS and Atom-based podcast feeds
+in Python.")
+    (license license:isc)))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index bf4cc89b08..11158bdfd1 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2018 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -165,10 +166,98 @@ the 3D pipeline—modeling, rigging, animation, simulation, rendering,
 compositing and motion tracking, even video editing and game creation.  The
 application can be customized via its API for Python scripting.
 
-WARNING: This package offers a beta build of Blender, because the stable release
-no longer works in Guix. See @uref{https://issues.guix.info/issue/33882}.")
+WARNING: This is a beta build of Blender.")
     (license license:gpl2+))))
 
+(define-public blender-2.79
+  (package
+    (name "blender")
+    (version "2.79b")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://download.blender.org/source/"
+                                  "blender-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1g4kcdqmf67srzhi3hkdnr4z1ph4h9sza1pahz38mrj998q4r52c"))
+              (patches (search-patches "blender-2.79-newer-ffmpeg.patch"
+                                       "blender-2.79-python-3.7-fix.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+      (let ((python-version (version-major+minor (package-version python))))
+       `(;; Test files are very large and not included in the release tarball.
+         #:tests? #f
+         #:configure-flags
+         (list "-DWITH_CODEC_FFMPEG=ON"
+               "-DWITH_CODEC_SNDFILE=ON"
+               "-DWITH_CYCLES=ON"
+               "-DWITH_DOC_MANPAGE=ON"
+               "-DWITH_FFTW3=ON"
+               "-DWITH_GAMEENGINE=ON"
+               "-DWITH_IMAGE_OPENJPEG=ON"
+               "-DWITH_INPUT_NDOF=ON"
+               "-DWITH_INSTALL_PORTABLE=OFF"
+               "-DWITH_JACK=ON"
+               "-DWITH_MOD_OCEANSIM=ON"
+               "-DWITH_PLAYER=ON"
+               "-DWITH_PYTHON_INSTALL=OFF"
+               "-DWITH_PYTHON_INSTALL=OFF"
+               "-DWITH_SYSTEM_OPENJPEG=ON"
+               (string-append "-DPYTHON_LIBRARY=python" ,python-version "m")
+               (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
+                              "/lib")
+               (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python")
+                              "/include/python" ,python-version "m")
+               (string-append "-DPYTHON_VERSION=" ,python-version))
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-broken-import
+             (lambda _
+               (substitute* "release/scripts/addons/io_scene_fbx/json2fbx.py"
+                 (("import encode_bin") "from . import encode_bin"))
+               #t))
+           (add-after 'set-paths 'add-ilmbase-include-path
+             (lambda* (#:key inputs #:allow-other-keys)
+               ;; OpenEXR propagates ilmbase, but its include files do not appear
+               ;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
+               ;; the CPATH to satisfy the dependency on "half.h".
+               (setenv "CPATH"
+                       (string-append (assoc-ref inputs "ilmbase")
+                                      "/include/OpenEXR"
+                                      ":" (or (getenv "CPATH") "")))
+               #t))))))
+    (inputs
+     `(("boost" ,boost)
+       ("jemalloc" ,jemalloc)
+       ("libx11" ,libx11)
+       ("openimageio" ,openimageio)
+       ("openexr" ,openexr)
+       ("ilmbase" ,ilmbase)
+       ("openjpeg" ,openjpeg-1)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("ffmpeg" ,ffmpeg)
+       ("fftw" ,fftw)
+       ("jack" ,jack-1)
+       ("libsndfile" ,libsndfile)
+       ("freetype" ,freetype)
+       ("glew" ,glew)
+       ("openal" ,openal)
+       ("python" ,python)
+       ("zlib" ,zlib)))
+    (home-page "https://blender.org/")
+    (synopsis "3D graphics creation suite")
+    (description
+     "Blender is a 3D graphics creation suite.  It supports the entirety of
+the 3D pipeline—modeling, rigging, animation, simulation, rendering,
+compositing and motion tracking, even video editing and game creation.  The
+application can be customized via its API for Python scripting.
+
+NOTE: This older version of Blender is the last release that does not require
+OpenGL 3.  It is retained for use with older computers.")
+    (license license:gpl2+)))
+
 (define-public assimp
   (package
     (name "assimp")
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 48a4dffa46..9e9f119770 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -227,6 +227,7 @@ for the GStreamer multimedia library.")
        ("flac" ,flac)
        ("gdk-pixbuf" ,gdk-pixbuf)
        ("gst-plugins-base" ,gst-plugins-base)
+       ("gtk+" ,gtk+)
        ("jack" ,jack-1)
        ("lame" ,lame)
        ("libavc1394" ,libavc1394)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 1a454fb6f1..f006795a16 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -85,7 +85,7 @@
 (define-public atk
   (package
    (name "atk")
-   (version "2.28.1")
+   (version "2.32.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -93,17 +93,12 @@
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "1z7laf6qwv5zsqcnj222dm5f43c6f3liil0cgx4s4s62xjk1wfnd"))))
-   (build-system gnu-build-system)
-   (outputs '("out" "doc"))
-   (arguments
-    `(#:configure-flags
-      (list (string-append "--with-html-dir="
-                           (assoc-ref %outputs "doc")
-                           "/share/gtk-doc/html"))))
+              "1k4i817bd2w5b9z394f2yyx95591l2746wa40am0vvz4gzdgwhfb"))))
+   (build-system meson-build-system)
    (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
    (native-inputs
     `(("pkg-config" ,pkg-config)
+      ("gettext" ,gettext-minimal)
       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
    (synopsis "GNOME accessibility toolkit")
@@ -402,9 +397,9 @@ printing and other features typical of a source code editor.")
    (version "4.0.2")
    (source (origin
              (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/" name "/"
+             (uri (string-append "mirror://gnome/sources/gtksourceview/"
                                  (version-major+minor version) "/"
-                                 name "-" version ".tar.xz"))
+                                 "gtksourceview-" version ".tar.xz"))
              (sha256
               (base32
                "1b2z9c0skxrgw2vh08hv6qxky8jbvamc4rgww82j0kpp533rz0hm"))))
@@ -447,7 +442,7 @@ highlighting and other features typical of a source code editor.")
 (define-public gtksourceview-3
  (package (inherit gtksourceview)
    (name "gtksourceview")
-   (version "3.24.7")
+   (version "3.24.10")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
@@ -455,7 +450,7 @@ highlighting and other features typical of a source code editor.")
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
-               "1rp8zspwyw3mmdgccsas3pa6v7s0hqjaaglg6n4kcls7ccx0vhm5"))))))
+               "16ym7jwiki4s1pilwr4incx0yg7ll94f1cajrnpndkxxs36hcm5b"))))))
 
 (define-public gdk-pixbuf
   (package
@@ -560,20 +555,21 @@ in the GNOME project.")
 (define-public at-spi2-core
   (package
    (name "at-spi2-core")
-   (version "2.28.0")
+   (version "2.32.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
                                 (version-major+minor version)  "/"
                                 name "-" version ".tar.xz"))
+            (patches (search-patches "at-spi2-core-meson-compat.patch"))
             (sha256
              (base32
-              "11qwdxxx4jm0zj04xydlwah41axiz276dckkiql3rr0wn5x4i8j2"))))
+              "083j1v7kdjrpjsv1b9dl3d8xqj39jyp4cfn8i9gbbm7q2g93b923"))))
    (build-system meson-build-system)
    (outputs '("out" "doc"))
    (arguments
     '(#:configure-flags
-      (list "-Denable_docs=true")
+      (list "-Ddocs=true")
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'set-documentation-path
@@ -610,9 +606,8 @@ in the GNOME project.")
    (propagated-inputs
     ;; atspi-2.pc refers to all these.
     `(("dbus" ,dbus)
-      ("glib" ,glib)))
-   (inputs
-    `(("libxi" ,libxi)
+      ("glib" ,glib)
+      ("libxi" ,libxi)
       ("libxtst" ,libxtst)))
    (native-inputs
     `(("gobject-introspection" ,gobject-introspection)
@@ -630,7 +625,7 @@ is part of the GNOME accessibility project.")
 (define-public at-spi2-atk
   (package
    (name "at-spi2-atk")
-   (version "2.26.2")
+   (version "2.32.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/" name "/"
@@ -638,8 +633,8 @@ is part of the GNOME accessibility project.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0vkan52ab9vrkknnv8y4f1cspk8x7xd10qx92xk9ys71p851z2b1"))))
-   (build-system gnu-build-system)
+              "0p54wx6f6q7s8w0b1j0sgw87pikllp79q5g3lfiwqazs779ycl8b"))))
+   (build-system meson-build-system)
    (arguments
     '(#:phases
       (modify-phases %standard-phases
@@ -647,14 +642,16 @@ is part of the GNOME accessibility project.")
                  ;; Run test-suite under a dbus session.
                  (lambda _
                    (setenv "DBUS_FATAL_WARNINGS" "0")
-                   (invoke "dbus-launch" "make" "check"))))))
+                   (invoke "dbus-launch" "meson" "test"))))))
    (propagated-inputs
     `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
    (inputs
     `(("atk" ,atk)))
    (native-inputs
-    `(("dbus" ,dbus) ; for testing
-      ("pkg-config" ,pkg-config)))
+    `(("pkg-config" ,pkg-config)
+      ;; For tests.
+      ("dbus" ,dbus)
+      ("libxml2" ,libxml2)))
    (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
    (description
     "The Assistive Technology Service Provider Interface
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index 3755282403..2955c06a0d 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -1,8 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Alex ter Weele <alex.ter.weele@gmail.com>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -87,39 +87,74 @@ dependencies.")
                   "086dijnpl5dpglf70d6f9sizyakr313y7blpdjrmbi687j1x3qcl"))))
       (build-system gnu-build-system)
       (arguments
-       `( ;; The '.scm' files go to $(datadir), so set that to the
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (ice-9 rdelim)
+                    (ice-9 popen))
+         ;; The '.scm' files go to $(datadir), so set that to the
          ;; standard value.
          #:configure-flags (list (string-append "--datadir="
                                                 (assoc-ref %outputs "out")
                                                 "/share/guile/site/2.2"))
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'set-go-directory
+           (add-before 'configure 'set-module-directory
              (lambda* (#:key outputs #:allow-other-keys)
-               ;; Install .go files to $out/share/guile/site/2.2.
-               (let ((out (assoc-ref outputs "out")))
+               ;; Install .scm files to $out/share/guile/site/2.2.
+               (let ((out (assoc-ref outputs "out"))
+                     (effective (read-line
+                                 (open-pipe* OPEN_READ
+                                             "guile" "-c"
+                                             "(display (effective-version))"))))
                  (substitute* "module/Makefile.in"
                    (("^wmdir = .*$")
                     (string-append "wmdir = " out
-                                   "/share/guile/site/2.2\n"))))
+                                   "/share/guile/site/"
+                                   effective "\n"))))
                #t))
            (add-after 'install 'set-load-path
              (lambda* (#:key inputs outputs #:allow-other-keys)
                ;; Put Guile-XCB's and Guile-WM's modules in the
                ;; search path of PROG.
-               (let* ((out  (assoc-ref outputs "out"))
-                      (prog (string-append out "/bin/guile-wm"))
-                      (mods (string-append
-                             out "/share/guile/site/2.2"))
-                      (xcb  (string-append
-                             (assoc-ref inputs "guile-xcb")
-                             "/share/guile/site/2.2")))
-                 (wrap-program
-                     prog
-                   `("GUILE_LOAD_PATH" ":" prefix (,mods ,xcb))
+               (let* ((out       (assoc-ref outputs "out"))
+                      (effective (read-line
+                                  (open-pipe* OPEN_READ
+                                              "guile" "-c"
+                                              "(display (effective-version))")))
+                      (prog      (string-append out "/bin/guile-wm"))
+                      (mods      (string-append out "/share/guile/site/" effective))
+                      (gos       (string-append out "/lib/guile/" effective "/site-ccache"))
+                      (xcb       (assoc-ref inputs "guile-xcb")))
+                 (wrap-program prog
+                   `("GUILE_AUTO_COMPILE" ":" = ("0"))
+                   `("GUILE_LOAD_PATH" ":" prefix
+                     (,mods ,(string-append xcb "/share/guile/site/" effective)))
                    `("GUILE_LOAD_COMPILED_PATH" ":" prefix
-                     (,mods ,xcb))))
+                     (,gos ,(string-append xcb "/lib/guile/"
+                                           effective "/site-ccache")))))
                #t))
+           (add-after 'install 'install-go-files
+             (lambda* (#:key outputs inputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (effective (read-line
+                                  (open-pipe* OPEN_READ
+                                              "guile" "-c"
+                                              "(display (effective-version))")))
+                      (module-dir (string-append out "/share/guile/site/"
+                                                 effective))
+                      (object-dir (string-append out "/lib/guile/" effective
+                                                 "/site-ccache"))
+                      (prefix     (string-length module-dir)))
+                 (setenv "GUILE_AUTO_COMPILE" "0")
+                 ;; compile to the destination
+                 (for-each (lambda (file)
+                             (let* ((base (string-drop (string-drop-right file 4)
+                                                       prefix))
+                                    (go   (string-append object-dir base ".go")))
+                               (invoke "guild" "compile" "-L" module-dir
+                                       file "-o" go)))
+                           (find-files module-dir "\\.scm$"))
+                 #t)))
            (add-after 'install 'install-xsession
              (lambda* (#:key outputs #:allow-other-keys)
                ;; add a .desktop file to xsessions
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index a64a54323a..d4f019c814 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2017 David Thompson <davet@gnu.org>
 ;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index 0d4501df86..19eb40eaa4 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm
index 88a3ea467b..8f216a379d 100644
--- a/gnu/packages/haskell-crypto.scm
+++ b/gnu/packages/haskell-crypto.scm
@@ -1,9 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -357,7 +357,7 @@ are implemented as FFI bindings to efficient code from zlib.")
 (define-public ghc-entropy
   (package
     (name "ghc-entropy")
-    (version "0.4.1.1")
+    (version "0.4.1.4")
     (source
      (origin
        (method url-fetch)
@@ -365,8 +365,7 @@ are implemented as FFI bindings to efficient code from zlib.")
                            "entropy-" version "/"
                            "entropy-" version ".tar.gz"))
        (sha256
-        (base32
-         "1ahz5g148l6sax3dy505na2513i99c7bxix68jja5kbx4f271zcf"))))
+        (base32 "1fgf47l9klwn1xssbcbq6by651vikd8hlfxhiwd5bqzxr1jnlgrf"))))
     (build-system haskell-build-system)
     (home-page "https://github.com/TomMD/entropy")
     (synopsis "Provides platform independent entropy source for Haskell")
@@ -462,14 +461,14 @@ libraries, like OpenSSL.")
 (define-public ghc-x509
   (package
     (name "ghc-x509")
-    (version "1.7.3")
+    (version "1.7.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
                                   "x509/x509-" version ".tar.gz"))
               (sha256
                (base32
-                "0mkk29g32fs70bqkikg83v45h9jig9c8aail3mrdqwxpkfa0yx21"))))
+                "1j67c35g8334jx7x32hh6awhr43dplp0qwal5gnlkmx09axzrc5i"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-memory" ,ghc-memory)
@@ -491,7 +490,7 @@ libraries, like OpenSSL.")
 (define-public ghc-x509-store
   (package
     (name "ghc-x509-store")
-    (version "1.6.6")
+    (version "1.6.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
@@ -499,7 +498,7 @@ libraries, like OpenSSL.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0dbndqmnmyixxc7308nyq3zlkhz9dff4rbcw2a49c77rbicny9va"))))
+                "1y8yyr1i95jkllg8k0z54k5v4vachp848clc07m33xpxidn3b1lp"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-pem" ,ghc-pem)
@@ -520,7 +519,7 @@ collections, certificates, revocation lists, and exception lists.")
 (define-public ghc-x509-validation
   (package
     (name "ghc-x509-validation")
-    (version "1.6.10")
+    (version "1.6.11")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/"
@@ -528,7 +527,7 @@ collections, certificates, revocation lists, and exception lists.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1ms51scawldgyfcim5a2qlgyn3rnrclyh205d6djaa1569vrs73n"))))
+                "16yihzljql3z8w5rgdl95fv3hgk7yd86kbl9b3glllsark5j2hzr"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-memory" ,ghc-memory)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index cd0fdd22fc..2a5ba2a706 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
@@ -3974,7 +3974,7 @@ work, but is substantially simpler and faster.")
 (define-public ghc-base64-bytestring
   (package
     (name "ghc-base64-bytestring")
-    (version "1.0.0.1")
+    (version "1.0.0.2")
     (source
      (origin
        (method url-fetch)
@@ -3983,8 +3983,7 @@ work, but is substantially simpler and faster.")
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "0l1v4ddjdsgi9nqzyzcxxj76rwar3lzx8gmwf2r54bqan3san9db"))))
+        (base32 "13305brzlac24pifiqd5a2z10c6k6amhpdy9cc0z5ryrkgnm8dhr"))))
     (build-system haskell-build-system)
     (arguments `(#:tests? #f))         ; FIXME: testing libraries are missing.
     (home-page "https://github.com/bos/base64-bytestring")
diff --git a/gnu/packages/hyperledger.scm b/gnu/packages/hyperledger.scm
index b25a3c48e7..158a66e898 100644
--- a/gnu/packages/hyperledger.scm
+++ b/gnu/packages/hyperledger.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,7 +35,7 @@
 (define-public hyperledger-fabric
   (package
     (name "hyperledger-fabric")
-    (version "1.4")
+    (version "1.4.0")
     ;; While the GitHub repository is supposed to be "just a mirror," the Go
     ;; imports refer to it explicitly.
     (home-page "https://github.com/hyperledger/fabric")
@@ -42,10 +43,11 @@
               (method git-fetch)
               (uri (git-reference
                     (url home-page)
-                    (commit (string-append "release-" version))))
+                    ;; ‘release-…’ are branches, and move. ‘v…’ are the tags.
+                    (commit (string-append "v" version))))
               (sha256
                (base32
-                "1g003wf6439f2c9i2vphf4sh463yyasq1vpqmkpw9lj170a6kl8k"))
+                "0nmg24ishwddxm1i2vh5ah5ylmmcg0apnjbgv1hljvhl48k4pzxq"))
               (file-name (git-file-name name version))))
     (build-system go-build-system)
     (native-inputs
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index a8968acba2..e708e1366c 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2018 Lprndn <guix@lprndn.info>
 ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -59,36 +59,39 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (ice-9 match))
 
-;; We use the latest snapshot of this package because the latest release is
-;; from 2011 and has known vulnerabilities that cannot easily be fixed by
-;; applying patches.
 (define-public dcmtk
   (package
     (name "dcmtk")
-    (version "3.6.1_20170228")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "ftp://dicom.offis.de/pub/dicom/offis/"
-                                  "software/dcmtk/snapshot/dcmtk-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "04cwfx8yrscqcd59mxk2fh6314ckayi9cp68iql5a57pf2pg5qld"))))
-    (build-system gnu-build-system)
+    (version "3.6.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/"
+                       "dcmtk" (string-join (string-split version #\.) "")
+                       "/dcmtk-" version ".tar.gz"))
+       (sha256
+        (base32 "1h22z8g0kmvhg8lgkbikyzyphhvxvq6018a00yd6i4g0z9ag6gx9"))))
+    (build-system cmake-build-system)
     (inputs
-     `(("libtiff" ,libtiff)
+     `(;; Our ICU is too recent: “error: ‘UChar’ does not name a type“.
+       ;; ("icu4c" ,icu4c)
+       ("libjpeg" ,libjpeg)
        ("libpng" ,libpng)
-       ("doxygen" ,doxygen)
+       ("libtiff" ,libtiff)
+       ("libxml2" ,libxml2)
+       ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("perl" ,perl)))
-    (home-page "http://dcmtk.org")
+     `(("doxygen" ,doxygen)))           ; for HTML documentation
+    (home-page "https://dcmtk.org")
     (synopsis "Libraries and programs implementing parts of the DICOM standard")
     (description "DCMTK is a collection of libraries and applications
 implementing large parts the DICOM standard.  It includes software for
@@ -414,14 +417,15 @@ vision algorithms.  It can be used to do things like:
 (define-public vips
   (package
     (name "vips")
-    (version "8.7.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/libvips/libvips/releases/download/v"
-                    version "/vips-" version ".tar.gz"))
-              (sha256
-               (base32 "1w3b90pdw7nj2p0gb4f96h6zhmga513f968ldfhz1rkhg7y81c0s"))))
+    (version "8.7.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/libvips/libvips/releases/download/v"
+             version "/vips-" version ".tar.gz"))
+       (sha256
+        (base32 "01gjhcrl6zj7mcj1al717v5jsniahplqhz1xkfh2j78vyfl1hxff"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -449,9 +453,15 @@ vision algorithms.  It can be used to do things like:
        ("expat" ,expat)
        ("hdf5" ,hdf5)))
     (home-page "https://libvips.github.io/libvips/")
-    (synopsis "Image processing system")
+    (synopsis "Multithreaded image processing system with low memory needs")
     (description
-     "vips is a demand-driven, horizontally threaded image processing library.")
+     "VIPS is a demand-driven, horizontally threaded image processing library.
+It's particularly good at processing large images, working with colour,
+scientific analysis, and general research & development.
+
+Compared to most image processing libraries VIPS needs little RAM and runs
+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 nip2
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 7da0b0dab9..82b44a4900 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -188,7 +188,7 @@ It is the default image viewer on LXDE desktop environment.")
 (define-public sxiv
   (package
     (name "sxiv")
-    (version "24")
+    (version "25")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -197,7 +197,7 @@ It is the default image viewer on LXDE desktop environment.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "020n1bdxbzqncprh8a4rnjzc4frp335yxbqh5w6dr970f7n5qm8d"))))
+                "13s1lfar142hq1j7xld0ri616p4bqs57b17yr4d0b9a9w7liz4hp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no check target
@@ -206,7 +206,7 @@ It is the default image viewer on LXDE desktop environment.")
              "CC=gcc"
              ;; Xft.h #includes <ft2build.h> (without ‘freetype2/’).  The sxiv
              ;; Makefile works around this by hard-coding /usr/include instead.
-             (string-append "DEF_CPPFLAGS=-I"
+             (string-append "CPPFLAGS=-I"
                             (assoc-ref %build-inputs "freetype")
                             "/include/freetype2")
              "V=1")
@@ -285,17 +285,16 @@ your images.  Among its features are:
 (define-public catimg
   (package
     (name "catimg")
-    (version "2.4.0")
+    (version "2.5.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/posva/catimg.git")
-             (commit (string-append "v" version))))
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1sk74nfc1aklg784pzknr37dyz4k7h9fck3mifpn43rav5qy2zpy"))))
+        (base32 "0n74iczzgxrcq3zpa7ndycb9rinm829yvf81c747q4ngv5q6pzcm"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 167e7bc77e..54ce2d3b40 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -13,7 +13,7 @@
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index 0207eb6569..7f3fc408e0 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -48,14 +48,14 @@
     ;; The 7 release series has an incompatible API, while the 6 series is still
     ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
     ;; users are ready for the 7-series API.
-    (version "6.9.10-27")
+    (version "6.9.10-34")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://imagemagick/ImageMagick-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1skngh58lkpa2scc9rhjxvhyn6f7nlwd28hbwrxzlvvb7qil9jcq"))))
+               "1pm1lvbfw67780nch7w80dsvx7v8wbrpj43v3c9217dpz0l89442"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
@@ -170,19 +170,19 @@ script.")
 (define-public graphicsmagick
   (package
     (name "graphicsmagick")
-    (version "1.3.30")
-    (source (origin
-              (method url-fetch)
-              (uri
-                (list
-                  (string-append "mirror://sourceforge/" name "/" name
-                                 "/" version "/GraphicsMagick-" version ".tar.xz")
-                  (string-append "ftp://ftp.graphicsmagick.org/pub/"
-                                 "GraphicsMagick/" (version-major+minor version)
-                                 "/GraphicsMagick-" version ".tar.xz")))
-              (sha256
-               (base32
-                "1warar0731xf94r4bn5x1km85rjabl4iq8r0dk3ywmczap3farfr"))))
+    (version "1.3.31")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (list
+         (string-append "mirror://sourceforge/graphicsmagick/graphicsmagick"
+                        "/" version "/GraphicsMagick-" version ".tar.xz")
+         (string-append "ftp://ftp.graphicsmagick.org/pub/"
+                        "GraphicsMagick/" (version-major+minor version)
+                        "/GraphicsMagick-" version ".tar.xz")))
+       (sha256
+        (base32 "0y22740f25qxsqqqg26xqlfp920dm57b7hrgaqmx7azksrcvnsq9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 9d00c9c981..6b8afd5f53 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -91,7 +91,9 @@ that are shared between @command{go-ipfs/commands} and its rewrite
          ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
          ("go-github-com-mr-tron-base58" ,go-github-com-mr-tron-base58)
          ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
-         ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))
+         ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
+         ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+         ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)
          ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
          ("go-github-com-gxed-hashland-keccakpg" ,go-github-com-gxed-hashland-keccakpg)
          ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
@@ -137,14 +139,16 @@ that are shared between @command{go-ipfs/commands} and its rewrite
        ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
        ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
        ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
-       ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))
        ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
        ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
        ("go-github-com-sabhiram-go-gitignore" ,go-github-com-sabhiram-go-gitignore)
        ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
        ("go-github-com-whyrusleeping-json-filter" ,go-github-com-whyrusleeping-json-filter)
        ("go-github-com-whyrusleeping-progmeter" ,go-github-com-whyrusleeping-progmeter)
-       ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)))
+       ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)
+       ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
+       ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+       ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
     (home-page "https://github.com/whyrusleeping/gx")
     (synopsis "Package management tool using IPFS")
     (description "@command{gx} is a packaging tool built around the
@@ -197,13 +201,15 @@ powerful and simple.")
        ("go-github-com-multiformats-go-multihash" ,go-github-com-multiformats-go-multihash)
        ("go-github-com-spaolacci-murmur3" ,go-github-com-spaolacci-murmur3)
        ("go-github-com-whyrusleeping-tar-utils" ,go-github-com-whyrusleeping-tar-utils)
-       ("go-golang-org-x-crypto-union" ,(go-golang-org-x-crypto-union))
        ("go-github-com-btcsuite-btcd-btcec" ,go-github-com-btcsuite-btcd-btcec)
        ("go-github-com-gogo-protobuf-proto" ,go-github-com-gogo-protobuf-proto)
        ("go-github-com-sabhiram-go-gitignore" ,go-github-com-sabhiram-go-gitignore)
        ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
        ("go-github-com-whyrusleeping-progmeter" ,go-github-com-whyrusleeping-progmeter)
-       ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)))
+       ("go-github-com-whyrusleeping-stump" ,go-github-com-whyrusleeping-stump)
+       ("go-golang-org-x-crypto-blake2s" ,go-golang-org-x-crypto-blake2s)
+       ("go-golang-org-x-crypto-ed25519" ,go-golang-org-x-crypto-ed25519)
+       ("go-golang-org-x-crypto-sha3" ,go-golang-org-x-crypto-sha3)))
     (home-page "https://github.com/whyrusleeping/gx-go")
     (synopsis "Golang subtool for the @command{gx} package manager")
     (description "A subtool for the @command{gx} package manager for packages
@@ -213,7 +219,7 @@ written in Go.")
 (define-public go-ipfs
   (package
     (name "go-ipfs")
-    (version "0.4.18")
+    (version "0.4.19")
     (source
      (origin
        (method url-fetch/tarbomb)
@@ -221,8 +227,7 @@ written in Go.")
              "https://dist.ipfs.io/go-ipfs/v" version
              "/go-ipfs-source.tar.gz"))
        (sha256
-        (base32
-         "19hfgbyn5sr1bw0cwm3gsjz0w3b3vh3mmkax1906raah30lavj1x"))
+        (base32 "0s04ap14p6hnipjm27nm5k8s28zv9k5g9mziyh3ibgwn7dzb1kpx"))
        (file-name (string-append name "-" version "-source"))))
     (build-system go-build-system)
     (arguments
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm
index e6f23d14d7..d3b3a51294 100644
--- a/gnu/packages/irc.scm
+++ b/gnu/packages/irc.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
 ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 110f07a476..73376feecb 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2018 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -149,7 +149,7 @@ digits, is a cardinal or ordinal number.")
 (define-public perl-lingua-en-tagger
   (package
     (name "perl-lingua-en-tagger")
-    (version "0.29")
+    (version "0.30")
     (source
      (origin
        (method url-fetch)
@@ -157,7 +157,7 @@ digits, is a cardinal or ordinal number.")
                            "Lingua-EN-Tagger-" version ".tar.gz"))
        (sha256
         (base32
-         "0dssn101kmpkh2ik1430mj2ikk04849vbpgi60382kvh9xn795na"))))
+         "0nrnkvsf9f0a7lp82sanmy89ms2nqq1lvjqicvsagsvzp513bl5b"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-memoize-expirelru" ,perl-memoize-expirelru)
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 0032d9a85f..121ba11f89 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
-;;; Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017, 2018 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm
index 273160c92a..0ec707bcb7 100644
--- a/gnu/packages/libevent.scm
+++ b/gnu/packages/libevent.scm
@@ -204,14 +204,14 @@ not rely on XS.")
 (define-public perl-ev
   (package
     (name "perl-ev")
-    (version "4.22")
+    (version "4.25")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/EV-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "14d9115q8f2ca2q3vbcalm55zqsbx8xjq5aj098laj9f9rrzirra"))
+                "0slw68zxrkfribf6lhggdhpay3mdng0nqxlglkwrk19myblchr9f"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 02ad11c6fb..fa084794de 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -176,8 +176,8 @@ spreadsheets and presentations.")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/" name "/" name "/"
-                          name "-" version "/" name "-" version ".tar.xz"))
+      (uri (string-append "mirror://sourceforge/libwpd/libwpd/"
+                          "libwpd-" version "/libwpd-" version ".tar.xz"))
       (sha256 (base32
                "0436gnidx45a9vx114hhh216jrh57mqb9zyssyjfadagmyz6hgrj"))))
     (build-system gnu-build-system)
@@ -265,14 +265,14 @@ way--presentation and vector drawing interfaces.")
 (define-public libwpg
   (package
     (name "libwpg")
-    (version "0.3.2")
+    (version "0.3.3")
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "mirror://sourceforge/" name "/" name "/"
-                          name "-" version "/" name "-" version ".tar.xz"))
+      (uri (string-append "mirror://sourceforge/libwpg/libwpg/"
+                          "libwpg-" version "/libwpg-" version ".tar.xz"))
       (sha256 (base32
-               "0cwc5zkp210c661l0bvk6q21jg9ak5g8gmy578w5fgfnjymz3yjp"))))
+               "074x159immf139szkswv2zapnq75p7xk10dbha2p9193hgwggcwr"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("doxygen" ,doxygen)
@@ -531,24 +531,18 @@ Microsoft Publisher documents of all versions.")
 (define-public libnumbertext
   (package
     (name "libnumbertext")
-    (version "1.0")
+    (version "1.0.5")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://github.com/numbertext/" name
-                           "/archive/" version ".tar.gz"))
+       (uri (string-append "https://github.com/Numbertext/libnumbertext/"
+                           "releases/download/" version
+                           "/libnumbertext-" version ".tar.xz"))
        (sha256
-        (base32
-         "0wnsn4911fdd2na8jxkcvmk04a6xw6qlviic9w4qwg9fcym6866v"))
-       (file-name (string-append name "-" version ".tar.gz"))))
+        (base32 "1xzlwhwwhvr76kfdsw5gvfjfdayz803z65h331gv5dpc9imhijg1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
-    (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
     (home-page "https://github.com/Numbertext/libnumbertext")
     (synopsis "Language-neutral @code{NUMBERTEXT} and @code{MONEYTEXT} functions")
     (description
@@ -909,14 +903,14 @@ and to return information on pronunciations, meanings and synonyms.")
 (define-public libqxp
   (package
     (name "libqxp")
-    (version "0.0.1")
+    (version "0.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dev-www.libreoffice.org/src/libqxp/"
                                   "libqxp-" version ".tar.xz"))
               (sha256
                (base32
-                "0wswz49y0lqwqw2nj9j7jaj5ag88hapcz8czgkxax57zhihpy9cc"))))
+                "0p4lb84m05wqd8qr8ni9sp80ivlm83ffn0nxiv4m42hj22qvcdz1"))))
     (build-system gnu-build-system)
     (inputs
      `(("boost" ,boost)
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm
index a8d6d7c963..7965466435 100644
--- a/gnu/packages/libusb.scm
+++ b/gnu/packages/libusb.scm
@@ -308,7 +308,7 @@ wrapper for accessing libusb-1.0.")
     (version "2.0.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.libimobiledevice.org/downloads/"
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
                                   "libplist-" version ".tar.bz2"))
               (sha256
                (base32
@@ -319,7 +319,7 @@ wrapper for accessing libusb-1.0.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("python-cython" ,python-cython)))
-    (home-page "http://www.libimobiledevice.org/")
+    (home-page "https://www.libimobiledevice.org/")
     (synopsis "C library to handle Apple Property List files")
     (description "This package provides a small portable C library to handle
 Apple Property List files in binary or XML.")
@@ -331,7 +331,7 @@ Apple Property List files in binary or XML.")
     (version "1.0.10")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.libimobiledevice.org/downloads/"
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
                                   "libusbmuxd-" version ".tar.bz2"))
               (sha256
                (base32
@@ -340,7 +340,7 @@ Apple Property List files in binary or XML.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("libplist" ,libplist)))
-    (home-page "http://www.libimobiledevice.org/")
+    (home-page "https://www.libimobiledevice.org/")
     (synopsis "Library to multiplex connections from and to iOS devices")
     (description "This package provides a client library to multiplex
 connections from and to iOS devices by connecting to a socket provided by a
@@ -353,7 +353,7 @@ connections from and to iOS devices by connecting to a socket provided by a
     (version "1.2.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.libimobiledevice.org/downloads/"
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
                                   "libimobiledevice-" version ".tar.bz2"))
               (sha256
                (base32
@@ -376,7 +376,7 @@ connections from and to iOS devices by connecting to a socket provided by a
      `(("pkg-config" ,pkg-config)
        ("python-cython" ,python-cython)
        ("libtool" ,libtool)))
-    (home-page "http://www.libimobiledevice.org/")
+    (home-page "https://www.libimobiledevice.org/")
     (synopsis "Protocol library and tools to communicate with Apple devices")
     (description "libimobiledevice is a software library that talks the
 protocols to support Apple devices.  It allows other software to easily access
@@ -392,7 +392,7 @@ music and video to the device.")
     (version "1.1.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.libimobiledevice.org/downloads/"
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
                                   "ifuse-" version ".tar.bz2"))
               (sha256
                (base32
@@ -403,7 +403,7 @@ music and video to the device.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (build-system gnu-build-system)
-    (home-page "http://www.libimobiledevice.org/")
+    (home-page "https://www.libimobiledevice.org/")
     (synopsis "Mount iOS devices")
     (description "This package provides @command{ifuse}, a command to mount
 iOS devices and access their contents.")
@@ -415,7 +415,7 @@ iOS devices and access their contents.")
     (version "1.1.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://www.libimobiledevice.org/downloads/"
+              (uri (string-append "https://www.libimobiledevice.org/downloads/"
                                   "usbmuxd-" version ".tar.bz2"))
               (sha256
                (base32
@@ -427,7 +427,7 @@ iOS devices and access their contents.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (build-system gnu-build-system)
-    (home-page "http://www.libimobiledevice.org/")
+    (home-page "https://www.libimobiledevice.org/")
     (synopsis "Multiplex connections over USB to an iOS device")
     (description "This package provides the @code{usbmuxd} daemon
 which multiplexes connections over USB to an iOS device.  To
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index e50ce831b1..4003c18aca 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -85,7 +85,7 @@ statements and serializes in normalized format.")
 (define-public perl-software-license
   (package
     (name "perl-software-license")
-    (version "0.103013")
+    (version "0.103014")
     (source
      (origin
        (method url-fetch)
@@ -94,7 +94,7 @@ statements and serializes in normalized format.")
              version ".tar.gz"))
        (sha256
         (base32
-         "1wqgh7vdlc966amlrq0b2szz18lnrl9rfh8wlf7v0hqg74vxjh96"))))
+         "128pbm9pf5drakm9bpkifc1zg8f005xabfwzg21nc03m5mhfligb"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-try-tiny" ,perl-try-tiny)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index eb15cbc428..5a681d9c64 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -11,14 +11,14 @@
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org>
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2016, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
@@ -32,6 +32,7 @@
 ;;; Copyright © 2018 Manuel Graf <graf@init.at>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
+;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -405,8 +406,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 It has been modified to remove all non-free binary blobs.")
     (license license:gpl2)))
 
-(define %linux-libre-version "5.0.1")
-(define %linux-libre-hash "0izbdpml170g5jg87ccnf2q1hc01gsyiy1gqxnqzzi3pri00dfyz")
+(define %linux-libre-version "5.0.3")
+(define %linux-libre-hash "1ivdqr3y8r2hmv3a1g0a641cr2ckl3x4arapw0j6nwd0sbcyncam")
 
 (define %linux-libre-5.0-patches
   (list %boot-logo-patch
@@ -419,8 +420,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-5.0-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.19-version "4.19.28")
-(define %linux-libre-4.19-hash "0j65gp9z3qrygx67mkhm4ri3pj1pz0gdwcdlds2ypg53rh12jc0a")
+(define %linux-libre-4.19-version "4.19.30")
+(define %linux-libre-4.19-hash "1i15cs7zb53hagllgga8jaz0j1p9b22j93iczwc2w587zzhzlvng")
 
 (define %linux-libre-4.19-patches
   (list %boot-logo-patch
@@ -433,8 +434,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:patches %linux-libre-4.19-patches
                     #:configuration-file kernel-config))
 
-(define %linux-libre-4.14-version "4.14.105")
-(define %linux-libre-4.14-hash "06pp13d2g0j2v8jy8fh20b4ismzg9wn3i7bnx2hpyvslz256rrgg")
+(define %linux-libre-4.14-version "4.14.107")
+(define %linux-libre-4.14-hash "19i17b8sjjvi99vya1vncjalysdy027hp35rrla68gjs28dyas7r")
 
 (define-public linux-libre-4.14
   (make-linux-libre %linux-libre-4.14-version
@@ -443,8 +444,8 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.162"
-                    "07swv6xvjsl5nv5y3sc2nfdnmqdz9gjy8hgrjvi0bljwzf1fbxmy"
+  (make-linux-libre "4.9.164"
+                    "06bbynvijqlk92bpppmnjijyfwr0sk01krqdw4hpgbrvlg3wdlbk"
                     '("x86_64-linux" "i686-linux")
                     #:configuration-file kernel-config))
 
@@ -963,7 +964,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
 (define-public strace
   (package
     (name "strace")
-    (version "4.26")
+    (version "5.0")
     (home-page "https://strace.io")
     (source (origin
              (method url-fetch)
@@ -971,7 +972,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
                                  "/strace-" version ".tar.xz"))
              (sha256
               (base32
-               "070yz8xii8gnb4psiz628zwm5srh266sfb06f7f1qzagxzz2ykbw"))))
+               "1nj7wvsdmhpp53yffj1pnrkjn96mxrbcraa6h03wc7dqn9zdfyiv"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -1251,7 +1252,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
 (define-public iproute
   (package
     (name "iproute2")
-    (version "4.20.0")
+    (version "5.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1259,10 +1260,11 @@ that the Ethernet protocol is much simpler than the IP protocol.")
                     version ".tar.xz"))
               (sha256
                (base32
-                "1a7xyvqjxfnm7rk21amm0xgxa38clg7q7cmc4dmlg27q81mambf8"))))
+                "1fi03lb8dqr8hq633gcqsf6228vsvysxms075j1yyl4nlc17616z"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                                ; no test suite
+     `( ;; There is a test suite, but it wants network namespaces and sudo.
+       #:tests? #f
        #:make-flags (let ((out (assoc-ref %outputs "out")))
                       (list "DESTDIR="
                             (string-append "BASH_COMPDIR=" out
@@ -1282,12 +1284,15 @@ that the Ethernet protocol is much simpler than the IP protocol.")
                         (("^.*ARPDDIR.*$") ""))
                       #t)))))
     (inputs
-     `(("iptables" ,iptables)
-       ("db4" ,bdb)))
+     `(("db4" ,bdb)
+       ("iptables" ,iptables)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("bison" ,bison)
        ("flex" ,flex)
-       ("bison" ,bison)))
+       ("pkg-config" ,pkg-config)))
+    ;; For tests.
+    ;; ("libmnl" ,libmnl)
+    ;; ("util-linux" ,util-linux)
     (home-page
      "https://wiki.linuxfoundation.org/networking/iproute2")
     (synopsis
@@ -4052,7 +4057,7 @@ of flash storage.")
 (define-public libseccomp
   (package
     (name "libseccomp")
-    (version "2.3.3")
+    (version "2.4.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/seccomp/libseccomp/"
@@ -4060,7 +4065,7 @@ of flash storage.")
                                   "/libseccomp-" version ".tar.gz"))
               (sha256
                (base32
-                "0mdiyfljrkfl50q1m3ws8yfcyfjwf1zgkvcva8ffcwncji18zhkz"))))
+                "0paj1szszpf8plykrd66jqg1x3kmqs395rbjskahld2bnplcfx1f"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("which" ,which)))
@@ -4275,7 +4280,7 @@ Light is the successor of lightscript.")
 (define-public tlp
   (package
     (name "tlp")
-    (version "1.1")
+    (version "1.2.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4285,7 +4290,7 @@ Light is the successor of lightscript.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "068hzmh90x600saynbl7iwg1pm0ywldn4jazyxx5y1fixs8s1qbn"))))
+                "0rcp9i0fisdm4h6799ffr696l1vl661fnwb2dij268nlwwmkr90g"))))
     (inputs `(("bash" ,bash)
               ("dbus" ,dbus)
               ("ethtool" ,ethtool)
@@ -4315,7 +4320,8 @@ Light is the successor of lightscript.")
                (setenv "TLP_NO_PMUTILS" "1")
                (setenv "TLP_SBIN" (string-append out "/bin"))
                (setenv "TLP_BIN" (string-append out "/bin"))
-               (setenv "TLP_TLIB" (string-append out "/share/tlp-pm"))
+               (setenv "TLP_TLIB" (string-append out "/share/tlp"))
+               (setenv "TLP_FLIB" (string-append out "/share/tlp/func.d"))
                (setenv "TLP_ULIB" (string-append out "/lib/udev"))
                (setenv "TLP_CONF" "/etc/tlp")
                (setenv "TLP_SHCPL"
@@ -4369,7 +4375,6 @@ Light is the successor of lightscript.")
 a default configuration already optimized for battery life.  Nevertheless,
 TLP is customizable to fulfil system requirements.  TLP settings are applied
 every time the power supply source is changed.")
-
     ;; 'COPYING' is a custom version that says that one file is GPLv3+ and the
     ;; rest is GPLv2+.
     (license (list license:gpl2+ license:gpl3+))))
@@ -5076,7 +5081,11 @@ management tools in userspace.")
                 "0ss0r6jlxxinf9fhpc0fgf7b89n9mzirpa85xxjmi1ix9l6cls6x"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f)) ; kernel/user integration tests are in package "xfstests"
+     `(#:tests? #f    ;kernel/user integration tests are in package "xfstests"
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'install-headers
+                    (lambda _
+                      (invoke "make" "install-dev"))))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
        ("util-linux" ,util-linux)))
@@ -5194,3 +5203,45 @@ the correct permissions and ownership, and then pack them up, or one would
 have to construct the archives directly, without using the archiver.")
     (home-page "http://freshmeat.sourceforge.net/projects/fakeroot")
     (license license:gpl3+)))
+
+(define-public inputattach
+  (package
+    (name "inputattach")
+    (version "0.42.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/linuxwacom/input-wacom.git")
+                    (commit (string-append "input-wacom-" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "04lnn7v0rm4ppbya140im5d4igcl6c1nrqpgbsr0i8wkral0nv7j"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'bootstrap)
+         (delete 'configure)
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "inputattach"
+               (invoke (string-append (assoc-ref inputs "gcc")
+                                      "/bin/gcc")
+                       "-O2" "-o" "inputattach" "inputattach.c"))
+             #t))
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((target-dir (string-append
+                                (assoc-ref outputs "out")
+                                "/bin/")))
+               (mkdir-p target-dir)
+               (copy-file "inputattach/inputattach"
+                          (string-append target-dir
+                                         "inputattach"))
+               #t))))))
+    (home-page "https://linuxwacom.github.io/")
+    (synopsis "Dispatch input peripherals events to a device file")
+    (description "inputattach dispatches input events from several device
+types and interfaces and translates so that the X server can use them.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 3d43b7c509..87dcf36372 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 8ae646d87e..3d46b02338 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -270,7 +270,7 @@ code analysis tools.")
                            version "/libcxx-" version ".src.tar.xz"))
        (sha256
         (base32
-         "0rzw4qvxp6qx4l4h9amrq02gp7hbg8lw4m0sy3k60f50234gnm3n"))))
+         "1wdrxg365ig0kngx52pd0n820sncp24blb0zpalc579iidhh4002"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("clang" ,clang)
diff --git a/gnu/packages/lolcode.scm b/gnu/packages/lolcode.scm
index f7e2da380c..e55a36c509 100644
--- a/gnu/packages/lolcode.scm
+++ b/gnu/packages/lolcode.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 6982733579..ff62d3b362 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -290,14 +290,14 @@ directory structure and file attributes.")
 (define (make-lua-sec name lua)
   (package
     (name name)
-    (version "0.6")
+    (version "0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/brunoos/luasec/archive/"
                                   "luasec-" version ".tar.gz"))
               (sha256
                (base32
-                "0pgd1anzznl4s0h16wg8dlw9mgdb9h52drlcki6sbf5y31fa7wyf"))))
+                "0c9sdz3gvrsbvvdqzpnsappgwl40hfljlpfybqis6wia3mdyjxi1"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -410,13 +410,13 @@ Notable examples are GTK+, GStreamer and Webkit.")
 (define (make-lua-lpeg name lua)
   (package
     (name name)
-    (version "1.0.1")
+    (version "1.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0sq25z3r324a324ky73izgq9mbf66j2xvjp0fxf227rwxalzgnb2"))))
+               (base32 "1zjzl7acvcdavmcg5l7wi12jd4rh95q9pl5aiww7hv0v0mv6bmj8"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm
index a5720ce979..ccd79dada6 100644
--- a/gnu/packages/lxde.scm
+++ b/gnu/packages/lxde.scm
@@ -1,13 +1,14 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ison111 <ison111@protonmail.com>
 ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -55,7 +56,7 @@
 (define-public libfm
   (package
     (name "libfm")
-    (version "1.3.0.2")
+    (version "1.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pcmanfm/"
@@ -63,7 +64,7 @@
                                   "%29/LibFM/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0wkwbi1nyvqza3r1dhrq846axiiq0fy0dqgngnagh76fjrwnzl0q"))))
+                "1r6gl49xrykldwz8y4h2s7gjarxigg3bbkrj0gphxjj1vr5j9ccn"))))
     (build-system gnu-build-system)
     (inputs `(("glib" ,glib)
               ("gtk+" ,gtk+-2)))
@@ -190,7 +191,7 @@ performance, all instances of the terminal are sharing a single process.")
 (define-public menu-cache
   (package
     (name "menu-cache")
-    (version "1.0.2")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/lxde/" name "/"
@@ -198,7 +199,7 @@ performance, all instances of the terminal are sharing a single process.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1m8j40npykfcfqs43kc0fmksal2jfmfi8lnb3mq3xy1lvvrfv0vg"))))
+                "1iry4zlpppww8qai2cw4zid4081hh7fz8nzsp5lqyffbkm2yn0pd"))))
     (build-system gnu-build-system)
     (inputs `(("glib"  ,glib)
               ("libfm" ,libfm-extra)))
@@ -212,15 +213,15 @@ speed up the access to freedesktop.org defined application menus.")
 (define-public pcmanfm
   (package
     (name "pcmanfm")
-    (version "1.3.0")
+    (version "1.3.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/" name "/"
+              (uri (string-append "mirror://sourceforge/pcmanfm/"
                                   "PCManFM%20%2B%20Libfm%20%28tarball%20release"
-                                  "%29/PCManFM/" name "-" version ".tar.xz"))
+                                  "%29/PCManFM/pcmanfm-" version ".tar.xz"))
               (sha256
                (base32
-                "1ywgfyklms5hqkapsbjps4kyx20ac0d1qk16ww74yagkyfdkwsas"))))
+                "0mb8hg76x1z0szdyl0w7jpz0bdblc6a29is1vvnh79z37qxh8138"))))
     (build-system gnu-build-system)
     (inputs `(("gtk+"   ,gtk+-2)
               ("gvfs"   ,gvfs)          ; for trash and mount support
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index 9813005a34..d91efe715d 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -3,9 +3,9 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
+;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -124,7 +124,7 @@ to statistics about the system on which it's run.")
 (define-public lxqt-build-tools
   (package
     (name "lxqt-build-tools")
-    (version "0.5.0")
+    (version "0.6.0")
     (source
      (origin
        (method url-fetch)
@@ -132,7 +132,7 @@ to statistics about the system on which it's run.")
                            "/download/" version
                            "/lxqt-build-tools-" version ".tar.xz"))
        (sha256
-        (base32 "13b5x26p6ycnwzlgg1cgvlc88wjrjmlb3snrrmzh0xgh9h6hhvd6"))))
+        (base32 "0n0p0mf12n9f7zm2592779rpqrbcamfdz87nnjb8j058bc8g3214"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -157,7 +157,7 @@ itself as well as other components maintained by the LXQt project.")
 (define-public libqtxdg
   (package
     (name "libqtxdg")
-    (version "3.2.0")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
@@ -165,7 +165,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 "0lq548pa69hfvnbj2ypba5ygm8n6v6g7bqqm8p5g538l1l3394cl"))))
+        (base32 "1mnnq8vbf5xjlrzajzfkay0yzzxri0zz0xi8x8rmxpw38xmglq8h"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -182,6 +182,8 @@ itself as well as other components maintained by the LXQt project.")
      ;; required by Qt5XdgIconLoader.pc
      `(("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)))
+    (native-inputs
+     `(("lxqt-build-tools" ,lxqt-build-tools)))
     (home-page "https://github.com/lxqt/libqtxdg")
     (synopsis "Qt implementation of freedesktop.org xdg specifications")
     (description "Libqtxdg implements the freedesktop.org xdg specifications
@@ -191,7 +193,7 @@ in Qt.")
 (define-public liblxqt
   (package
     (name "liblxqt")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
@@ -199,13 +201,10 @@ in Qt.")
              "https://github.com/lxqt/" name "/releases/download/"
              version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0fba0nq5b9fvvmklcikcd4nwhzlp5d6k1q1f80r34kncdzfvj7dl"))))
+        (base32 "1gb922npf6nw4w3nkvh4czk8xmdzzqkzq3zgl1h303fjaib359qs"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -213,6 +212,13 @@ in Qt.")
              (substitute* "CMakeLists.txt"
                (("DESTINATION \"\\$\\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\\}")
                 "DESTINATION \"share/polkit-1/actions"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -233,14 +239,14 @@ components of the LXQt desktop environment.")
 (define-public libsysstat
   (package
     (name "libsysstat")
-    (version "0.4.1")
+    (version "0.4.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0ngz8v3bixsdg96d5ipcyxd6nsrg52974xdxy9rnimahlv1yaxn3"))))
+        (base32 "0rz9w49khra9kl91kfnd3wxkldy1fqf6755mvlgbsqxb1yv8597w"))))
     (build-system cmake-build-system)
     (arguments '(#:tests? #f))          ; no tests
     (inputs
@@ -259,14 +265,14 @@ and memory usage or network traffic.")
 (define-public lxqt-about
   (package
     (name "lxqt-about")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "08imj7p77ifzfxnn8c482mhrvfx9gi0rb43ab5rw1rkmfvax2n5w"))))
+        (base32 "01xp5ddcxc9wvl7jm4179hjrirj07mpzm9z50936d1fqx34wfbis"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -280,9 +286,19 @@ and memory usage or network traffic.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'setenv
+           (lambda _
+             (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
+             #t)))))
     (home-page "https://lxqt.org")
     (synopsis "Provides information about LXQt and the system")
     (description "lxqt-about is a dialogue window providing information about
@@ -292,14 +308,14 @@ LXQt and the system it's running on.")
 (define-public lxqt-admin
   (package
     (name "lxqt-admin")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0qvpv668ja83ydbdrlal1596xhag3xlkbd6qlh9xwdpb7nysvns1"))))
+        (base32 "0f0skkxqyhpidpd5phliax869v4n2whvglg8rahzia2zhw4ylzry"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -313,9 +329,6 @@ LXQt and the system it's running on.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -323,6 +336,14 @@ LXQt and the system it's running on.")
              (substitute* "lxqt-admin-user/CMakeLists.txt"
                (("DESTINATION \"\\$\\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\\}")
                 "DESTINATION \"share/polkit-1/actions"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("lxqt-admin-time/CMakeLists.txt"
+                            "lxqt-admin-user/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org")
     (synopsis "LXQt system administration tool")
@@ -333,25 +354,28 @@ the operating system LXQt is running on.")
 (define-public lxqt-config
   (package
     (name "lxqt-config")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0rizhl2v41kpgp57a61r6nmwcdw8nh9hprrrf33nfrdw8hpwxb95"))))
+        (base32 "16k36knv6d72gg8hp7423l3ic43y3l3zbaf3spqn2a354y30myrg"))))
     (build-system cmake-build-system)
     (inputs
-     `(("kwindowsystem" ,kwindowsystem)
+     `(("eudev" ,eudev)
+       ("kwindowsystem" ,kwindowsystem)
        ("libkscreen" ,libkscreen)
        ("liblxqt" ,liblxqt)
        ("libqtxdg" ,libqtxdg)
        ("libxcursor" ,libxcursor)
+       ("libxi" ,libxi)
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
        ("qtx11extras" ,qtx11extras)
        ("solid" ,solid)
+       ("xf86-input-libinput" ,xf86-input-libinput)
        ("zlib" ,zlib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -359,9 +383,6 @@ the operating system LXQt is running on.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -369,6 +390,20 @@ the operating system LXQt is running on.")
              (substitute* '("src/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("lxqt-config-file-associations/CMakeLists.txt"
+                            "lxqt-config-brightness/CMakeLists.txt"
+                            "lxqt-config-appearance/CMakeLists.txt"
+                            "lxqt-config-locale/CMakeLists.txt"
+                            "lxqt-config-monitor/CMakeLists.txt"
+                            "lxqt-config-input/CMakeLists.txt"
+                            "liblxqt-config-cursor/CMakeLists.txt"
+                            "src/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org")
     (synopsis "Tools to configure LXQt and the underlying operating system")
@@ -379,14 +414,14 @@ configuration of both LXQt and the underlying operating system.")
 (define-public lxqt-globalkeys
   (package
     (name "lxqt-globalkeys")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1gyvcjbhi7zpvgz1sf773dv9gc35hx5fz023njp9r4vl0dpcavgd"))))
+        (base32 "0m6svwy20bfy9d21g5l0qzjndph3rd8zqagmqgdjzjhh3lxwrsrk"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -401,9 +436,6 @@ configuration of both LXQt and the underlying operating system.")
        ("lxqt-build-tools" ,lxqt-build-tools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -412,6 +444,13 @@ configuration of both LXQt and the underlying operating system.")
                             "xdg/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "config/CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "Daemon used to register global keyboard shortcuts")
@@ -423,14 +462,14 @@ as a whole and are not limited to distinct applications.")
 (define-public lxqt-notificationd
   (package
     (name "lxqt-notificationd")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1l0hdbvghyhqgvy4pih7rvz26bc6yc8a3l1bdj11hnkw62h1i7d6"))))
+        (base32 "1kiag3fcx12qmslln6x6lwvm4f1spymwf71389kdya3vwx7hkmcy"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -444,9 +483,6 @@ as a whole and are not limited to distinct applications.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no test target
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -454,6 +490,14 @@ as a whole and are not limited to distinct applications.")
              (substitute* '("autostart/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("config/CMakeLists.txt"
+                            "src/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "The LXQt notification daemon")
@@ -464,14 +508,14 @@ according to the Desktop Notifications Specification.")
 (define-public lxqt-openssh-askpass
   (package
     (name "lxqt-openssh-askpass")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0l2272gya8jgv71bvg2hz37lnhiznv4ng3j0p6j79f99hwb5ygpk"))))
+        (base32 "1fvbgjidpifn420avh8n1gym49vcz6zgayz7xygg1x93s4awy1cs"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -485,9 +529,15 @@ according to the Desktop Notifications Specification.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
+             #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "GUI to query passwords on behalf of SSH agents")
     (description "lxqt-openssh-askpass is a GUI to query credentials on behalf
@@ -497,14 +547,14 @@ of other programs.")
 (define-public lxqt-panel
   (package
     (name "lxqt-panel")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1qraigzq7nc5a2q6f5ybxwx07gxffa3m3bg7fiv6ppwss51xqfd1"))))
+        (base32 "1r3wx0v3jm7j41h7gxr49izc9xa1afvrzq4wcdm0qbj98qa1rgpq"))))
     (build-system cmake-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -534,9 +584,6 @@ of other programs.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -545,6 +592,14 @@ of other programs.")
                             "menu/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("cmake/BuildPlugin.cmake"
+                            "panel/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "The LXQt desktop panel")
@@ -554,14 +609,14 @@ of other programs.")
 (define-public lxqt-policykit
   (package
     (name "lxqt-policykit")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1d97fys6625nk4q6irp0jhsbk30xi7idnii1f3vrrrdcl2cahagp"))))
+        (base32 "127rqb0nprybkc41lk0yq0r0dk5pbbw22gvrm4pwag71qh8wpk5i"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -579,8 +634,6 @@ of other programs.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no test target
-       #:configure-flags
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -588,6 +641,13 @@ of other programs.")
              (substitute* '("autostart/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "The LXQt PolicyKit agent")
@@ -598,14 +658,14 @@ LXQt.")
 (define-public lxqt-powermanagement
   (package
     (name "lxqt-powermanagement")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "15nvdypyjwnp7k3d2pkhdbmaqb3ccacmh95rbdbc5mr7yrjy9613"))))
+        (base32 "06bvgbkbl9p9n8ba5cfsynqgmpb5c8yfnsvp7zqhflj8k9p9msip"))))
     (build-system cmake-build-system)
     (inputs
      `(("kidletime" ,kidletime)
@@ -621,9 +681,6 @@ LXQt.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -631,6 +688,14 @@ LXQt.")
              (substitute* '("autostart/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("config/CMakeLists.txt"
+                            "src/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "Power management module for LXQt")
@@ -642,14 +707,14 @@ when laptop batteries are low on power.")
 (define-public lxqt-qtplugin
   (package
     (name "lxqt-qtplugin")
-    (version "0.13.0")
+    (version "0.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0nnwbc99njpsyqb0cy3x0srcgwa7qrnq0qwcyx7fbvwsq1l8cz56"))))
+        (base32 "18y7xfxwyismcycg70q6r8zrcygz1pdcvg6lqc6ba7azqb9806ds"))))
     (build-system cmake-build-system)
     (inputs
      `(("libdbusmenu-qt" ,libdbusmenu-qt)
@@ -680,14 +745,14 @@ Qt with LXQt.")
 (define-public lxqt-runner
   (package
     (name "lxqt-runner")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0dsg6fdcqbl7gza0sg1pb49zn5x31q7zx77jp7mkf6wc2lv8lali"))))
+        (base32 "1c687shypivkhjrpzs1jcy5l2i8d7xzm31c4is1xx6x9nbkgm4bm"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -705,9 +770,6 @@ Qt with LXQt.")
        ("lxqt-build-tools" ,lxqt-build-tools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -715,6 +777,13 @@ Qt with LXQt.")
              (substitute* '("autostart/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "Tool used to launch programs quickly by typing their names")
@@ -725,14 +794,14 @@ allows for launching applications or shutting down the system.")
 (define-public lxqt-session
   (package
     (name "lxqt-session")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1aibppppmg46ybbajx2qc395l0yp9rqlp2am01fqjxadsf8vci5z"))))
+        (base32 "11i2vimv3336dvvxb6y5csdybwjncr7cq3kwlj52vkpisnxslvgy"))))
     (build-system cmake-build-system)
     (inputs
      `(("eudev" ,eudev)
@@ -749,8 +818,6 @@ allows for launching applications or shutting down the system.")
        ("qttools" ,qttools)))
     (arguments
      `(#:tests? #f
-       #:configure-flags
-       `("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -759,6 +826,15 @@ allows for launching applications or shutting down the system.")
                             "config/CMakeLists.txt")
                (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}")
                 "DESTINATION \"etc/xdg"))
+             #t))
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* '("lxqt-config-session/CMakeLists.txt"
+                            "lxqt-leave/CMakeLists.txt"
+                            "lxqt-session/CMakeLists.txt")
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
              #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "Session manager for LXQt")
@@ -769,14 +845,14 @@ for the LXQt desktop environment.")
 (define-public lxqt-sudo
   (package
     (name "lxqt-sudo")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1j28wlw4rkzvr85yl78fqkvz7sv7dykm9ghm63xdkskfjbsas1cf"))))
+        (base32 "0mbygp2kkppwk7sxvpnwavdwrx88mh7ldcg6xm3zw1ndp29danay"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
@@ -792,9 +868,15 @@ for the LXQt desktop environment.")
        ("lxqt-build-tools" ,lxqt-build-tools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-translations-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{LXQT_TRANSLATIONS_DIR\\}")
+                (string-append (assoc-ref outputs "out")
+                               "/share/lxqt/translations")))
+             #t)))))
     (home-page "https://lxqt.org/")
     (synopsis "GUI frontend for sudo/su")
     (description "lxqt-sudo is a graphical front-end of commands sudo and su
@@ -805,14 +887,14 @@ permissions of other users including root.")
 (define-public lxqt-themes
   (package
     (name "lxqt-themes")
-    (version "0.13.0")
+    (version "0.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "13kkkzjx8bgnwckz79j273azvm4za66i4cp2qhxwdpxh0fwziklf"))))
+        (base32 "0p7svdpp0z44hvgrp2aip6hym0gdhbanyxsz6iz8sjnn28c995ia"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("lxqt-build-tools" ,lxqt-build-tools)))
@@ -843,20 +925,17 @@ for LXQt.")
 (define-public libfm-qt
   (package
     (name "libfm-qt")
-    (version "0.13.1")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0p0lbz7dh5c38zq3yp1v1mm99ymg7mqr3h7yzniif2hipmgvxsv9"))))
+        (base32 "06p3wqpc574v9f94wkq9hqmbbvb9q8phfpq301z55c5r939f4hrp"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO : prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                    ; no tests
     (inputs
      `(("glib" ,glib)
        ("libexif" ,libexif)
@@ -879,14 +958,14 @@ components to build desktop file managers which belongs to LXDE.")
 (define-public pcmanfm-qt
   (package
     (name "pcmanfm-qt")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "08jprkkk62pk34q9lxa207bh27xi86fj8jxfd5z3w2m5j5nim5mz"))))
+        (base32 "0x3c25inlxll965xszx37mnl5gp3smm2h7x04f67z0qlh3vsbrjq"))))
     (build-system cmake-build-system)
     (inputs
      `(("libfm-qt" ,libfm-qt)
@@ -898,9 +977,6 @@ components to build desktop file managers which belongs to LXDE.")
        ("lxqt-build-tools" ,lxqt-build-tools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -921,14 +997,14 @@ LXDE.")
 (define-public compton-conf
   (package
     (name "compton-conf")
-    (version "0.4.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0q3yx2a6wf8yahrwgvhmv9sd7gmrhid528vrqy04dg8m5cx1bjci"))))
+        (base32 "11n8k59jd0q2x66cispc9dpk139mp6j99hq1yjccxvh21vhc7mbc"))))
     (build-system cmake-build-system)
     (inputs
      `(("libconfig" ,libconfig)
@@ -939,9 +1015,6 @@ LXDE.")
        ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
@@ -959,14 +1032,14 @@ manager Compton.")
 (define-public lximage-qt
   (package
     (name "lximage-qt")
-    (version "0.7.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1mwjh6lrjayr9snsmabkl5qs4xm6d27mfz8k3jxfm5dk3pjj1b0w"))))
+        (base32 "0iiq55rm4z2jp19q1pbd2whifwvxg052q324vrwp4p7nz0wh04za"))))
     (build-system cmake-build-system)
     (inputs
      `(("libexif" ,libexif)
@@ -979,10 +1052,7 @@ manager Compton.")
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt.org/")
     (synopsis "The image viewer and screenshot tool for lxqt")
     (description "LXImage-Qt is the Qt port of LXImage, a simple and fast
@@ -992,14 +1062,14 @@ image viewer.")
 (define-public obconf-qt
   (package
     (name "obconf-qt")
-    (version "0.13.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1fbzn1p2mdvn8dcbavmd1imrvkph2jfssrlw8l26qz6qk8qlmhnf"))))
+        (base32 "1kzb7364150b60qd3wcgnw78b9ia5k3b16kq8w3p1y7pg6pddy8m"))))
     (build-system cmake-build-system)
     (inputs
      `(("imlib2" ,imlib2)
@@ -1017,10 +1087,7 @@ image viewer.")
        ("pkg-config" ,pkg-config)
        ("qttools" ,qttools)))
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt.org/")
     (synopsis "Openbox configuration tool")
     (description "ObConf-Qt is a Qt port of ObConf, a configuration editor for
@@ -1030,14 +1097,14 @@ window manager OpenBox.")
 (define-public pavucontrol-qt
   (package
     (name "pavucontrol-qt")
-    (version "0.4.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0pqvhhgw7d00wqw5v3ghm4l8250zy7bqpvhff6l7y1lw0z2fvcp6"))))
+        (base32 "18mw5r8grfrf95vxjbqrr790kl5l59qdqcmlxmwa6rwbfgywj1fq"))))
     (build-system cmake-build-system)
     (inputs
      `(("glib" ,glib)
@@ -1050,10 +1117,7 @@ window manager OpenBox.")
        ("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt.org/")
     (synopsis "Pulseaudio mixer in Qt")
     (description "@code{pavucontrol-qt} is the Qt port of volume control
@@ -1063,21 +1127,22 @@ window manager OpenBox.")
 (define-public qps
   (package
     (name "qps")
-    (version "1.10.18")
+    (version "1.10.20")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "0pzk83p7a9ax0893s9hp2qkmiilzrf8iqry5a0x1g73hdwm5hm44"))))
+        (base32 "0dz7ricxg2rrmdyca6mc2d4lyy5bpksjk751hvn95wssr76y2w0m"))))
     (build-system cmake-build-system)
     (inputs
      `(("libxrender" ,libxrender)
        ("qtbase" ,qtbase)
        ("qtx11extras" ,qtx11extras)))
     (native-inputs
-     `(("qttools" ,qttools)))
+     `(("lxqt-build-tools" ,lxqt-build-tools)
+       ("qttools" ,qttools)))
     (arguments
      '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt.org/")
@@ -1089,14 +1154,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qtermwidget
   (package
     (name "qtermwidget")
-    (version "0.9.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1c1qzbysxjbikp4bpgphphw4dgpl10gz8m06ccs2c48qxhpyd773"))))
+        (base32 "0v1vvi8vf9y8nv8y0gzffaqji53s75ab5jypksih0ndcws8ryww4"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)))
@@ -1104,10 +1169,7 @@ processes currently in existence, much like code{top} or code{ps}.")
      `(("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                    ; no tests
     (home-page "https://lxqt.org/")
     (synopsis "The terminal widget for QTerminal")
     (description "QTermWidget is a terminal emulator widget for Qt 5.")
@@ -1116,14 +1178,14 @@ processes currently in existence, much like code{top} or code{ps}.")
 (define-public qterminal
   (package
     (name "qterminal")
-    (version "0.9.0")
+    (version "0.14.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/" name "/releases/download/"
                            version "/" name "-" version ".tar.xz"))
        (sha256
-        (base32 "1vlza75br1ys62lgkdz26md729bfpbnasfzswp7hakmgaq1rhms1"))))
+        (base32 "0cgyaskyqginmm85d11inbi0mmxrsrnvgyx6g4l4l4iqpphfq670"))))
     (build-system cmake-build-system)
     (inputs
      `(("qtbase" ,qtbase)
@@ -1133,10 +1195,7 @@ processes currently in existence, much like code{top} or code{ps}.")
      `(("lxqt-build-tools" ,lxqt-build-tools)
        ("qttools" ,qttools)))
     (arguments
-     '(#:tests? #f                      ; no tests
-       #:configure-flags
-       ;; TODO: prefetch translations files from 'lxqt-l10n'.
-       '("-DPULL_TRANSLATIONS=NO")))
+     '(#:tests? #f))                      ; no tests
     (home-page "https://lxqt.org/")
     (synopsis "Lightweight Qt-based terminal emulator")
     (description "QTerminal is a lightweight Qt terminal emulator based on
@@ -1146,14 +1205,14 @@ QTermWidget.")
 (define-public screengrab
   (package
     (name "screengrab")
-    (version "1.99")
+    (version "1.101")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/lxqt/screengrab/releases/download/"
                            version "/screengrab-" version ".tar.xz"))
        (sha256
-        (base32 "17y8rsx9fixvxv2byq8d6c01vry10nv07f8jy85vz7zp4f0rgzz3"))))
+        (base32 "05f81xjlmiykd7iwx5xns5vnynjq4js4x1bk8wd648frrksp44fa"))))
     (build-system cmake-build-system)
     (inputs
      `(("kwindowsystem" ,kwindowsystem)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 4067b4b1ea..20b8bfa886 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -39,10 +39,12 @@
   #:use-module (guix build-system r)
   #:use-module (guix git-download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages adns)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
@@ -59,10 +61,14 @@
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
@@ -1002,9 +1008,23 @@ association studies (GWAS) on extremely large data sets.")
            (replace 'install
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
+                      (inc (string-append out "/include"))
                       (lib (string-append out "/lib")))
                  (mkdir-p lib)
-                 (install-file "gst-plugin/libgstonlinegmmdecodefaster.so" lib)
+                 ;; The build phase installed symlinks to the actual
+                 ;; libraries.  Install the actual targets.
+                 (for-each (lambda (file)
+                             (let ((target (readlink file)))
+                               (delete-file file)
+                               (install-file target lib)))
+                           (find-files lib "\\.so"))
+                 ;; Install headers
+                 (for-each (lambda (file)
+                             (let ((target-dir (string-append inc "/" (dirname file))))
+                               (install-file file target-dir)))
+                           (find-files "." "\\.h"))
+                 (install-file "gst-plugin/libgstonlinegmmdecodefaster.so"
+                               (string-append lib "/gstreamer-1.0"))
                  #t))))))
       (inputs
        `(("alsa-lib" ,alsa-lib)
@@ -1027,3 +1047,205 @@ association studies (GWAS) on extremely large data sets.")
       (description "Kaldi is an extensible toolkit for speech recognition
 written in C++.")
       (license license:asl2.0))))
+
+(define-public gst-kaldi-nnet2-online
+  (let ((commit "617e43e73c7cc45eb9119028c02bd4178f738c4a")
+        (revision "1"))
+    (package
+      (name "gst-kaldi-nnet2-online")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alumae/gst-kaldi-nnet2-online.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0xh3w67b69818s6ib02ara4lw7wamjdmh4jznvkpzrs4skbs9jx9"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f                    ; there are none
+         #:make-flags
+         (list (string-append "SHELL="
+                              (assoc-ref %build-inputs "bash") "/bin/bash")
+               (string-append "KALDI_ROOT="
+                              (assoc-ref %build-inputs "kaldi-src"))
+               (string-append "KALDILIBDIR="
+                              (assoc-ref %build-inputs "kaldi") "/lib")
+               "KALDI_FLAVOR=dynamic")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'chdir
+             (lambda _ (chdir "src") #t))
+           (replace 'configure
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((glib (assoc-ref inputs "glib")))
+                 (setenv "CXXFLAGS" "-std=c++11 -fPIC")
+                 (setenv "CPLUS_INCLUDE_PATH"
+                         (string-append glib "/include/glib-2.0:"
+                                        glib "/lib/glib-2.0/include:"
+                                        (assoc-ref inputs "gstreamer")
+                                        "/include/gstreamer-1.0:"
+                                        (getenv "CPLUS_INCLUDE_PATH"))))
+               (substitute* "Makefile"
+                 (("include \\$\\(KALDI_ROOT\\)/src/kaldi.mk") "")
+                 (("\\$\\(error Cannot find") "#"))))
+           (add-before 'build 'build-depend
+             (lambda* (#:key make-flags #:allow-other-keys)
+               (apply invoke "make" "depend" make-flags)))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lib (string-append out "/lib/gstreamer-1.0")))
+                 (install-file "libgstkaldinnet2onlinedecoder.so" lib)
+                 #t))))))
+      (inputs
+       `(("glib" ,glib)
+         ("gstreamer" ,gstreamer)
+         ("jansson" ,jansson)
+         ("openfst" ,openfst)
+         ("kaldi" ,kaldi)))
+      (native-inputs
+       `(("bash" ,bash)
+         ("glib:bin" ,glib "bin")       ; glib-genmarshal
+         ("kaldi-src" ,(package-source kaldi))
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://kaldi-asr.org/")
+      (synopsis "Gstreamer plugin for decoding speech")
+      (description "This package provides a GStreamer plugin that wraps
+Kaldi's @code{SingleUtteranceNnet2Decoder}.  It requires iVector-adapted DNN
+acoustic models.  The iVectors are adapted to the current audio stream
+automatically.")
+      (license license:asl2.0))))
+
+(define-public kaldi-gstreamer-server
+  (let ((commit "1735ba49c5dc0ebfc184e45105fc600cd9f1f508")
+        (revision "1"))
+    (package
+      (name "kaldi-gstreamer-server")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alumae/kaldi-gstreamer-server.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0j701m7lbwmzqxsfanj882v7881hrbmpqybbczbxqpcbg8q34w0k"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:tests? #f ; there are no tests that can be run automatically
+         #:modules ((guix build utils)
+                    (guix build gnu-build-system)
+                    (srfi srfi-26))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'build
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Disable hash randomization to ensure the generated .pycs
+               ;; are reproducible.
+               (setenv "PYTHONHASHSEED" "0")
+               (with-directory-excursion "kaldigstserver"
+                 (for-each (lambda (file)
+                             (apply invoke
+                                    `("python"
+                                      "-m" "compileall"
+                                      "-f" ; force rebuild
+                                      ,file)))
+                           (find-files "." "\\.py$")))
+               #t))
+           (replace 'install
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (share (string-append out "/share/kaldi-gstreamer-server/")))
+                 ;; Install Python files
+                 (with-directory-excursion "kaldigstserver"
+                   (for-each (cut install-file <> share)
+                             (find-files "." ".*")))
+
+                 ;; Install sample configuration files
+                 (for-each (cut install-file <> share)
+                           (find-files "." "\\.yaml"))
+
+                 ;; Install executables
+                 (mkdir-p bin)
+                 (let* ((server (string-append bin "/kaldi-gst-server"))
+                        (client (string-append bin "/kaldi-gst-client"))
+                        (worker (string-append bin "/kaldi-gst-worker"))
+                        (PYTHONPATH (getenv "PYTHONPATH"))
+                        (GST_PLUGIN_PATH (string-append
+                                          (assoc-ref inputs "gst-kaldi-nnet2-online")
+                                          "/lib/gstreamer-1.0:${GST_PLUGIN_PATH}"))
+                        (wrap (lambda (wrapper what)
+                                (with-output-to-file wrapper
+                                  (lambda _
+                                    (format #t
+                                            "#!~a
+export PYTHONPATH=~a
+export GST_PLUGIN_PATH=~a
+exec ~a ~a/~a \"$@\"~%"
+                                            (which "bash") PYTHONPATH GST_PLUGIN_PATH
+                                            (which "python") share what)))
+                                (chmod wrapper #o555))))
+                   (for-each wrap
+                             (list server client worker)
+                             (list "master_server.py"
+                                   "client.py"
+                                   "worker.py")))
+                 #t))))))
+      (inputs
+       `(("gst-kaldi-nnet2-online" ,gst-kaldi-nnet2-online)
+         ("python2" ,python-2)
+         ("python2-futures" ,python2-futures)
+         ("python2-pygobject" ,python2-pygobject)
+         ("python2-pyyaml" ,python2-pyyaml)
+         ("python2-tornado" ,python2-tornado)
+         ("python2-ws4py" ,python2-ws4py-for-kaldi-gstreamer-server)))
+      (home-page "https://github.com/alumae/kaldi-gstreamer-server")
+      (synopsis "Real-time full-duplex speech recognition server")
+      (description "This is a real-time full-duplex speech recognition server,
+based on the Kaldi toolkit and the GStreamer framework and implemented in
+Python.")
+      (license license:bsd-2))))
+
+(define-public grpc
+  (package
+    (name "grpc")
+    (version "1.16.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/grpc/grpc.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; no test target
+       #:configure-flags
+       (list "-DgRPC_ZLIB_PROVIDER=package"
+             "-DgRPC_CARES_PROVIDER=package"
+             "-DgRPC_SSL_PROVIDER=package"
+             "-DgRPC_PROTOBUF_PROVIDER=package")))
+    (inputs
+     `(("c-ares" ,c-ares)
+       ("openssl" ,openssl)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("protobuf" ,protobuf-next)
+       ("python" ,python-wrapper)))
+    (home-page "https://grpc.io")
+    (synopsis "High performance universal RPC framework")
+    (description "gRPC is a modern open source high performance @dfn{Remote
+Procedure Call} (RPC) framework that can run in any environment.  It can
+efficiently connect services in and across data centers with pluggable support
+for load balancing, tracing, health checking and authentication.  It is also
+applicable in last mile of distributed computing to connect devices, mobile
+applications and browsers to backend services.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 29ba1a92ef..9d09cade29 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -15,14 +15,14 @@
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@@ -84,6 +84,7 @@
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages libunistring)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
@@ -134,14 +135,14 @@
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.5")
+    (version "3.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1wx275w38fwni2abc8g7g3irbk332vr34byxd72zqfdiznsqgims"))))
+               "07phzpwrnkdclx6jvirljk9zcavl8wh02kpx3mfba9msr99kpqj6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -213,7 +214,11 @@
        ("readline" ,readline)
        ("linux-pam" ,linux-pam)
        ("libltdl" ,libltdl)
-       ("gdbm" ,gdbm)))
+       ("gdbm" ,gdbm)
+
+       ;; Required for SEARCH CHARSET.
+       ("libiconv" ,libiconv)
+       ("libunistring" ,libunistring)))
     (home-page "https://mailutils.org")
     (synopsis "Utilities and library for reading and serving mail")
     (description
@@ -343,14 +348,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.11.3")
+    (version "1.11.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "0h8rmcc62n1pagm7mjjccd5fxyhhi4vbvp8m88digkdf5z0g8hm5"))
+               "0098pr4anmq2a0id8wfi2vci3cgcfwf9k4q411w22xn8lrz3aldn"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -619,14 +624,14 @@ repository and Maildir/IMAP as LOCAL repository.")
 (define-public emacs-mew
   (package
     (name "emacs-mew")
-    (version "6.7")
+    (version "6.8")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://mew.org/Release/mew-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "03fzky2kz73vgx4cbps2psbbnrgqgkk5q7jwfldisymkzr9iz03y"))))
+                "0ixzyq33l6j34410kqav3lwn2wx171zvqd3irvns2jvhrbww8i6g"))))
     (native-inputs
      `(("emacs" ,emacs)))
     (propagated-inputs
@@ -1023,7 +1028,7 @@ useful features.")
 (define-public libetpan
   (package
     (name "libetpan")
-    (version "1.9.2")
+    (version "1.9.3")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -1031,7 +1036,7 @@ useful features.")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
-               (base32 "13jiy2ddxbp9f2mk1mip9sk8h97bva5m0pnq2mlvh5xhifs6gza4"))))
+               (base32 "19g4qskg71jv7sxfxsdkjmrxk9mk5kf9b6fhw06g6wvm3205n95f"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf-wrapper)
                      ("automake" ,automake)
@@ -1122,7 +1127,8 @@ compresses it.")
               ("mime-info" ,shared-mime-info)))
     (arguments
       '(#:configure-flags
-        '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")
+        '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant"
+          "--enable-ldap")
         #:make-flags
         ;; Disable updating icon cache since it's done by the profile hook.
         ;; Conflict with other packages in the profile would be inevitable
@@ -1193,7 +1199,7 @@ delivery.")
 (define-public exim
   (package
     (name "exim")
-    (version "4.90.1")
+    (version "4.92")
     (source
      (origin
        (method url-fetch)
@@ -1202,11 +1208,10 @@ delivery.")
                   (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-"
                                  version ".tar.bz2")))
        (sha256
-        (base32
-         "1w6blvvrd87c649j8xpag034md2w1ib0db9c4ijqbzc5dh2i1xfq"))))
+        (base32 "127spqn009wa6irp6r1k7a24r8vdwb6mf0raamxn8lbxsnrwy7sl"))))
     (build-system gnu-build-system)
     (inputs
-     `(("bdb" ,bdb)
+     `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’
        ("gnutls" ,gnutls)
        ("gzip" ,gzip)
        ("bzip2" ,bzip2)
@@ -1242,7 +1247,7 @@ delivery.")
                  (("(EXIM_USER=).*" all var)
                   (string-append var "nobody\n"))
                  (("(FIXED_NEVER_USERS=).*" all var)
-                  (string-append var "\n"))  ;XXX no root in build environment
+                  (string-append var "\n")) ; XXX no root in build environment
                  (("(COMPRESS_COMMAND=).*" all var)
                   (string-append var gzip "/bin/gzip\n"))
                  (("(ZCAT_COMMAND=).*" all var)
@@ -1482,15 +1487,14 @@ write simple, representation-independent mail handling code.")
 (define-public perl-email-address
   (package
     (name "perl-email-address")
-    (version "1.909")
+    (version "1.912")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
                            "Email-Address-" version ".tar.gz"))
        (sha256
-        (base32
-         "0l7x6sl06j9ffgfz5f9vgms2b5axd4cgp5fj03ivb3kia4km6b3g"))))
+        (base32 "1vzr0vx4zsw4zbc9xdffc31wnkc1raqmyfiyws06fbyck197i8qg"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Email-Address")
     (synopsis "Email address parsing and creation")
@@ -1730,15 +1734,13 @@ compatibility shims for the @command{sendmail}, @command{mailq}, and
 (define-public fdm
   (package
     (name "fdm")
-    (version "1.9")
+    (version "2.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://github.com/nicm/fdm/releases/download/"
-                                 version "/fdm-"
-                                 version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+                                 version "/fdm-" version ".tar.gz"))
              (sha256
-               (base32 "054rscijahiza5f9qha79rg3siji3bk5mk10f8c2vqx7m4w6qh8n"))))
+               (base32 "196fs1z8y7p12wmqn1bylzz94szl58yv2aby3p30nmwjnyv8rch6"))))
     (build-system gnu-build-system)
     (inputs
      `(("tdb" ,tdb)
@@ -1842,45 +1844,43 @@ Khard can also be used from within the email client @command{mutt}.")
     (license gpl3+)))
 
 (define-public perl-mail-spf
- (package
-  (name "perl-mail-spf")
-  (version "v2.9.0")
-  (source
-    (origin
-      (method url-fetch)
-      (uri (string-append
-             "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-"
+  (package
+    (name "perl-mail-spf")
+    (version "2.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-v"
              version
              ".tar.gz"))
-      (sha256
-        (base32
-          "0qk1rfgfm5drj4iyniiabrasrpqv570vzhgz66lwgb67y4amkjv1"))))
-  (build-system perl-build-system)
-  (native-inputs
-    `(("perl-module-build" ,perl-module-build)
-      ("perl-net-dns-resolver-programmable"
-       ,perl-net-dns-resolver-programmable)))
-  (arguments
-   `(#:phases (modify-phases %standard-phases
-       (add-before 'configure 'modify-Build.PL
-         (lambda* (#:key outputs #:allow-other-keys)
-           (substitute* "Build.PL"
-             (("'/usr/sbin'") (string-append "'"
-                                             (assoc-ref outputs "out")
-                                             "/sbin'")))
+       (sha256
+        (base32 "0qk1rfgfm5drj4iyniiabrasrpqv570vzhgz66lwgb67y4amkjv1"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-module-build" ,perl-module-build)
+       ("perl-net-dns-resolver-programmable"
+        ,perl-net-dns-resolver-programmable)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'modify-Build.PL
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Build.PL"
+               (("'/usr/sbin'") (string-append "'"
+                                               (assoc-ref outputs "out")
+                                               "/sbin'")))
              #t)))))
-  (inputs
-    `(("perl-error" ,perl-error)
-      ("perl-net-dns" ,perl-net-dns)
-      ("perl-netaddr-ip" ,perl-netaddr-ip)
-      ("perl-uri" ,perl-uri)))
-  (home-page
-    "https://metacpan.org/release/Mail-SPF")
-  (synopsis
-    "Perl implementation of Sender Policy Framework")
-  (description "Mail::SPF is the Sender Policy Framework implemented
+    (inputs
+     `(("perl-error" ,perl-error)
+       ("perl-net-dns" ,perl-net-dns)
+       ("perl-netaddr-ip" ,perl-netaddr-ip)
+       ("perl-uri" ,perl-uri)))
+    (home-page "https://metacpan.org/release/Mail-SPF")
+    (synopsis "Perl implementation of Sender Policy Framework")
+    (description "Mail::SPF is the Sender Policy Framework implemented
 in Perl.")
-  (license bsd-3)))
+    (license bsd-3)))
 
 (define-public mb2md
   (package
@@ -1930,15 +1930,14 @@ converts them to maildir format directories.")
 (define-public mpop
   (package
     (name "mpop")
-    (version "1.4.2")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/mpop/releases/"
-                           name "-" version ".tar.xz"))
+                           "mpop-" version ".tar.xz"))
        (sha256
-        (base32
-         "1rx5mhgqkm7swbynrhbsz32v85h0rydb4kqfgfs9jrznd9d14m2d"))))
+        (base32 "1di86frxv4gj8fasni409m87qmv0j0vmj13lawkz1pwv9hbynhjb"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
@@ -2842,3 +2841,27 @@ replacement for the @code{urlview} program.")
       (synopsis "Debbugs web interface")
       (description "Mumi is a Debbugs web interface.")
       (license agpl3+))))
+
+(define-public ytnef
+  (package
+    (name "ytnef")
+    (version "1.9.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Yeraze/ytnef.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "07h48s5qf08503pp9kafqbwipdqghiif22ghki7z8j67gyp04l6l"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (home-page "https://github.com/Yeraze/ytnef/")
+    (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+)))
diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm
index 67f2bf2881..2b1e2ef63c 100644
--- a/gnu/packages/markup.scm
+++ b/gnu/packages/markup.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index ef94491622..16e9148506 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2781761474..5671b83c00 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -16,11 +16,11 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Dave Love <me@fx@gnu.org>
 ;;; Copyright © 2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
@@ -612,15 +612,14 @@ singular value problems.")
 (define-public gnuplot
   (package
     (name "gnuplot")
-    (version "5.2.4")
+    (version "5.2.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
                                   version "/gnuplot-"
                                   version ".tar.gz"))
        (sha256
-        (base32
-         "1jvh8xmd2cvrhlsg88kxwh55wkwx31sg50v1n59slfippl0g058m"))))
+        (base32 "1vllgap08nhvdmc03idmkdnk9cfl2bp81hps50q1pqrr640qzp9m"))))
     (build-system gnu-build-system)
     (inputs `(("readline" ,readline)
               ("cairo" ,cairo)
@@ -1299,7 +1298,7 @@ online as well as original implementations of various other algorithms.")
 (define-public ipopt
   (package
     (name "ipopt")
-    (version "3.12.5")
+    (version "3.12.12")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1307,7 +1306,7 @@ online as well as original implementations of various other algorithms.")
                     version".tgz"))
               (sha256
                (base32
-                "09bk2hqy2vgi4yi76xng9zxakddwqy3wij9nx7wf2vfbxxpazrsk"))
+                "07yn9rzdswjk8n246qq6ci9ssf2bcplkifcpsfz9j6cdxw9vgbkv"))
               (modules '((guix build utils)))
               (snippet
                ;; Make sure we don't use the bundled software.
@@ -1639,7 +1638,7 @@ September 2004}")
 (define-public petsc
   (package
     (name "petsc")
-    (version "3.10.3")
+    (version "3.10.4")
     (source
      (origin
       (method url-fetch)
@@ -1647,9 +1646,9 @@ September 2004}")
       (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
                           "petsc-lite-" version ".tar.gz"))
       (sha256
-       (base32 "10p9ap1rp6k8k2g8zdc505kdlsc3976fjymyp393sccjapm50dph"))))
-    (outputs '("out"                    ;libraries and headers
-               "examples"))             ;~30MiB of examples
+       (base32 "0fk16944zh3473ra198kdkxdn08rq7b6ap838hxy1mh1i0hb488r"))))
+    (outputs '("out"                    ; libraries and headers
+               "examples"))             ; ~30MiB of examples
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
@@ -1662,7 +1661,7 @@ September 2004}")
        ))
     (arguments
      `(#:test-target "test"
-       #:parallel-build? #f             ;build is parallel by default
+       #:parallel-build? #f             ; build is parallel by default
        #:configure-flags
        `("--with-mpi=0"
          "--with-openmp=1"
@@ -3358,7 +3357,7 @@ Failure to do so will result in a library with poor performance.")
 (define-public glm
   (package
     (name "glm")
-    (version "0.9.9.3")
+    (version "0.9.9.4")
     (source
      (origin
        (method url-fetch)
@@ -3366,7 +3365,7 @@ Failure to do so will result in a library with poor performance.")
                            version  "/glm-" version ".zip"))
        (sha256
         (base32
-         "0yqk5r3qh60d4r2iab5q7wq0fryn8p3pz6s28y1i7amqj1aqavj9"))))
+         "17vxbqzy4pxciq5i39bgpxz54f7ifqqmcqwwq7m6xfgikwqqqawp"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("unzip" ,unzip)))
diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm
index ecac5412e4..3d6185ca78 100644
--- a/gnu/packages/mc.scm
+++ b/gnu/packages/mc.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index ae22218675..2a910c4bc6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
@@ -211,16 +211,16 @@ identi.ca and status.net).")
 (define-public bitlbee-discord
   (package
     (name "bitlbee-discord")
-    (version "0.4.1")
-    (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://github.com/sm00th/bitlbee-discord/"
-                              "archive/" version ".tar.gz"))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1bwqxlg6fwj3749y7w69n9jwsdzf5nl9xqiszbpv9k8x1422i1y1"))))
+    (version "0.4.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sm00th/bitlbee-discord.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -243,7 +243,7 @@ identi.ca and status.net).")
                      ("automake" ,automake)
                      ("texinfo" ,texinfo)
                      ("libtool" ,libtool)
-                     ("bitlbee" ,bitlbee)         ;needs bitlbee headers
+                     ("bitlbee" ,bitlbee) ; needs bitlbee headers
                      ("bash" ,bash)))
     (synopsis "Discord plugin for Bitlbee")
     (description "Bitlbee-discord is a plugin for Bitlbee witch provides
@@ -306,14 +306,14 @@ dictionaries.  HexChat can be extended with multiple addons.")
 (define-public ngircd
   (package
     (name "ngircd")
-    (version "24")
+    (version "25")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "020h9d1awyxqr0l42x1fhs47q7cmm17fdxzjish8p2kq23ma0gqp"))
+                "0kpf5qi98m9f833r4rx9n6h9p31biwk798jwc1mgzmix7sp7r6f4"))
               (patches (search-patches "ngircd-handle-zombies.patch"))))
     (build-system gnu-build-system)
     ;; Needed for the test suite.
@@ -683,7 +683,7 @@ end-to-end encryption support; XML console.")
 (define-public gajim-omemo
   (package
     (name "gajim-omemo")
-    (version "2.6.27")
+    (version "2.6.28")
     (source (origin
               (method url-fetch/zipbomb)
               (uri (string-append
@@ -691,7 +691,7 @@ end-to-end encryption support; XML console.")
                     version ".zip"))
               (sha256
                (base32
-                "1zy8a6pp8q9qjjxwsa4s2r9h20vs077xk59ycwy9lrfd8x79zw69"))))
+                "1xy9yyd4416my151kj41nc62xwgmnwpagrmw49bniv09y78cqysg"))))
     (build-system trivial-build-system)
     (arguments
      `(#:modules ((guix build utils))
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 3b2137889a..5a9c438997 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -91,7 +91,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.21.5")
+    (version "0.21.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -100,7 +100,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "1y8fbch4xp96i4mz6czivnwvaf7g8pnfix5d0pbybnkv7bmz1a9f"))))
+                "17z580gqwsr4xp3x124aapw96pl8hk91c43ld2x75606rim12kcd"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 10de6dee5b..952edca66e 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages fabric-management)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages java)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pciutils)
@@ -265,6 +266,51 @@ software vendors, application developers and computer science researchers.")
     ;; See file://LICENSE
     (license bsd-2)))
 
+;; TODO: javadoc files contain timestamps.
+(define-public java-openmpi
+  (package (inherit openmpi)
+    (name "java-openmpi")
+    (inputs
+     `(("openmpi" ,openmpi)
+       ,@(package-inputs openmpi)))
+    (native-inputs
+     `(("jdk" ,openjdk11 "jdk")
+       ("zip" ,(@ (gnu packages compression) zip))
+       ,@(package-native-inputs openmpi)))
+    (outputs '("out"))
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  ((guix build ant-build-system) #:prefix ant:)
+                  (guix build utils))
+       #:imported-modules ((guix build ant-build-system)
+                           (guix build syscalls)
+                           ,@%gnu-build-system-modules)
+       ,@(substitute-keyword-arguments (package-arguments openmpi)
+           ((#:configure-flags flags)
+            `(cons "--enable-mpi-java" ,flags))
+           ((#:make-flags flags ''())
+            `(append '("-C" "ompi/mpi/java")
+                     ,flags))
+           ((#:phases phases)
+            `(modify-phases ,phases
+               ;; We could provide the location of the JDK in the configure
+               ;; flags, but since the configure flags are embedded in the
+               ;; info binaries that would leave a reference to the JDK in
+               ;; the "out" output.  To avoid this we set JAVA_HOME.
+               (add-after 'unpack 'set-JAVA_HOME
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
+                   #t))
+               (add-after 'unpack 'link-with-existing-mpi-libraries
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (substitute* "ompi/mpi/java/c/Makefile.in"
+                     (("\\$\\(top_builddir\\)/ompi/lib@OMPI_LIBMPI_NAME@.la")
+                      (string-append (assoc-ref inputs "openmpi") "/lib/libmpi.la")))
+                   #t))
+               (add-after 'install 'strip-jar-timestamps
+                 (assoc-ref ant:%standard-phases 'strip-jar-timestamps)))))))
+    (synopsis "Java bindings for MPI")))
+
 (define-public openmpi-thread-multiple
   (package
     (inherit openmpi)
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 3d473a9cc2..db8eeda1ca 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -346,3 +346,22 @@ integer library written entirely in C.  It's designed to provide an API that is
 simple to work with that provides fairly efficient routines that build out of
 the box without configuration.")
     (license unlicense)))
+
+(define-public libtommath-1.0
+  (package
+    (inherit libtommath)
+    (version "1.0.1")
+    (outputs '("out"))
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/libtom/libtommath/releases/"
+                            "download/v" version "/ltm-" version ".tar.xz"))
+        (sha256
+         (base32
+          "0sbccdwbkfc680id2fi0x067j23biqcjqilwkk7y9339knrjy0s7"))))
+    (arguments
+      (substitute-keyword-arguments (package-arguments libtommath)
+        ((#:phases phases)
+         `(modify-phases ,phases
+            (delete 'install-static-library)))))))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 05fdc1428f..5a2358f19a 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
 ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2017, 2018 Pierre Langlois <pierre.langlois@gmx.com>
@@ -88,6 +88,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gpodder)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
@@ -1306,7 +1307,7 @@ users to select LV2 plugins and run them with jalv.")
 (define-public synthv1
   (package
     (name "synthv1")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -1314,7 +1315,7 @@ users to select LV2 plugins and run them with jalv.")
                               "/synthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1b9w4cml3cmcg09kh852cahas6l9ks8wl3gzp1az8rzxz4229yg1"))))
+                "1hcngk7mxfrqf8v3r759x3wd0p02nc3q83j8m3k58p408y3mx7nr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1340,7 +1341,7 @@ oscillators and stereo effects.")
 (define-public drumkv1
   (package
     (name "drumkv1")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -1348,7 +1349,7 @@ oscillators and stereo effects.")
                               "/drumkv1-" version ".tar.gz"))
               (sha256
                (base32
-                "1azzwqgrrr4zr509sib2jvigfvz5bkwnx82chdadxdwfarai8586"))))
+                "0d0kskr9pzdckw7sz4djjkkkgz1fa83zrq5my6qlxn68wqdj6800"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1375,7 +1376,7 @@ effects.")
 (define-public samplv1
   (package
     (name "samplv1")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -1383,7 +1384,7 @@ effects.")
                               "/samplv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0402rdr46za21w34m7ajzbwiiqcd1h0da3b0ldsr2z5g2mrkzxv8"))))
+                "16a5xix9pn0gl3fr6bv6zl1l9vrzgvy1q7xd8yxzfr3vi5s8x4z9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1410,7 +1411,7 @@ effects.")
 (define-public padthv1
   (package
     (name "padthv1")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri
@@ -1418,7 +1419,7 @@ effects.")
                               "/padthv1-" version ".tar.gz"))
               (sha256
                (base32
-                "0cd1jfb3ynfrsbz8jwfsbvs5liyddxg4zghrvz931qkkqi117hbh"))))
+                "0ddvlpjlg6zr9ckanqhisw0sgm8rxibvj1aj5dxzs9xb2wlwd8rr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; there are no tests
@@ -1491,7 +1492,7 @@ reverb effects.")
 (define-public setbfree
   (package
     (name "setbfree")
-    (version "0.8.7")
+    (version "0.8.8")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1500,10 +1501,10 @@ reverb effects.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0r2i8cp0gfzqp6scrxwwf7pn7lk2j9kmf8cx7bqjvgfyn251dw3j"))))
+                "15dr1nyj69wc9jnjq5z8ril90a3c0mcrii4zjyz0z3h7dhia3382"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; no "check" target
+     `(#:tests? #f                      ; no "check" target
        #:make-flags
        (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
              (string-append "FONTFILE="
@@ -1519,7 +1520,7 @@ reverb effects.")
        #:phases
        (modify-phases %standard-phases
          (add-before 'build 'set-CC-variable
-                     (lambda _ (setenv "CC" "gcc") #t))
+           (lambda _ (setenv "CC" "gcc") #t))
          (delete 'configure))))
     (inputs
      `(("jack" ,jack-1)
@@ -2249,14 +2250,14 @@ from the command line.")
 (define-public qtractor
   (package
     (name "qtractor")
-    (version "0.9.5")
+    (version "0.9.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://downloads.sourceforge.net/qtractor/"
                                   "qtractor-" version ".tar.gz"))
               (sha256
                (base32
-                "1zsikhqj5xzhw2x3b6pqlmcwz3hxx07lbbif8v3m3j41snzjic22"))))
+                "06sa4wl8zr0k8dnjiil0gjwnhrkq95h50xv56ih1y8jgyzxchaxp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f))                    ; no "check" target
@@ -4009,36 +4010,6 @@ OSC connections.")
 the electronic or dubstep genre.")
     (license license:gpl3+)))
 
-(define-public libmygpo-qt
-  (package
-    (name "libmygpo-qt")
-    (version "1.1.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://stefan.derkits.at/files/"
-                                  "libmygpo-qt/libmygpo-qt." version ".tar.gz"))
-              (sha256
-               (base32
-                "1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2"))
-              (patches (search-patches "libmygpo-qt-fix-qt-5.11.patch"
-                                       "libmygpo-qt-missing-qt5-modules.patch"))))
-    (build-system cmake-build-system)
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("qt" ,qtbase)))
-    (arguments
-     `(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON")
-       ;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446
-       ;; is fixed.
-       #:tests? #f))
-    (home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt")
-    (synopsis "Qt/C++ library wrapping the gpodder web service")
-    (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
-@url{https://gpodder.net} APIs.  It allows applications to discover, manage
-and track podcasts.")
-    (license license:lgpl2.1+)))
-
 (define-public sonivox-eas
   (package
     (name "sonivox-eas")
@@ -4227,7 +4198,7 @@ compact disc (CDDA) identifiers.")
 (define-public perl-webservice-musicbrainz
   (package
     (name "perl-webservice-musicbrainz")
-    (version "1.0.4")
+    (version "1.0.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4235,7 +4206,7 @@ compact disc (CDDA) identifiers.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "182z3xjajk6s7k5xm3kssjy3hqx2qbnq4f8864hma098ryy2ph3a"))))
+                "16chs1l58cf000d5kalkyph3p31ci73p1rlyx98mfv10d2cq6fsj"))))
     (build-system perl-build-system)
     (arguments
      ;; Tests try to connect to http://musicbrainz.org.
@@ -4361,7 +4332,7 @@ console music players.")
                                             dir "/sbin"))
                            (list ffmpeg chromaprint))))
                  #t)))
-           (add-after 'install-source 'install-scripts
+           (add-after 'install 'install-scripts
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (root (string-append out "/src/gitlab.com/ambrevar/demlo"))
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index ae3fb887e8..9b5498688b 100644
--- a/gnu/packages/ncurses.scm
+++ b/gnu/packages/ncurses.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 1470896a55..493c59148a 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
@@ -99,7 +99,6 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages valgrind)
   #:use-module (gnu packages web)
-  #:use-module (gnu packages wm)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
   #:use-module (ice-9 match))
@@ -685,13 +684,13 @@ fashion.")
 (define-public gandi.cli
   (package
     (name "gandi.cli")
-    (version "1.3")
+    (version "1.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri name version))
        (sha256
-        (base32 "0vfzkw1avybjkf6fwqpf5m4kjz4c0qkkmj62f3jd0zx00vh5ly1d"))))
+        (base32 "1lfvb5npk99nz1lwhr5m67ia1kj35nqd6a2xp9mii28xgzsd5awk"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -801,17 +800,31 @@ TCP connection, TLS handshake and so on) in the terminal.")
 (define-public bwm-ng
   (package
     (name "bwm-ng")
-    (version "0.6.1")
+    (version "0.6.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://www.gropp.org/bwm-ng/bwm-ng-"
-                           version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/vgropp/bwm-ng.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1w0dwpjjm9pqi613i8glxrgca3rdyqyp3xydzagzr5ndc34z6z02"))))
+        (base32 "0k906wb4pw3dcqpcwnni78lahzi3bva483f8c17sjykic7as4y5n"))))
     (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-premature-./configure
+           (lambda _
+             (substitute* "autogen.sh"
+               (("\\$srcdir/configure")
+                "true"))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (inputs
+     `(("ncurses" ,ncurses)))
     (synopsis "Console based live network and disk I/O bandwidth monitor")
     (description "Bandwidth Monitor NG is a small and simple console based
 live network and disk I/O bandwidth monitor.")
@@ -1163,18 +1176,17 @@ libproxy only have to specify which proxy to use.")
 (define-public proxychains-ng
   (package
     (name "proxychains-ng")
-    (version "4.13")
+    (version "4.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://ftp.barfooze.de/pub/sabotage/tarballs/"
-                           name "-" version ".tar.xz"))
+                           "proxychains-ng-" version ".tar.xz"))
        (sha256
-        (base32
-         "0418fv8hgf43rzrxxlybg49jz2h6w8inndhb6v1184k4cwzjnl3p"))))
+        (base32 "1bmhfbl1bzc87vl0xwr1wh5xvslfyc41nl2hqzhbj258p0sy004x"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; there are no tests
+     `(#:tests? #f                      ; there are no tests
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'fix-configure-script
@@ -1225,24 +1237,25 @@ library remains flexible, portable, and easily embeddable.")
 (define-public sslh
   (package
     (name "sslh")
-    (version "1.19c")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/yrutschle/sslh/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0pd8hifa9h0rm7vms3k6ic1k29xigrlv2idc5wgcafmb1v1243di"))))
+    (version "1.20")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/yrutschle/sslh.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "18zhkqlwfh6f5dg1a41a4p7p9g94dgb9nwls1ksy9r5yz174i2fx"))))
     (build-system gnu-build-system)
     (native-inputs
      `(;; Test dependencies.
        ("lcov" ,lcov)
        ("perl" ,perl)
+       ("perl-conf-libconfig" ,perl-conf-libconfig)
        ("perl-io-socket-inet6" ,perl-io-socket-inet6)
        ("perl-socket6" ,perl-socket6)
-       ("psmisc" ,psmisc)
-       ("valgrind" ,valgrind)))
+       ("psmisc" ,psmisc)))             ; for ‘killall’
     (inputs
      `(("libcap" ,libcap)
        ("libconfig" ,libconfig)
@@ -1253,24 +1266,24 @@ library remains flexible, portable, and easily embeddable.")
        (modify-phases %standard-phases
          (delete 'configure)            ; no configure script
          (add-before 'check 'fix-tests
-                     (lambda _
-                       (substitute* "./t"
-                         (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
-                         ;; The Guix build environment lacks ‘ip6-localhost’.
-                         (("ip6-localhost") "localhost"))
-                       #t))
+           (lambda _
+             (substitute* "./t"
+               (("\"/tmp") "$ENV{\"TMPDIR\"} . \"")
+               ;; The Guix build environment lacks ‘ip6-localhost’.
+               (("ip6-localhost") "localhost"))
+             #t))
          ;; Many of these files are mentioned in the man page. Install them.
          (add-after 'install 'install-documentation
-                    (lambda* (#:key outputs #:allow-other-keys)
-                      (let* ((out (assoc-ref outputs "out"))
-                             (doc (string-append out "/share/doc/sslh")))
-                        (install-file "README.md" doc)
-                        (for-each
-                         (lambda (file)
-                           (install-file file (string-append doc "/examples")))
-                         (append (find-files "." "\\.cfg")
-                                 (find-files "scripts"))))
-                      #t)))
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/sslh")))
+               (install-file "README.md" doc)
+               (for-each
+                (lambda (file)
+                  (install-file file (string-append doc "/examples")))
+                (append (find-files "." "\\.cfg")
+                        (find-files "scripts"))))
+             #t)))
        #:make-flags (list "CC=gcc"
                           "USELIBCAP=1"
                           "USELIBWRAP=1"
@@ -1456,13 +1469,13 @@ IPFIX, RSPAN, CLI, LACP, 802.1ag).")
 (define-public python-ipy
   (package
     (name "python-ipy")
-    (version "0.83")
+    (version "1.00")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "IPy" version))
               (sha256
                (base32
-                "1f6sdrxclifky4gvkf4gvyv5hx3fjh8vzspnfrqki6qm5d9mmnk1"))))
+                "08d6kcacj67mvh0b6y765ipccy6gi4w2ndd4v1l3im2qm1cgcarg"))))
     (build-system python-build-system)
     (home-page "https://github.com/autocracy/python-ipy/")
     (synopsis "Python class and tools for handling IP addresses and networks")
@@ -1477,7 +1490,7 @@ networks.")
 (define-public speedtest-cli
   (package
     (name "speedtest-cli")
-    (version "2.0.2")
+    (version "2.1.1")
     (source
      (origin
        (method git-fetch)
@@ -1486,8 +1499,7 @@ networks.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0vv2z37g2kgm2dzkfa4bhri92hs0d1acxi8z66gznsl5148q7sdi"))))
+        (base32 "0swm7nbk99w2xf1cb0l3c8y1vm4rqw6785p5j04alyb0g98vqa4b"))))
     (build-system python-build-system)
     (home-page "https://github.com/sivel/speedtest-cli")
     (synopsis "Internet bandwidth tester")
diff --git a/gnu/packages/nickle.scm b/gnu/packages/nickle.scm
index c8179419bb..9cc38867b6 100644
--- a/gnu/packages/nickle.scm
+++ b/gnu/packages/nickle.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 6227bca29b..419b6d7321 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -40,7 +40,7 @@
 (define-public ntp
   (package
    (name "ntp")
-   (version "4.2.8p12")
+   (version "4.2.8p13")
    (source
      (origin
        (method url-fetch)
@@ -53,8 +53,7 @@
                     (version-major+minor version)
                     "/ntp-" version ".tar.gz")))
        (sha256
-        (base32
-         "0m04ndn0674kcf9x0aggjya07a3hlig2nlzzpwk7vmqka0mj56vh"))
+        (base32 "0f1a4fya7v5s0426nim8ydvvlcashb8hicgs9xlm76ndrz7751r8"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 9a807a4cb6..801611beb1 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -305,7 +305,7 @@ for building OCaml library and programs.")
 (define-public opam
   (package
     (name "opam")
-    (version "2.0.1")
+    (version "2.0.3")
     (source (origin
               (method url-fetch)
               ;; Use the '-full' version, which includes all the dependencies.
@@ -317,7 +317,7 @@ for building OCaml library and programs.")
                )
               (sha256
                (base32
-                "0z6r9qr4awcdn7wyrl5y5jm34jsjlnzd00py893f1hd0c6vg3xw1"))))
+                "1qphm1grxx5j8li7f9qfpih4ylrnjl08b4ym8ma4ln44l56xm285"))))
     (build-system gnu-build-system)
     (arguments
      '(;; Sometimes, 'make -jX' would fail right after ./configure with
@@ -816,14 +816,10 @@ libpanel, librsvg and quartz.")
                (let ((doc (string-append (assoc-ref outputs "doc")
                                          "/share/doc/unison")))
                  (mkdir-p doc)
-                 ;; This is a workaround to prevent a build failure. Running
-                 ;; make docs somehow allows it to pass, but the generated
-                 ;; documentation is not pretty.
-                 (catch #t
-                   (lambda _
-                     (invoke "make" "docs"
-                             "TEXDIRECTIVES=\\\\draftfalse"))
-                   (lambda _ #t))
+                 ;; Remove an '\n' that prevents the doc to be generated
+                 ;; correctly with newer hevea.
+                 (substitute* "doc/local.tex"
+                   (("----SNIP----.*") "----SNIP----"))
                  ;; This file needs write-permissions, because it's
                  ;; overwritten by 'docs' during documentation generation.
                  (chmod "src/strings.ml" #o600)
diff --git a/gnu/packages/openbox.scm b/gnu/packages/openbox.scm
index 1643b7502b..ceca6e53e0 100644
--- a/gnu/packages/openbox.scm
+++ b/gnu/packages/openbox.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index 0d07571c2c..e8d766e472 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -36,6 +36,7 @@
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -198,14 +199,14 @@ servers from Python programs.")
 (define-public 389-ds-base
   (package
     (name "389-ds-base")
-    (version "1.4.0.13")
+    (version "1.4.0.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/389-ds-base/"
                                   "389-ds-base-" version ".tar.bz2"))
               (sha256
                (base32
-                "01dm3zq3w5ami9pwcjbjz8wfbx9krjxybjrgc4wyhrxlzd90ylzj"))))
+                "1qd1ap5d5nxyiq0d19czfwc3h7iwl9lmr5sy7d7xmpr2by59aysr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((srfi srfi-1)
@@ -222,12 +223,43 @@ servers from Python programs.")
                             (assoc-ref %build-inputs "pcre"))
              (string-append "--with-selinux="
                             (assoc-ref %build-inputs "libselinux"))
+             "--localstatedir=/var"
+             "--with-instconfigdir=/etc/dirsrv"
              ;; The Perl scripts are being removed in the 1.4.0 release.
              ;; Building them would require packaging of the outdated Mozilla
              ;; LDAP SDK (instead of OpenLDAP) and PerLDAP.
              "--disable-perl")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'fix-references
+           (lambda _
+             (substitute* "include/ldaputil/certmap.h"
+               (("nss3/cert.h") "nss/cert.h"))
+             (substitute* "src/lib389/lib389/nss_ssl.py"
+               (("'/usr/bin/certutil'")
+                (string-append "'" (which "certutil") "'"))
+               (("'/usr/bin/c_rehash'")
+                (string-append "'" (which "perl") "', '" (which "c_rehash") "'")))
+             #t))
+         (add-after 'unpack 'overwrite-default-locations
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "src/lib389/lib389/paths.py"
+                 (("/usr/share/dirsrv/inf/defaults.inf")
+                  (string-append out "/share/dirsrv/inf/defaults.inf")))
+               ;; This directory can only be specified relative to sysconfdir.  This
+               ;; is used to determine where to look for installed directory
+               ;; servers, so in the absence of a search path it needs to be global.
+               (substitute* "ldap/admin/src/defaults.inf.in"
+                 (("^initconfig_dir =.*")
+                  "initconfig_dir = /etc/dirsrv/registry\n"))
+               ;; This is used to determine where to write certificate files
+               ;; when installing new directory server instances.
+               (substitute* '("src/lib389/lib389/instance/setup.py"
+                              "src/lib389/lib389/instance/remove.py")
+                 (("etc_dirsrv_path = .*")
+                  "etc_dirsrv_path = '/etc/dirsrv/'\n"))
+               #t)))
          (add-after 'unpack 'fix-install-location-of-python-tools
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -286,6 +318,7 @@ servers from Python programs.")
              #t)))))
     (inputs
      `(("bdb" ,bdb)
+       ("cracklib" ,cracklib)
        ("cyrus-sasl" ,cyrus-sasl)
        ("gnutls" ,gnutls)
        ("httpd" ,httpd)
@@ -297,6 +330,7 @@ servers from Python programs.")
        ("net-snmp" ,net-snmp)
        ("nspr" ,nspr)
        ("nss" ,nss)
+       ("nss:bin" ,nss "bin") ; for certutil
        ("openldap" ,openldap)
        ("openssl" ,openssl)             ; #included by net-snmp
        ("pcre" ,pcre)
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index ad9ce23718..167d03b954 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -48,15 +48,14 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20190222")
+    (version "20190322")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/parallel/parallel-"
                           version ".tar.bz2"))
       (sha256
-       (base32
-        "073bj0ji9liq07j6a7y9i4kxfkv06kvavhh7654f2bgfavfbmcc6"))))
+       (base32 "12q0ys0dp019wykx7jcqbrilz8798hgb66k97aj2s2m7xdpw41ym"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 9fd5a6ff0d..ad89cee5a8 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@@ -295,17 +295,15 @@ and vice versa.")
 (define-public cracklib
   (package
     (name "cracklib")
-    (version "2.9.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/cracklib/cracklib/"
-                                  "releases/download/" name "-" version "/"
-                                  name "-" version ".tar.gz"))
-              (patches (search-patches "cracklib-CVE-2016-6318.patch"
-                                       "cracklib-fix-buffer-overflow.patch"))
-              (sha256
-               (base32
-                "0hrkb0prf7n92w6rxgq0ilzkk6rkhpys2cfqkrbzswp27na7dkqp"))))
+    (version "2.9.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/cracklib/cracklib/"
+                           "releases/download/v" version "/"
+                           "cracklib-" version ".tar.bz2"))
+       (sha256
+        (base32 "1rimpjsdnmw8f5b7k558cic41p2qy2n2yrlqp5vh7mp4162hk0py"))))
     (build-system gnu-build-system)
     (synopsis "Password checking library")
     (home-page "https://github.com/cracklib/cracklib")
diff --git a/gnu/packages/patches/at-spi2-core-meson-compat.patch b/gnu/packages/patches/at-spi2-core-meson-compat.patch
new file mode 100644
index 0000000000..168a31b4ed
--- /dev/null
+++ b/gnu/packages/patches/at-spi2-core-meson-compat.patch
@@ -0,0 +1,18 @@
+Fix build with Meson 0.50.0 and above.
+
+Taken from upstream repository:
+https://gitlab.gnome.org/GNOME/at-spi2-core/commit/44a812ea51223d82f21a098a2d45fcc5c329ce7a
+
+diff --git a/atspi/meson.build b/atspi/meson.build
+index b7a9357df1c4857dffa2ec123cd3073e67a07fea..2a6915d76202dabf923b50e6a8b85cbb83cb43d0 100644
+--- a/atspi/meson.build
++++ b/atspi/meson.build
+@@ -57,7 +57,7 @@ atspi_headers = [
+ 
+ atspi_includedir = join_paths(get_option('prefix'), get_option('includedir'), 'at-spi-2.0', 'atspi')
+ 
+-install_headers(atspi_headers, subdir: atspi_includedir)
++install_headers(atspi_headers, install_dir: atspi_includedir)
+ 
+ atspi_enums = gnome.mkenums('atspi-enum-types',
+                             sources: [ 'atspi-constants.h', 'atspi-types.h' ],
diff --git a/gnu/packages/patches/blender-2.79-newer-ffmpeg.patch b/gnu/packages/patches/blender-2.79-newer-ffmpeg.patch
new file mode 100644
index 0000000000..363489bc70
--- /dev/null
+++ b/gnu/packages/patches/blender-2.79-newer-ffmpeg.patch
@@ -0,0 +1,80 @@
+https://sources.debian.org/data/main/b/blender/2.79.b+dfsg0-4/debian/patches/0008-fix_building_with_latest_versions_of_FFmpeg.patch
+
+From: Bastien Montagne <montagne29@wanadoo.fr>
+Date: Tue, 8 May 2018 16:00:52 +0200
+Subject: fix_building_with_latest_versions_of_FFmpeg
+
+Some years-old deprecated stuff has now been removed.
+
+Correct solution is probably to use valid defines etc. in own code, but
+this is more FFMEPG maintainer task (since it also may change how old
+FFMPEG we do support...).
+---
+ intern/ffmpeg/ffmpeg_compat.h                  | 39 ++++++++++++++++++++++++++
+ source/blender/blenkernel/intern/writeffmpeg.c |  3 +-
+ 2 files changed, 41 insertions(+), 1 deletion(-)
+
+diff --git a/intern/ffmpeg/ffmpeg_compat.h b/intern/ffmpeg/ffmpeg_compat.h
+index 9c06c8a..f7f437c 100644
+--- a/intern/ffmpeg/ffmpeg_compat.h
++++ b/intern/ffmpeg/ffmpeg_compat.h
+@@ -109,6 +109,45 @@ int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
+ 
+ #endif
+ 
++/* XXX TODO Probably fix to correct modern flags in code? Not sure how old FFMPEG we want to support though,
++ * so for now this will do. */
++
++#ifndef FF_MIN_BUFFER_SIZE
++#  ifdef AV_INPUT_BUFFER_MIN_SIZE
++#    define FF_MIN_BUFFER_SIZE AV_INPUT_BUFFER_MIN_SIZE
++#  endif
++#endif
++
++#ifndef FF_INPUT_BUFFER_PADDING_SIZE
++#  ifdef AV_INPUT_BUFFER_PADDING_SIZE
++#    define FF_INPUT_BUFFER_PADDING_SIZE AV_INPUT_BUFFER_PADDING_SIZE
++#  endif
++#endif
++
++#ifndef CODEC_FLAG_GLOBAL_HEADER
++#  ifdef AV_CODEC_FLAG_GLOBAL_HEADER
++#    define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++#  endif
++#endif
++
++#ifndef CODEC_FLAG_GLOBAL_HEADER
++#  ifdef AV_CODEC_FLAG_GLOBAL_HEADER
++#    define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++#  endif
++#endif
++
++#ifndef CODEC_FLAG_INTERLACED_DCT
++#  ifdef AV_CODEC_FLAG_INTERLACED_DCT
++#    define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT
++#  endif
++#endif
++
++#ifndef CODEC_FLAG_INTERLACED_ME
++#  ifdef AV_CODEC_FLAG_INTERLACED_ME
++#    define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME
++#  endif
++#endif
++
+ /* FFmpeg upstream 1.0 is the first who added AV_ prefix. */
+ #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(54, 59, 100)
+ #  define AV_CODEC_ID_NONE CODEC_ID_NONE
+diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
+index a19e414..04d508a 100644
+--- a/source/blender/blenkernel/intern/writeffmpeg.c
++++ b/source/blender/blenkernel/intern/writeffmpeg.c
+@@ -605,7 +605,8 @@ static AVStream *alloc_video_stream(FFMpegContext *context, RenderData *rd, int
+ 	c->rc_buffer_aggressivity = 1.0;
+ #endif
+ 
+-	c->me_method = ME_EPZS;
++	/* Deprecated and not doing anything since July 2015, deleted in recent ffmpeg */
++	//c->me_method = ME_EPZS;
+ 	
+ 	codec = avcodec_find_encoder(c->codec_id);
+ 	if (!codec)
diff --git a/gnu/packages/patches/blender-2.79-python-3.7-fix.patch b/gnu/packages/patches/blender-2.79-python-3.7-fix.patch
new file mode 100644
index 0000000000..fd1d8ba437
--- /dev/null
+++ b/gnu/packages/patches/blender-2.79-python-3.7-fix.patch
@@ -0,0 +1,43 @@
+Copied from https://git.blender.org/gitweb/gitweb.cgi/blender.git/patch/1db47a2ccd1e68994bf8140eba6cc2a26a2bc91f
+Fixes <https://bugs.gnu.org/33608>.
+
+From 1db47a2ccd1e68994bf8140eba6cc2a26a2bc91f Mon Sep 17 00:00:00 2001
+From: Campbell Barton <ideasman42@gmail.com>
+Date: Thu, 12 Jul 2018 08:28:06 +0200
+Subject: [PATCH] Fix PyRNA class registration w/ Python 3.7
+
+In Python3.7 this now raises an error.
+---
+ source/blender/python/intern/bpy_rna.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
+index 9052b6f580a..80b0aa7a51b 100644
+--- a/source/blender/python/intern/bpy_rna.c
++++ b/source/blender/python/intern/bpy_rna.c
+@@ -7577,10 +7577,12 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, StructRNA *srna, v
+ 		if (!(flag & PROP_REGISTER))
+ 			continue;
+ 
++		/* TODO(campbell): Use Python3.7x _PyObject_LookupAttr(), also in the macro below. */
+ 		identifier = RNA_property_identifier(prop);
+ 		item = PyObject_GetAttrString(py_class, identifier);
+ 
+ 		if (item == NULL) {
++			PyErr_Clear();
+ 			/* Sneaky workaround to use the class name as the bl_idname */
+ 
+ #define     BPY_REPLACEMENT_STRING(rna_attr, py_attr)                         \
+@@ -7596,6 +7598,9 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, StructRNA *srna, v
+ 					}                                                         \
+ 					Py_DECREF(item);                                          \
+ 				}                                                             \
++				else {                                                        \
++					PyErr_Clear();                                            \
++				}                                                             \
+ 			}  /* intentionally allow else here */
+ 
+ 			if (false) {}  /* needed for macro */
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/cracklib-CVE-2016-6318.patch b/gnu/packages/patches/cracklib-CVE-2016-6318.patch
deleted file mode 100644
index 4806ecaae9..0000000000
--- a/gnu/packages/patches/cracklib-CVE-2016-6318.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-Fix CVE-2016-6318.
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6318
-
-Patch copied from Red Hat:
-
-https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2016-6318
-https://bugzilla.redhat.com/attachment.cgi?id=1188599&action=diff
-
-It is not safe to pass words longer than STRINGSIZE further to cracklib
-so the longbuffer cannot be longer than STRINGSIZE.
-diff -up cracklib-2.9.0/lib/fascist.c.longgecos cracklib-2.9.0/lib/fascist.c
---- cracklib-2.9.0/lib/fascist.c.longgecos	2014-02-06 16:03:59.000000000 +0100
-+++ cracklib-2.9.0/lib/fascist.c	2016-08-08 12:05:40.279235815 +0200
-@@ -515,7 +515,7 @@ FascistGecosUser(char *password, const c
-     char gbuffer[STRINGSIZE];
-     char tbuffer[STRINGSIZE];
-     char *uwords[STRINGSIZE];
--    char longbuffer[STRINGSIZE * 2];
-+    char longbuffer[STRINGSIZE];
- 
-     if (gecos == NULL)
- 	gecos = "";
-@@ -596,38 +596,47 @@ FascistGecosUser(char *password, const c
-     {
- 	for (i = 0; i < j; i++)
- 	{
--	    strcpy(longbuffer, uwords[i]);
--	    strcat(longbuffer, uwords[j]);
--
--	    if (GTry(longbuffer, password))
-+	    if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE)
- 	    {
--		return _("it is derived from your password entry");
--	    }
--
--	    strcpy(longbuffer, uwords[j]);
--	    strcat(longbuffer, uwords[i]);
-+		strcpy(longbuffer, uwords[i]);
-+		strcat(longbuffer, uwords[j]);
- 
--	    if (GTry(longbuffer, password))
--	    {
--		return _("it's derived from your password entry");
-+		if (GTry(longbuffer, password))
-+		{
-+		    return _("it is derived from your password entry");
-+		}
-+
-+		strcpy(longbuffer, uwords[j]);
-+		strcat(longbuffer, uwords[i]);
-+
-+		if (GTry(longbuffer, password))
-+		{
-+		   return _("it's derived from your password entry");
-+		}
- 	    }
- 
--	    longbuffer[0] = uwords[i][0];
--	    longbuffer[1] = '\0';
--	    strcat(longbuffer, uwords[j]);
--
--	    if (GTry(longbuffer, password))
-+	    if (strlen(uwords[j]) < STRINGSIZE - 1)
- 	    {
--		return _("it is derivable from your password entry");
-+		longbuffer[0] = uwords[i][0];
-+		longbuffer[1] = '\0';
-+		strcat(longbuffer, uwords[j]);
-+
-+		if (GTry(longbuffer, password))
-+		{
-+		    return _("it is derivable from your password entry");
-+		}
- 	    }
- 
--	    longbuffer[0] = uwords[j][0];
--	    longbuffer[1] = '\0';
--	    strcat(longbuffer, uwords[i]);
--
--	    if (GTry(longbuffer, password))
-+	    if (strlen(uwords[i]) < STRINGSIZE - 1)
- 	    {
--		return _("it's derivable from your password entry");
-+		longbuffer[0] = uwords[j][0];
-+		longbuffer[1] = '\0';
-+		strcat(longbuffer, uwords[i]);
-+
-+		if (GTry(longbuffer, password))
-+		{
-+		    return _("it's derivable from your password entry");
-+		}
- 	    }
- 	}
-     }
diff --git a/gnu/packages/patches/cracklib-fix-buffer-overflow.patch b/gnu/packages/patches/cracklib-fix-buffer-overflow.patch
deleted file mode 100644
index b1c990f282..0000000000
--- a/gnu/packages/patches/cracklib-fix-buffer-overflow.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Fix buffer overflow processing long words in Mangle().
-
-Patch adpated from upstream commit, omitting changes to 'NEWS':
-
-https://github.com/cracklib/cracklib/commit/33d7fa4585247cd2247a1ffa032ad245836c6edb
-
-From 33d7fa4585247cd2247a1ffa032ad245836c6edb Mon Sep 17 00:00:00 2001
-From: Jan Dittberner <jan@dittberner.info>
-Date: Thu, 25 Aug 2016 17:17:53 +0200
-Subject: [PATCH] Fix a buffer overflow processing long words
-
-A buffer overflow processing long words has been discovered. This commit
-applies the patch from
-https://build.opensuse.org/package/view_file/Base:System/cracklib/0004-overflow-processing-long-words.patch
-by Howard Guo.
-
-See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835386 and
-http://www.openwall.com/lists/oss-security/2016/08/23/8
----
- src/NEWS        | 1 +
- src/lib/rules.c | 5 ++---
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/lib/rules.c b/src/lib/rules.c
-index d193cc0..3a2aa46 100644
---- a/lib/rules.c
-+++ b/lib/rules.c
-@@ -434,9 +434,8 @@ Mangle(input, control)		/* returns a pointer to a controlled Mangle */
- {
-     int limit;
-     register char *ptr;
--    static char area[STRINGSIZE];
--    char area2[STRINGSIZE];
--    area[0] = '\0';
-+    static char area[STRINGSIZE * 2] = {0};
-+    char area2[STRINGSIZE * 2] = {0};
-     strcpy(area, input);
- 
-     for (ptr = control; *ptr; ptr++)
diff --git a/gnu/packages/patches/dropbear-CVE-2018-15599.patch b/gnu/packages/patches/dropbear-CVE-2018-15599.patch
deleted file mode 100644
index a474552cd2..0000000000
--- a/gnu/packages/patches/dropbear-CVE-2018-15599.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-Fix CVE-2018-15599:
-
-http://lists.ucc.gu.uwa.edu.au/pipermail/dropbear/2018q3/002108.html
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-15599
-
-Patch copied from upstream source repository:
-
-https://github.com/mkj/dropbear/commit/52adbb34c32d3e2e1bcdb941e20a6f81138b8248
-
-From 52adbb34c32d3e2e1bcdb941e20a6f81138b8248 Mon Sep 17 00:00:00 2001
-From: Matt Johnston <matt@ucc.asn.au>
-Date: Thu, 23 Aug 2018 23:43:12 +0800
-Subject: [PATCH] Wait to fail invalid usernames
-
----
- auth.h           |  6 +++---
- svr-auth.c       | 19 +++++--------------
- svr-authpam.c    | 26 ++++++++++++++++++++++----
- svr-authpasswd.c | 27 ++++++++++++++-------------
- svr-authpubkey.c | 11 ++++++++++-
- 5 files changed, 54 insertions(+), 35 deletions(-)
-
-diff --git a/auth.h b/auth.h
-index da498f5b..98f54683 100644
---- a/auth.h
-+++ b/auth.h
-@@ -37,9 +37,9 @@ void recv_msg_userauth_request(void);
- void send_msg_userauth_failure(int partial, int incrfail);
- void send_msg_userauth_success(void);
- void send_msg_userauth_banner(const buffer *msg);
--void svr_auth_password(void);
--void svr_auth_pubkey(void);
--void svr_auth_pam(void);
-+void svr_auth_password(int valid_user);
-+void svr_auth_pubkey(int valid_user);
-+void svr_auth_pam(int valid_user);
- 
- #if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
- int svr_pubkey_allows_agentfwd(void);
-diff --git a/svr-auth.c b/svr-auth.c
-index c19c0901..edde86bc 100644
---- a/svr-auth.c
-+++ b/svr-auth.c
-@@ -149,10 +149,8 @@ void recv_msg_userauth_request() {
- 		if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
- 				strncmp(methodname, AUTH_METHOD_PASSWORD,
- 					AUTH_METHOD_PASSWORD_LEN) == 0) {
--			if (valid_user) {
--				svr_auth_password();
--				goto out;
--			}
-+			svr_auth_password(valid_user);
-+			goto out;
- 		}
- 	}
- #endif
-@@ -164,10 +162,8 @@ void recv_msg_userauth_request() {
- 		if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
- 				strncmp(methodname, AUTH_METHOD_PASSWORD,
- 					AUTH_METHOD_PASSWORD_LEN) == 0) {
--			if (valid_user) {
--				svr_auth_pam();
--				goto out;
--			}
-+			svr_auth_pam(valid_user);
-+			goto out;
- 		}
- 	}
- #endif
-@@ -177,12 +173,7 @@ void recv_msg_userauth_request() {
- 	if (methodlen == AUTH_METHOD_PUBKEY_LEN &&
- 			strncmp(methodname, AUTH_METHOD_PUBKEY,
- 				AUTH_METHOD_PUBKEY_LEN) == 0) {
--		if (valid_user) {
--			svr_auth_pubkey();
--		} else {
--			/* pubkey has no failure delay */
--			send_msg_userauth_failure(0, 0);
--		}
-+		svr_auth_pubkey(valid_user);
- 		goto out;
- 	}
- #endif
-diff --git a/svr-authpam.c b/svr-authpam.c
-index 05e4f3e5..d201bc96 100644
---- a/svr-authpam.c
-+++ b/svr-authpam.c
-@@ -178,13 +178,14 @@ pamConvFunc(int num_msg,
-  * Keyboard interactive would be a lot nicer, but since PAM is synchronous, it
-  * gets very messy trying to send the interactive challenges, and read the
-  * interactive responses, over the network. */
--void svr_auth_pam() {
-+void svr_auth_pam(int valid_user) {
- 
- 	struct UserDataS userData = {NULL, NULL};
- 	struct pam_conv pamConv = {
- 		pamConvFunc,
- 		&userData /* submitted to pamvConvFunc as appdata_ptr */ 
- 	};
-+	const char* printable_user = NULL;
- 
- 	pam_handle_t* pamHandlep = NULL;
- 
-@@ -204,12 +205,23 @@ void svr_auth_pam() {
- 
- 	password = buf_getstring(ses.payload, &passwordlen);
- 
-+	/* We run the PAM conversation regardless of whether the username is valid
-+	in case the conversation function has an inherent delay.
-+	Use ses.authstate.username rather than ses.authstate.pw_name.
-+	After PAM succeeds we then check the valid_user flag too */
-+
- 	/* used to pass data to the PAM conversation function - don't bother with
- 	 * strdup() etc since these are touched only by our own conversation
- 	 * function (above) which takes care of it */
--	userData.user = ses.authstate.pw_name;
-+	userData.user = ses.authstate.username;
- 	userData.passwd = password;
- 
-+	if (ses.authstate.pw_name) {
-+		printable_user = ses.authstate.pw_name;
-+	} else {
-+		printable_user = "<invalid username>";
-+	}
-+
- 	/* Init pam */
- 	if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) {
- 		dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s", 
-@@ -242,7 +254,7 @@ void svr_auth_pam() {
- 				rc, pam_strerror(pamHandlep, rc));
- 		dropbear_log(LOG_WARNING,
- 				"Bad PAM password attempt for '%s' from %s",
--				ses.authstate.pw_name,
-+				printable_user,
- 				svr_ses.addrstring);
- 		send_msg_userauth_failure(0, 1);
- 		goto cleanup;
-@@ -253,12 +265,18 @@ void svr_auth_pam() {
- 				rc, pam_strerror(pamHandlep, rc));
- 		dropbear_log(LOG_WARNING,
- 				"Bad PAM password attempt for '%s' from %s",
--				ses.authstate.pw_name,
-+				printable_user,
- 				svr_ses.addrstring);
- 		send_msg_userauth_failure(0, 1);
- 		goto cleanup;
- 	}
- 
-+	if (!valid_user) {
-+		/* PAM auth succeeded but the username isn't allowed in for another reason
-+		(checkusername() failed) */
-+		send_msg_userauth_failure(0, 1);
-+	}
-+
- 	/* successful authentication */
- 	dropbear_log(LOG_NOTICE, "PAM password auth succeeded for '%s' from %s",
- 			ses.authstate.pw_name,
-diff --git a/svr-authpasswd.c b/svr-authpasswd.c
-index bdee2aa1..69c7d8af 100644
---- a/svr-authpasswd.c
-+++ b/svr-authpasswd.c
-@@ -48,22 +48,14 @@ static int constant_time_strcmp(const char* a, const char* b) {
- 
- /* Process a password auth request, sending success or failure messages as
-  * appropriate */
--void svr_auth_password() {
-+void svr_auth_password(int valid_user) {
- 	
- 	char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */
- 	char * testcrypt = NULL; /* crypt generated from the user's password sent */
--	char * password;
-+	char * password = NULL;
- 	unsigned int passwordlen;
--
- 	unsigned int changepw;
- 
--	passwdcrypt = ses.authstate.pw_passwd;
--
--#ifdef DEBUG_HACKCRYPT
--	/* debugging crypt for non-root testing with shadows */
--	passwdcrypt = DEBUG_HACKCRYPT;
--#endif
--
- 	/* check if client wants to change password */
- 	changepw = buf_getbool(ses.payload);
- 	if (changepw) {
-@@ -73,12 +65,21 @@ void svr_auth_password() {
- 	}
- 
- 	password = buf_getstring(ses.payload, &passwordlen);
--
--	/* the first bytes of passwdcrypt are the salt */
--	testcrypt = crypt(password, passwdcrypt);
-+	if (valid_user) {
-+		/* the first bytes of passwdcrypt are the salt */
-+		passwdcrypt = ses.authstate.pw_passwd;
-+		testcrypt = crypt(password, passwdcrypt);
-+	}
- 	m_burn(password, passwordlen);
- 	m_free(password);
- 
-+	/* After we have got the payload contents we can exit if the username
-+	is invalid. Invalid users have already been logged. */
-+	if (!valid_user) {
-+		send_msg_userauth_failure(0, 1);
-+		return;
-+	}
-+
- 	if (testcrypt == NULL) {
- 		/* crypt() with an invalid salt like "!!" */
- 		dropbear_log(LOG_WARNING, "User account '%s' is locked",
-diff --git a/svr-authpubkey.c b/svr-authpubkey.c
-index aa6087c9..ff481c87 100644
---- a/svr-authpubkey.c
-+++ b/svr-authpubkey.c
-@@ -79,7 +79,7 @@ static int checkfileperm(char * filename);
- 
- /* process a pubkey auth request, sending success or failure message as
-  * appropriate */
--void svr_auth_pubkey() {
-+void svr_auth_pubkey(int valid_user) {
- 
- 	unsigned char testkey; /* whether we're just checking if a key is usable */
- 	char* algo = NULL; /* pubkey algo */
-@@ -102,6 +102,15 @@ void svr_auth_pubkey() {
- 	keybloblen = buf_getint(ses.payload);
- 	keyblob = buf_getptr(ses.payload, keybloblen);
- 
-+	if (!valid_user) {
-+		/* Return failure once we have read the contents of the packet
-+		required to validate a public key. 
-+		Avoids blind user enumeration though it isn't possible to prevent
-+		testing for user existence if the public key is known */
-+		send_msg_userauth_failure(0, 0);
-+		goto out;
-+	}
-+
- 	/* check if the key is valid */
- 	if (checkpubkey(algo, algolen, keyblob, keybloblen) == DROPBEAR_FAILURE) {
- 		send_msg_userauth_failure(0, 0);
diff --git a/gnu/packages/patches/elixir-path-length.patch b/gnu/packages/patches/elixir-path-length.patch
new file mode 100644
index 0000000000..aa8bf38829
--- /dev/null
+++ b/gnu/packages/patches/elixir-path-length.patch
@@ -0,0 +1,15 @@
+In the package definition the call to the command 'git' is substituted with
+the full path to the git executable. This change causes the mix formatting tool
+to complain that the line is too long. This workaround reformats the file
+after the substitution is made.
+
+--- a/Makefile
++++ b/Makefile
+@@ -213,6 +213,7 @@
+ TEST_ERLS = $(addprefix $(TEST_EBIN)/, $(addsuffix .beam, $(basename $(notdir $(wildcard $(TEST_ERL)/*.erl)))))
+ 
+ test_formatted: compile
++	bin/elixir bin/mix format lib/mix/lib/mix/scm/git.ex
+ 	bin/elixir bin/mix format --check-formatted
+ 
+ test_erlang: compile $(TEST_ERLS)
diff --git a/gnu/packages/patches/knot-include-system-lmdb-header.patch b/gnu/packages/patches/knot-include-system-lmdb-header.patch
new file mode 100644
index 0000000000..5c5c0beabc
--- /dev/null
+++ b/gnu/packages/patches/knot-include-system-lmdb-header.patch
@@ -0,0 +1,34 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Wed, 20 Mar 2019 00:08:00 +0100
+Subject: [PATCH] gnu: knot: Include system <lmdb.h>.
+
+Copied verbatim from Knot master[0].
+
+[0]: https://gitlab.labs.nic.cz/knot/knot-dns/commit/b557430cffbb1c6b30617a394b02acc514e7e536
+
+From b557430cffbb1c6b30617a394b02acc514e7e536 Mon Sep 17 00:00:00 2001
+From: Daniel Salzman <daniel.salzman@nic.cz>
+Date: Wed, 6 Mar 2019 17:35:44 +0100
+Subject: [PATCH] journal: include proper header <lmdb.h>
+
+fixes #638
+---
+ src/knot/journal/knot_lmdb.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/knot/journal/knot_lmdb.h b/src/knot/journal/knot_lmdb.h
+index 35a88845c..b1d09cbb4 100644
+--- a/src/knot/journal/knot_lmdb.h
++++ b/src/knot/journal/knot_lmdb.h
+@@ -16,7 +16,7 @@
+ 
+ #pragma once
+ 
+-#include "contrib/lmdb/lmdb.h"
++#include <lmdb.h>
+ 
+ #include <stdbool.h>
+ #include <stdlib.h>
+-- 
+2.18.1
+
diff --git a/gnu/packages/patches/libextractor-CVE-2018-20430.patch b/gnu/packages/patches/libextractor-CVE-2018-20430.patch
deleted file mode 100644
index 570cd7c006..0000000000
--- a/gnu/packages/patches/libextractor-CVE-2018-20430.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Fix CVE-2018-20430:
-
-https://gnunet.org/bugs/view.php?id=5493
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20430
-https://security-tracker.debian.org/tracker/CVE-2018-20430
-
-Patch copied from upstream source repository:
-
-https://gnunet.org/git/libextractor.git/commit/?id=b405d707b36e0654900cba78e89f49779efea110
-
-From b405d707b36e0654900cba78e89f49779efea110 Mon Sep 17 00:00:00 2001
-From: Christian Grothoff <christian@grothoff.org>
-Date: Thu, 20 Dec 2018 22:47:53 +0100
-Subject: [PATCH] fix #5493 (out of bounds read)
-
----
- src/common/convert.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/common/convert.c b/src/common/convert.c
-index c0edf21..2be2108 100644
---- a/src/common/convert.c
-+++ b/src/common/convert.c
-@@ -36,8 +36,8 @@
-  *  string is returned.
-  */
- char *
--EXTRACTOR_common_convert_to_utf8 (const char *input, 
--				  size_t len, 
-+EXTRACTOR_common_convert_to_utf8 (const char *input,
-+				  size_t len,
- 				  const char *charset)
- {
- #if HAVE_ICONV
-@@ -52,7 +52,7 @@ EXTRACTOR_common_convert_to_utf8 (const char *input,
-   i = input;
-   cd = iconv_open ("UTF-8", charset);
-   if (cd == (iconv_t) - 1)
--    return strdup (i);
-+    return strndup (i, len);
-   if (len > 1024 * 1024)
-     {
-       iconv_close (cd);
-@@ -67,11 +67,11 @@ EXTRACTOR_common_convert_to_utf8 (const char *input,
-     }
-   itmp = tmp;
-   finSize = tmpSize;
--  if (iconv (cd, (char **) &input, &len, &itmp, &finSize) == SIZE_MAX)
-+  if (iconv (cd, (char **) &input, &len, &itmp, &finSize) == ((size_t) -1))
-     {
-       iconv_close (cd);
-       free (tmp);
--      return strdup (i);
-+      return strndup (i, len);
-     }
-   ret = malloc (tmpSize - finSize + 1);
-   if (ret == NULL)
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/libextractor-CVE-2018-20431.patch b/gnu/packages/patches/libextractor-CVE-2018-20431.patch
deleted file mode 100644
index 855c5ba64b..0000000000
--- a/gnu/packages/patches/libextractor-CVE-2018-20431.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Fix CVE-2018-20431:
-
-https://gnunet.org/bugs/view.php?id=5494
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20431
-https://security-tracker.debian.org/tracker/CVE-2018-20431
-
-Patch copied from upstream source repository:
-
-https://gnunet.org/git/libextractor.git/commit/?id=489c4a540bb2c4744471441425b8932b97a153e7
-
-To apply the patch to libextractor 1.8 release tarball,
-hunk #1 which patches ChangeLog is removed. 
-
-From 489c4a540bb2c4744471441425b8932b97a153e7 Mon Sep 17 00:00:00 2001
-From: Christian Grothoff <christian@grothoff.org>
-Date: Thu, 20 Dec 2018 23:02:28 +0100
-Subject: [PATCH] fix #5494
-
----
- ChangeLog                    | 3 ++-
- src/plugins/ole2_extractor.c | 9 +++++++--
- 2 files changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/src/plugins/ole2_extractor.c b/src/plugins/ole2_extractor.c
-index 53fa1b9..a48b726 100644
---- a/src/plugins/ole2_extractor.c
-+++ b/src/plugins/ole2_extractor.c
-@@ -173,7 +173,7 @@ struct ProcContext
-   EXTRACTOR_MetaDataProcessor proc;
- 
-   /**
--   * Closure for 'proc'.
-+   * Closure for @e proc.
-    */
-   void *proc_cls;
- 
-@@ -213,7 +213,12 @@ process_metadata (gpointer key,
- 
-   if (G_VALUE_TYPE(gval) == G_TYPE_STRING)
-     {
--      contents = strdup (g_value_get_string (gval));
-+      const char *gvals;
-+
-+      gvals = g_value_get_string (gval);
-+      if (NULL == gvals)
-+        return;
-+      contents = strdup (gvals);
-     }
-   else
-     {
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/libgit2-avoid-python.patch b/gnu/packages/patches/libgit2-avoid-python.patch
new file mode 100644
index 0000000000..b2e5141563
--- /dev/null
+++ b/gnu/packages/patches/libgit2-avoid-python.patch
@@ -0,0 +1,322 @@
+This provides a Guile reimplementation of clar's "generate.py".
+It makes it possible for us to remove Python from libgit2's build-time
+dependencies.
+libgit2 is used in order to fetch a lot of sources for guix packages.
+Both Python2 and Python3 builds acted up in the past.
+Hence this patch which makes the number of libgit2 dependencies very
+small.
+The reimplementation tries to keep as close as possible to the original
+in both structure and runtime effect.  Some things are thus overly
+convoluted just to make them the same as in the original.
+
+Both implementations basically do:
+
+grep -r 'test_.*__.*' . > clar.suite
+
+It is important that the directory traversal order of the original and
+the reimplementation stay the same.
+
+diff -ruN orig/libgit2-0.27.7/tests/CMakeLists.txt libgit2-0.27.7/tests/CMakeLists.txt
+--- orig/libgit2-0.27.7/tests/CMakeLists.txt	1970-01-01 01:00:00.000000000 +0100
++++ libgit2-0.27.7/tests/CMakeLists.txt	2019-03-04 11:13:06.640118979 +0100
+@@ -1,10 +1,3 @@
+-FIND_PACKAGE(PythonInterp)
+-
+-IF(NOT PYTHONINTERP_FOUND)
+-  MESSAGE(FATAL_ERROR "Could not find a python interpeter, which is needed to build the tests. "
+-    "Make sure python is available, or pass -DBUILD_CLAR=OFF to skip building the tests")
+-ENDIF()
+-
+ SET(CLAR_FIXTURES "${CMAKE_CURRENT_SOURCE_DIR}/resources/")
+ SET(CLAR_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
+ ADD_DEFINITIONS(-DCLAR_FIXTURE_PATH=\"${CLAR_FIXTURES}\")
+@@ -21,7 +14,7 @@
+ 
+ ADD_CUSTOM_COMMAND(
+ 	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite
+-	COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf .
++	COMMAND guile generate.scm -o "${CMAKE_CURRENT_BINARY_DIR}" -f -x online -x stress -x perf .
+ 	DEPENDS ${SRC_TEST}
+ 	WORKING_DIRECTORY ${CLAR_PATH}
+ )
+diff -ruN orig/libgit2-0.27.7/tests/generate.scm libgit2-0.27.7/tests/generate.scm
+--- orig/libgit2-0.27.7/tests/generate.scm	1970-01-01 01:00:00.000000000 +0100
++++ libgit2-0.27.7/tests/generate.scm	2019-03-04 12:18:00.688040975 +0100
+@@ -0,0 +1,277 @@
++;; -*- geiser-scheme-implementation: guile -*-
++
++;;; Implementation: Danny Milosavljevic <dannym@scratchpost.org>
++;;; Based on: Implementation in Python by Vicent Marti.
++;;; License: ISC, like the original generate.py in clar.
++
++(use-modules (ice-9 ftw))
++(use-modules (ice-9 regex))
++(use-modules (ice-9 getopt-long))
++(use-modules (ice-9 rdelim))
++(use-modules (ice-9 match))
++(use-modules (ice-9 textual-ports))
++(use-modules (srfi srfi-1))
++
++(define (render-callback cb)
++  (if cb
++      (string-append "    { \"" (assoc-ref cb "short-name") "\", &"
++                     (assoc-ref cb "symbol") " }")
++      "    { NULL, NULL }"))
++
++(define (replace needle replacement haystack)
++  "Replace all occurences of NEEDLE in HAYSTACK by REPLACEMENT.
++NEEDLE is a regular expression."
++  (regexp-substitute/global #f needle haystack 'pre replacement 'post))
++
++(define (skip-comments* text)
++  (call-with-input-string
++   text
++   (lambda (port)
++     (let loop ((result '())
++                (section #f))
++       (define (consume-char)
++         (cons (read-char port) result))
++       (define (skip-char)
++         (read-char port)
++         result)
++       (match section
++        (#f
++         (match (peek-char port)
++          (#\/ (loop (consume-char) 'almost-in-block-comment))
++          (#\" (loop (consume-char) 'in-string-literal))
++          (#\' (loop (consume-char) 'in-character-literal))
++          ((? eof-object?) result)
++          (_ (loop (consume-char) section))))
++        ('almost-in-block-comment
++         (match (peek-char port)
++          (#\* (loop (consume-char) 'in-block-comment))
++          (#\/ (loop (consume-char) 'in-line-comment))
++          ((? eof-object?) result)
++          (_ (loop (consume-char) #f))))
++        ('in-line-comment
++         (match (peek-char port)
++          (#\newline (loop (consume-char) #f))
++          ((? eof-object?) result)
++          (_ (loop (skip-char) section))))
++        ('in-block-comment
++         (match (peek-char port)
++           (#\* (loop (skip-char) 'almost-out-of-block-comment))
++           ((? eof-object?) result)
++           (_ (loop (skip-char) section))))
++        ('almost-out-of-block-comment
++         (match (peek-char port)
++           (#\/ (loop (cons (read-char port) (cons #\* result)) #f))
++           (#\* (loop (skip-char) 'almost-out-of-block-comment))
++           ((? eof-object?) result)
++           (_ (loop (skip-char) 'in-block-comment))))
++        ('in-string-literal
++         (match (peek-char port)
++           (#\\ (loop (consume-char) 'in-string-literal-escape))
++           (#\" (loop (consume-char) #f))
++           ((? eof-object?) result)
++           (_ (loop (consume-char) section))))
++        ('in-string-literal-escape
++         (match (peek-char port)
++           ((? eof-object?) result)
++           (_ (loop (consume-char) 'in-string-literal))))
++        ('in-character-literal
++         (match (peek-char port)
++           (#\\ (loop (consume-char) 'in-character-literal-escape))
++           (#\' (loop (consume-char) #f))
++           ((? eof-object?) result)
++           (_ (loop (consume-char) section))))
++        ('in-character-literal-escape
++         (match (peek-char port)
++           ((? eof-object?) result)
++           (_ (loop (consume-char) 'in-character-literal)))))))))
++
++(define (skip-comments text)
++  (list->string (reverse (skip-comments* text))))
++
++(define (maybe-only items)
++  (match items
++   ((a) a)
++   (_ #f)))
++
++(define (Module name path excludes)
++  (let* ((clean-name (replace "_" "::" name))
++         (enabled (not (any (lambda (exclude)
++                              (string-prefix? exclude clean-name))
++                            excludes))))
++    (define (parse contents)
++      (define (cons-match match prev)
++        (cons
++         `(("declaration" . ,(match:substring match 1))
++           ("symbol" . ,(match:substring match 2))
++           ("short-name" . ,(match:substring match 3)))
++         prev))
++      (let* ((contents (skip-comments contents))
++             (entries (fold-matches (make-regexp
++                                     (string-append "^(void\\s+(test_"
++                                                    name
++                                                    "__(\\w+))\\s*\\(\\s*void\\s*\\))\\s*\\{")
++                                     regexp/newline)
++                                    contents
++                                    '()
++                                    cons-match))
++             (entries (reverse entries))
++             (callbacks (filter (lambda (entry)
++                                   (match (assoc-ref entry "short-name")
++                                    ("initialize" #f)
++                                    ("cleanup" #f)
++                                    (_ #t)))
++                                entries)))
++        (if (> (length callbacks) 0)
++            `(("name" . ,name)
++              ("enabled" . ,(if enabled "1" "0"))
++              ("clean-name" . ,clean-name)
++              ("initialize" . ,(maybe-only (filter-map (lambda (entry)
++                                                      (match (assoc-ref entry "short-name")
++                                                       ("initialize" entry)
++                                                       (_ #f)))
++                                                     entries)))
++              ("cleanup" . ,(maybe-only (filter-map (lambda (entry)
++                                                   (match (assoc-ref entry "short-name")
++                                                    ("cleanup" entry)
++                                                    (_ #f)))
++                                                  entries)))
++              ("callbacks" . ,callbacks))
++            #f)))
++
++    (define (refresh path)
++      (and (file-exists? path)
++           (parse (call-with-input-file path get-string-all))))
++    (refresh path)))
++
++(define (generate-TestSuite path output excludes)
++    (define (load)
++        (define enter? (const #t))
++        (define (leaf file stat result)
++          (let* ((module-root (string-drop (dirname file)
++                                           (string-length path)))
++                 (module-root (filter-map (match-lambda
++                                           ("" #f)
++                                           (a a))
++                                          (string-split module-root #\/))))
++            (define (make-module path)
++              (let* ((name (string-join (append module-root (list (string-drop-right (basename path) (string-length ".c")))) "_"))
++                     (name (replace "-" "_" name)))
++                (Module name path excludes)))
++            (if (string-suffix? ".c" file)
++                (let ((module (make-module file)))
++                  (if module
++                      (cons module result)
++                      result))
++                result)))
++        (define (down dir stat result)
++          result)
++        (define (up file state result)
++          result)
++        (define skip (const #f))
++        (file-system-fold enter? leaf down up skip error '() path))
++
++    (define (CallbacksTemplate module)
++      (string-append "static const struct clar_func _clar_cb_"
++                     (assoc-ref module "name") "[] = {\n"
++                     (string-join (map render-callback
++                                       (assoc-ref module "callbacks"))
++                                  ",\n")
++                     "\n};\n"))
++
++    (define (DeclarationTemplate module)
++      (string-append (string-join (map (lambda (cb)
++                                         (string-append "extern "
++                                                        (assoc-ref cb "declaration")
++                                                        ";"))
++                                       (assoc-ref module "callbacks"))
++                                  "\n")
++                     "\n"
++                     (if (assoc-ref module "initialize")
++                         (string-append "extern " (assoc-ref (assoc-ref module "initialize") "declaration") ";\n")
++                         "")
++                     (if (assoc-ref module "cleanup")
++                         (string-append "extern " (assoc-ref (assoc-ref module "cleanup") "declaration") ";\n")
++                         "")))
++
++    (define (InfoTemplate module)
++      (string-append "
++    {
++        \"" (assoc-ref module "clean-name") "\",
++    " (render-callback (assoc-ref module "initialize")) ",
++    " (render-callback (assoc-ref module "cleanup")) ",
++        _clar_cb_" (assoc-ref module "name") ", "
++        (number->string (length (assoc-ref module "callbacks")))
++        ", " (assoc-ref module "enabled") "
++    }"))
++
++    (define (Write data)
++      (define (name< module-a module-b)
++        (string<? (assoc-ref module-a "name")
++                  (assoc-ref module-b "name")))
++      (define modules (sort (load) name<))
++
++      (define (suite-count)
++        (length modules))
++
++      (define (callback-count)
++        (fold + 0 (map (lambda (entry)
++                         (length (assoc-ref entry "callbacks")))
++                         modules)))
++
++      (define (display-x value)
++        (display value data))
++
++      (for-each (compose display-x DeclarationTemplate) modules)
++      (for-each (compose display-x CallbacksTemplate) modules)
++
++      (display-x "static struct clar_suite _clar_suites[] = {")
++      (display-x (string-join (map InfoTemplate modules) ","))
++      (display-x "\n};\n")
++
++      (let ((suite-count-str (number->string (suite-count)))
++            (callback-count-str (number->string (callback-count))))
++        (display-x "static const size_t _clar_suite_count = ")
++        (display-x suite-count-str)
++        (display-x ";\n")
++
++        (display-x "static const size_t _clar_callback_count = ")
++        (display-x callback-count-str)
++        (display-x ";\n")
++
++        (display (string-append "Written `clar.suite` ("
++                                callback-count-str
++                                " tests in "
++                                suite-count-str
++                                " suites)"))
++        (newline))
++      #t)
++
++    (call-with-output-file (string-append output "/clar.suite") Write))
++
++;;; main
++
++(define (main)
++  (define option-spec
++    '((force (single-char #\f) (value #f))
++      (exclude (single-char #\x) (value #t))
++      (output (single-char #\o) (value #t))
++      (help  (single-char #\h) (value #f))))
++
++  (define options (getopt-long (command-line) option-spec #:stop-at-first-non-option #t))
++  (define args (reverse (option-ref options '() '())))
++  (when (> (length args) 1)
++    (display "More than one path given\n")
++    (exit 1))
++
++  (if (< (length args) 1)
++      (set! args '(".")))
++
++  (let* ((path (car args))
++         (output (option-ref options 'output path))
++         (excluded (filter-map (match-lambda
++                                (('exclude . value) value)
++                                (_ #f))
++                               options)))
++    (generate-TestSuite path output excluded)))
++
++(main)
diff --git a/gnu/packages/patches/libgit2-oom-test.patch b/gnu/packages/patches/libgit2-oom-test.patch
deleted file mode 100644
index 9667d1c0da..0000000000
--- a/gnu/packages/patches/libgit2-oom-test.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Fix a test failure on 32-bit platforms as reported
-at <https://github.com/libgit2/libgit2/issues/4868>.
-
-From 415a8ae9c9b6ac18f0524b6af8e58408b426457d Mon Sep 17 00:00:00 2001
-From: Edward Thomson <ethomson@edwardthomson.com>
-Date: Thu, 13 Sep 2018 13:27:07 +0100
-Subject: [PATCH] tests: don't run buf::oom on 32-bit systems
-
-On a 32-bit Linux systems, the value large enough to make malloc
-guarantee a failure is also large enough that valgrind considers it
-"fishy".  Skip this test on those systems entirely.
----
- tests/buf/oom.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/tests/buf/oom.c b/tests/buf/oom.c
-index 2741a8ddf2..ec3bad9979 100644
---- a/tests/buf/oom.c
-+++ b/tests/buf/oom.c
-@@ -11,12 +11,8 @@
-  */
- #if defined(GIT_ARCH_64) && defined(__linux__)
- # define TOOBIG 0x0fffffffffffffff
--#elif defined(__linux__)
--# define TOOBIG 0x0fffffff
- #elif defined(GIT_ARCH_64)
- # define TOOBIG 0xffffffffffffff00
--#else
--# define TOOBIG 0xffffff00
- #endif
- 
- /**
-@@ -25,13 +21,18 @@
-  * will fail.  And because the git_buf_grow() wrapper always
-  * sets mark_oom, the code in git_buf_try_grow() will free
-  * the internal buffer and set it to git_buf__oom.
-- * 
-+ *
-  * We initialized the internal buffer to (the static variable)
-  * git_buf__initbuf.  The purpose of this test is to make sure
-  * that we don't try to free the static buffer.
-+ *
-+ * Skip this test entirely on 32-bit platforms; a buffer large enough
-+ * to guarantee malloc failures is so large that valgrind considers
-+ * it likely to be an error.
-  */
- void test_buf_oom__grow(void)
- {
-+#ifdef GIT_ARCH_64
- 	git_buf buf = GIT_BUF_INIT;
- 
- 	git_buf_clear(&buf);
-@@ -40,6 +41,9 @@ void test_buf_oom__grow(void)
- 	cl_assert(git_buf_oom(&buf));
- 
- 	git_buf_free(&buf);
-+#else
-+    cl_skip();
-+#endif
- }
- 
- void test_buf_oom__grow_by(void)
diff --git a/gnu/packages/patches/python-flint-includes.patch b/gnu/packages/patches/python-flint-includes.patch
new file mode 100644
index 0000000000..c0cfe94a04
--- /dev/null
+++ b/gnu/packages/patches/python-flint-includes.patch
@@ -0,0 +1,131 @@
+The following patch, authored by Andreas Enge, looks for the flint include
+files in the correct subdirectory.
+
+diff -u -r python-flint-old/src/flint.pxd python-flint-new/src/flint.pxd
+--- python-flint-old/src/flint.pxd	2019-03-19 10:26:11.055748626 +0100
++++ python-flint-new/src/flint.pxd	2019-03-19 10:35:23.269341203 +0100
+@@ -27,7 +27,7 @@
+ 
+ ctypedef long fmpz_struct
+ 
+-cdef extern from "flint.h":
++cdef extern from "flint/flint.h":
+     ctypedef void * flint_rand_t
+     void flint_randinit(flint_rand_t state)
+     void flint_randclear(flint_rand_t state)
+@@ -35,7 +35,7 @@
+     long flint_get_num_threads()
+     void flint_cleanup()
+ 
+-cdef extern from "nmod_vec.h":
++cdef extern from "flint/nmod_vec.h":
+     ctypedef struct nmod_t:
+        mp_limb_t n
+        mp_limb_t ninv
+@@ -47,7 +47,7 @@
+     mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod)
+     mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod)
+ 
+-cdef extern from "nmod_poly.h":
++cdef extern from "flint/nmod_poly.h":
+     ctypedef struct nmod_poly_struct:
+         mp_ptr coeffs
+         long alloc
+@@ -129,7 +129,7 @@
+     void nmod_poly_factor_init(nmod_poly_factor_t fac)
+     void nmod_poly_factor_clear(nmod_poly_factor_t fac)
+ 
+-cdef extern from "nmod_mat.h":
++cdef extern from "flint/nmod_mat.h":
+     ctypedef struct nmod_mat_struct:
+         mp_limb_t * entries
+         long r
+@@ -178,7 +178,7 @@
+     long nmod_mat_rref(nmod_mat_t A)
+     long nmod_mat_nullspace(nmod_mat_t X, nmod_mat_t A)
+ 
+-cdef extern from "fmpz.h":
++cdef extern from "flint/fmpz.h":
+     ctypedef fmpz_struct fmpz_t[1]
+     int COEFF_IS_MPZ(fmpz_struct v)
+     void fmpz_init(fmpz_t op)
+@@ -268,7 +268,7 @@
+     void fmpz_rfac_uiui(fmpz_t r, ulong x, ulong n)
+     void fmpz_primorial(fmpz_t res, ulong n)
+ 
+-cdef extern from "fmpz_factor.h":
++cdef extern from "flint/fmpz_factor.h":
+     ctypedef struct fmpz_factor_struct:
+         int sign
+         fmpz_struct * p
+@@ -280,7 +280,7 @@
+     void fmpz_factor_clear(fmpz_factor_t factor)
+     void fmpz_factor(fmpz_factor_t factor, fmpz_t n)
+ 
+-cdef extern from "fmpz_poly.h":
++cdef extern from "flint/fmpz_poly.h":
+     ctypedef struct fmpz_poly_struct:
+         fmpz_struct * coeffs
+         long alloc
+@@ -390,14 +390,14 @@
+     void fmpz_poly_cos_minpoly(fmpz_poly_t, ulong)
+     void fmpz_poly_swinnerton_dyer(fmpz_poly_t, ulong)
+ 
+-cdef extern from "fmpz_poly_factor.h":
++cdef extern from "flint/fmpz_poly_factor.h":
+     void fmpz_poly_factor_init(fmpz_poly_factor_t fac)
+     void fmpz_poly_factor_clear(fmpz_poly_factor_t fac)
+     void fmpz_poly_factor_zassenhaus(fmpz_poly_factor_t fac, fmpz_poly_t G)
+     void fmpz_poly_factor(fmpz_poly_factor_t fac, fmpz_poly_t G)
+     void fmpz_poly_factor_squarefree(fmpz_poly_factor_t fac, fmpz_poly_t G)
+ 
+-cdef extern from "fmpz_mat.h":
++cdef extern from "flint/fmpz_mat.h":
+     ctypedef struct fmpz_mat_struct:
+         fmpz_struct * entries
+         long r
+@@ -448,7 +448,7 @@
+     void fmpz_mat_snf(fmpz_mat_t S, const fmpz_mat_t A)
+     int fmpz_mat_is_in_snf(const fmpz_mat_t A)
+ 
+-cdef extern from "fmpz_lll.h":
++cdef extern from "flint/fmpz_lll.h":
+     ctypedef struct fmpz_lll_struct:
+         double delta
+         double eta
+@@ -461,7 +461,7 @@
+     void fmpz_lll(fmpz_mat_t B, fmpz_mat_t U, const fmpz_lll_t fl)
+ 
+ 
+-cdef extern from "fmpq.h":
++cdef extern from "flint/fmpq.h":
+     ctypedef struct fmpq_struct:
+         fmpz_struct num
+         fmpz_struct den
+@@ -506,7 +506,7 @@
+     void fmpq_next_signed_minimal(fmpq_t res, fmpq_t x)
+     void fmpq_harmonic_ui(fmpq_t res, ulong n)
+ 
+-cdef extern from "fmpq_poly.h":
++cdef extern from "flint/fmpq_poly.h":
+     ctypedef struct fmpq_poly_struct:
+         fmpz_struct * coeffs
+         fmpz_t den
+@@ -620,7 +620,7 @@
+     void fmpq_poly_compose_series(fmpq_poly_t res, fmpq_poly_t poly1, fmpq_poly_t poly2, long n)
+     void fmpq_poly_revert_series(fmpq_poly_t res, fmpq_poly_t poly1, long n)
+ 
+-cdef extern from "fmpq_mat.h":
++cdef extern from "flint/fmpq_mat.h":
+     ctypedef struct fmpq_mat_struct:
+         fmpq_struct * entries
+         long r
+@@ -672,7 +672,7 @@
+     long fmpq_mat_rref(fmpq_mat_t B, fmpq_mat_t A)
+     void fmpq_mat_transpose(fmpq_mat_t B, fmpq_mat_t A)
+ 
+-cdef extern from "arith.h":
++cdef extern from "flint/arith.h":
+     void arith_number_of_partitions(fmpz_t res, ulong n)
+     int arith_moebius_mu(fmpz_t n)
+     void arith_divisor_sigma(fmpz_t v, fmpz_t n, ulong k)
diff --git a/gnu/packages/patches/totem-meson-compat.patch b/gnu/packages/patches/totem-meson-compat.patch
new file mode 100644
index 0000000000..8557908dd0
--- /dev/null
+++ b/gnu/packages/patches/totem-meson-compat.patch
@@ -0,0 +1,14 @@
+Fix an error that occurs with Meson 0.50.0 and later:
+"ERROR: Subdir keyword must not be an absolute path".
+
+--- a/src/meson.build	2019-03-15 00:10:26.882293850 +0100
++++ b/src/meson.build	2019-03-15 00:10:54.312197229 +0100
+@@ -82,7 +82,7 @@
+ 
+ install_headers(
+   headers,
+-  subdir: join_paths(totem_includedir, totem_api_path)
++  install_dir: join_paths(totem_includedir, totem_api_path)
+ )
+ 
+ libtotem_player_sources = files(
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 77aa0484b4..93bb53d801 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2014, 2015, 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm
index c1edf48f06..aae83e5771 100644
--- a/gnu/packages/perl-check.scm
+++ b/gnu/packages/perl-check.scm
@@ -3,14 +3,14 @@
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 Alex Sassmannshausen <alex@pompo.co>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
@@ -34,6 +34,7 @@
   #:use-module (guix licenses)
   #:use-module (gnu packages)
   #:use-module (gnu packages valgrind)
+  #:use-module (gnu packages web)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system perl)
@@ -204,15 +205,14 @@ using @code{Test::Class}.")
 (define-public perl-test-cleannamespaces
   (package
     (name "perl-test-cleannamespaces")
-    (version "0.22")
+    (version "0.24")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Test-CleanNamespaces-" version ".tar.gz"))
        (sha256
-        (base32
-         "1jma95agqqy7iwdcl6jbg1waqz7mjqng4l046lpknhfxjhcj4al6"))))
+        (base32 "0yijspncqgmbkkxrh66xx1pliajar05yqhzq6m4nb6p8x1lmb39k"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-file-pushd" ,perl-file-pushd)
@@ -339,15 +339,14 @@ structures without getting caught in an infinite loop.")
 (define-public perl-test-differences
   (package
     (name "perl-test-differences")
-    (version "0.64")
+    (version "0.67")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DC/DCANTRELL/"
                            "Test-Differences-" version ".tar.gz"))
        (sha256
-        (base32
-         "0xmj5vgklq4yqvi7l63ky1k6g7fhww68llpmw9rhlaihqbcrsicz"))))
+        (base32 "1nkqr3m4lbzw7fkkzah42aiqlhxapamk6kw7hj90cjwkifsbp3f8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -577,15 +576,14 @@ contents of a file is equal to a particular string.")
 (define-public perl-test-harness
   (package
     (name "perl-test-harness")
-    (version "3.41")
+    (version "3.42")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/L/LE/LEONT/"
                            "Test-Harness-" version ".tar.gz"))
        (sha256
-        (base32
-         "0cgdgzywvscbvb9i0dmd2ls5jwqlnf2z6hx4f4lljpvdjd59v3m8"))))
+        (base32 "0lwfaamhpqia0ks4pcci83xbqz6jhng7acv95qk6wbd8zr70vn8g"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -648,14 +646,14 @@ you test against long strings.")
 (define-public perl-test-manifest
   (package
     (name "perl-test-manifest")
-    (version "2.02")
+    (version "2.021")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
                                   "Test-Manifest-" version ".tar.gz"))
               (sha256
                (base32
-                "15ik52l9macrrfizf4y6wj71d4lx7w590h2dfajnkmbxmz786iq6"))))
+                "1n9jscnni24sbp4v5gjlcy3iknfwvmy0731xwvk1c3jq3kbslym4"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-pod" ,perl-test-pod)
@@ -738,25 +736,24 @@ you @code{unmock()} the subroutine.")
 (define-public perl-test-mockobject
   (package
     (name "perl-test-mockobject")
-    (version "1.20150527")
+    (version "1.20180705")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/C/CH/CHROMATIC/"
                            "Test-MockObject-" version ".tar.gz"))
        (sha256
-        (base32
-         "160xvhbpwqjaff4fgckvldknldzcbn1z3jvyzybs7cqlj1x3bwdd"))))
+        (base32 "06250ayzzd90vbvkpxwr9d3nlbbngl1b9nk2qk0ma4aibn6ha5j5"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-test-exception" ,perl-test-exception)
+     `(("perl-cgi" ,perl-cgi)
+       ("perl-test-exception" ,perl-test-exception)
        ("perl-test-warn" ,perl-test-warn)))
     (propagated-inputs
      `(("perl-test-exception" ,perl-test-exception)
        ("perl-test-warn" ,perl-test-warn)
        ("perl-universal-can" ,perl-universal-can)
        ("perl-universal-isa" ,perl-universal-isa)))
-    (arguments `(#:tests? #f))          ;TODO: tests require perl-cgi
     (home-page "https://metacpan.org/release/Test-MockObject")
     (synopsis "Emulate troublesome interfaces in Perl")
     (description "Test::MockObject allows you to create objects that conform
@@ -767,15 +764,14 @@ the behavior, just the input and the output.")
 (define-public perl-test-mocktime
   (package
     (name "perl-test-mocktime")
-    (version "0.15")
+    (version "0.17")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DD/DDICK/"
                            "Test-MockTime-" version ".tar.gz"))
        (sha256
-        (base32
-         "0j6cxmkj52i5xkwg8dg6klm0dh386fzc5v80n5nbdalpvq0h48c8"))))
+        (base32 "1y820qsq7yf7r6smy5c6f0mpf2cis2q24vwmpim1svv0n8cf2qrk"))))
     (propagated-inputs
      `(("perl-time-piece" ,perl-time-piece)))
     (build-system perl-build-system)
@@ -1123,15 +1119,14 @@ bin as is also commonly used) paths of your Perl distribution.")
 (define-public perl-test-sharedfork
   (package
     (name "perl-test-sharedfork")
-    (version "0.29")
+    (version "0.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/"
                            "Test-SharedFork-" version ".tar.gz"))
        (sha256
-        (base32
-         "0vlak10q4gcf0ch0rfcb9lvddav6r8h15iipzbkbgf9mrj47gbv3"))))
+        (base32 "17y52j20k1bs9dgf4n6rhh9dn4cfxxbnfn2cfs7pb00fc5jyhci9"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-requires" ,perl-test-requires)))
@@ -1144,14 +1139,14 @@ makes fork(2) safe to use in test cases.")
 (define-public perl-test-simple
   (package
     (name "perl-test-simple")
-    (version "1.302141")
+    (version "1.302162")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/E/EX/EXODIST/"
                                   "Test-Simple-" version ".tar.gz"))
               (sha256
                (base32
-                "1dwmsf7jzhw8xppzrw2raq3q6nzd1kcl8b53hik4586b2k45n16p"))))
+                "1i0zsgp5ypygsfbl5gdsgnzlqv57bx69yl6sh440cpkk7my1k83k"))))
     (build-system perl-build-system)
     (synopsis "Basic utilities for writing tests")
     (description
@@ -1233,15 +1228,14 @@ cause a test fail unless it is exactly as @code{perltidy} would like it to be.")
 (define-public perl-test-trap
   (package
     (name "perl-test-trap")
-    (version "0.3.3")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/EB/EBHANSSEN/"
                            "Test-Trap-v" version ".tar.gz"))
        (sha256
-        (base32
-         "1676gqjyk0zig3yyqv053y5j1pajp2af08ffmgx94n414whbhm5c"))))
+        (base32 "1qjs2080kcc66s4d7499br5lw2qmhr9gxky4xsl6vjdn6dpna10b"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -1347,15 +1341,14 @@ installed.")
 (define-public perl-test-writevariants
   (package
     (name "perl-test-writevariants")
-    (version "0.010")
+    (version "0.014")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "Test-WriteVariants-" version ".tar.gz"))
        (sha256
-        (base32
-         "0kklp05fj98yiq8znyfx9lx1vmjay2ypfb868qdwv3kf93m5zjwr"))))
+        (base32 "11v4j3607bydxsqy2ylx9w6qr3qxcalfx3mdc4q4ccqmxsyw4jb3"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-most" ,perl-test-most)
@@ -1363,25 +1356,25 @@ installed.")
     (propagated-inputs
      `(("perl-data-tumbler" ,perl-data-tumbler)
        ("perl-file-homedir" ,perl-file-homedir)
-       ("perl-module-pluggable" ,perl-module-pluggable)))
+       ("perl-module-pluggable" ,perl-module-pluggable)
+       ("perl-module-runtime" ,perl-module-runtime)))
     (home-page "https://metacpan.org/release/Test-WriteVariants")
     (synopsis "Dynamic generation of tests")
     (description "The Test::WriteVariants module provides for the dynamic
 generation of tests in nested combinations of contexts.")
-    (license perl-license)))  ;See LICENSE
+    (license perl-license)))  ; see LICENSE
 
 (define-public perl-test-yaml
   (package
     (name "perl-test-yaml")
-    (version "1.06")
+    (version "1.07")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
+       (uri (string-append "mirror://cpan/authors/id/T/TI/TINITA/"
                            "Test-YAML-" version ".tar.gz"))
        (sha256
-        (base32
-         "0hxrfs7p9hqkhvv5nhk2hd3kh32smwng4nz47b8xf4iw2q1n2dr7"))))
+        (base32 "0pwrrnwi1qaiy3c5522vy0kzncxc9g02r4b056wqqaa69w1hsc0z"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-test-base" ,perl-test-base)))
diff --git a/gnu/packages/perl-web.scm b/gnu/packages/perl-web.scm
index 3c462aed03..c1af1d2caf 100644
--- a/gnu/packages/perl-web.scm
+++ b/gnu/packages/perl-web.scm
@@ -51,7 +51,7 @@ endeavor to implement this idea using modern technologies.")
 (define-public perl-uri-escape
   (package
     (name "perl-uri-escape")
-    (version "1.74")
+    (version "1.76")
     (source
      (origin
        (method url-fetch)
@@ -59,7 +59,7 @@ endeavor to implement this idea using modern technologies.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0gfmrpyy075pn2mbshs5599h8m096gjdz2dn8vcivjw9bzs59hm9"))))
+         "0gj1aj18k43kmzc3y1zhj5giinf8rksacf757r475xfna0fqxjdj"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-needs" ,perl-test-needs)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 4bf76a3467..52f0b852ad 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
 ;;; Copyright © 2016, 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
@@ -52,7 +52,8 @@
   #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages perl-web)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages textutils))
 
 ;;;
 ;;; Please: Try to add new module packages in alphabetic order.
@@ -295,15 +296,17 @@ list manipulation routines.")
 (define-public perl-async-interrupt
   (package
     (name "perl-async-interrupt")
-    (version "1.21")
+    (version "1.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/"
                                   "Async-Interrupt-" version ".tar.gz"))
               (sha256
                (base32
-                "092zs7b72f8q109c3z829nqfgwqghp3nhw44c0gcyhacbb4wgpk3"))))
+                "1lx4am3cqb9vvng9fhlwgfd7mk3afbrg8rps6xgpas6ij67dw8m0"))))
     (build-system perl-build-system)
+    (native-inputs
+     `(("perl-canary-stability" ,perl-canary-stability)))
     (propagated-inputs
      `(("perl-common-sense" ,perl-common-sense)))
     (home-page "https://metacpan.org/release/Async-Interrupt")
@@ -380,15 +383,14 @@ error when it would have happened.")
 (define-public perl-base
   (package
     (name "perl-base")
-    (version "2.18")
+    (version "2.23")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RG/RGARCIA/"
                            "base-" version ".tar.gz"))
        (sha256
-        (base32
-         "01n3l5ifmn2wd0aadpnzya27b75imibj9zdivkfzcpnviqgx5c2m"))))
+        (base32 "1pjxcbbcpwlgzm0fzsbqd58zn8cj9vwril1wn3xfd7ws550mixa0"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/base")
     (synopsis "Establish an ISA relationship with base classes at compile time")
@@ -467,15 +469,14 @@ compiling the surrounding scope.")
 (define-public perl-b-keywords
   (package
     (name "perl-b-keywords")
-    (version "1.15")
+    (version "1.20")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1nhdplmd0y69lnwyajg3anhk6pm13nm6qzm05nzpz8zl7j7fzlk5"))))
+        (base32 "12jvx5gnypqxal4valkf9lidba9nz7kjk2wvm07q3hkmdqxw1zk0"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/B-Keywords")
     (synopsis "Lists of reserved barewords and symbol names")
@@ -540,15 +541,14 @@ library can nevertheless be used stand-alone, without Perl.")
 (define-public perl-boolean
   (package
     (name "perl-boolean")
-    (version "0.45")
+    (version "0.46")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/I/IN/INGY/"
                            "boolean-" version ".tar.gz"))
        (sha256
-        (base32
-         "18hrgldzwnhs0c0r8hxx6r05qvk9p7gwinjwcybixfs2h0n43ypj"))))
+        (base32 "0shmiw8pmshnwj01cz8g94867hjf4vc1dkp61xlbz0rybh48ih4m"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/boolean")
     (synopsis "Boolean support for Perl")
@@ -601,7 +601,7 @@ Standard Book Numbers, including ISBN-10 and ISBN-13.")
 (define-public perl-business-issn
   (package
     (name "perl-business-issn")
-    (version "0.91")
+    (version "1.003")
     (source
      (origin
        (method url-fetch)
@@ -609,7 +609,7 @@ Standard Book Numbers, including ISBN-10 and ISBN-13.")
                            "Business-ISSN-" version ".tar.gz"))
        (sha256
         (base32
-         "1dfnm7h7lbqj356700ldlmgbr51v6hyjn1qig2bb4ysl1wn1jnzi"))))
+         "1lcr9dabwqssjpff97ki6w8mjhvh8kfbj3csbyy28ylk35n4awhj"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Business-ISSN")
     (synopsis "Work with International Standard Serial Numbers")
@@ -620,15 +620,14 @@ Standard Serial Numbers.")
 (define-public perl-business-ismn
   (package
     (name "perl-business-ismn")
-    (version "1.131")
+    (version "1.201")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
                            "Business-ISMN-" version ".tar.gz"))
        (sha256
-        (base32
-         "1xyc7x4c4xl930rz7grs1l52f1vg4rbiv0c6xlxdsim8qsh7k94g"))))
+        (base32 "1cpcfyaz1fl6fnm076jx2jsphw147wj6aszj2yzqrgsncjhk2cja"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-tie-cycle" ,perl-tie-cycle)))
@@ -668,15 +667,14 @@ easy to use abstraction of the file system or shared memory.")
 (define-public perl-cache-fastmmap
   (package
     (name "perl-cache-fastmmap")
-    (version "1.40")
+    (version "1.47")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RO/ROBM/"
                            "Cache-FastMmap-" version ".tar.gz"))
        (sha256
-        (base32
-         "0h3ckr04cdn6dvl40m4m97vl5ybf30v1lwhw3jvkr92kpksvq4hd"))))
+        (base32 "0fdni3iyjfnx8ldgrz3h6z6yxbklrx76klcghg6xvmzd878yqlmi"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Cache-FastMmap")
     (synopsis "Shared memory interprocess cache via mmap")
@@ -731,7 +729,7 @@ to test the installed perl for compatibility with his modules.")
 (define-public perl-carp
   (package
     (name "perl-carp")
-    (version "1.38")
+    (version "1.50")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -739,7 +737,7 @@ to test the installed perl for compatibility with his modules.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "00bijwwc0ix27h2ma3lvsf3b56biar96bl9dikxgx7cmpcycxad5"))))
+                "1ngbpjyd9qi7n4h5r3q3qibd8by7rfiv7364jqlv4lbd3973n9zm"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Carp")
     (synopsis "Alternative warn and die for modules")
@@ -756,15 +754,14 @@ but it is a good educated guess.")
 (define-public perl-carp-always
   (package
     (name "perl-carp-always")
-    (version "0.13")
+    (version "0.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/Carp-Always-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0i2rifkr7ybfcdsqana52487z7vxp2l5qdra0f6ik0ddhn6rzii1"))))
+        (base32 "1wb6b0qjga7kvn4p8df6k4g1pl2yzaqiln1713xidh3i454i3alq"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-base" ,perl-test-base)))
@@ -797,7 +794,7 @@ library assert.h.")
 (define-public perl-carp-assert-more
   (package
     (name "perl-carp-assert-more")
-    (version "1.14")
+    (version "1.16")
     (source
      (origin
        (method url-fetch)
@@ -805,7 +802,7 @@ library assert.h.")
                            "Carp-Assert-More-" version ".tar.gz"))
        (sha256
         (base32
-         "0cq7qk4qbhqppm4raby5k24b5mx5qjgy1884nrddhxillnzlq01z"))))
+         "1x9jd6s3lq97na6gz7g0zaq62l8z297xsfpdj2v42p3ijpfirl4f"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)))
@@ -820,7 +817,7 @@ Perl.")
 (define-public perl-carp-clan
   (package
     (name "perl-carp-clan")
-    (version "6.06")
+    (version "6.07")
     (source
      (origin
        (method url-fetch)
@@ -828,7 +825,7 @@ Perl.")
                            "Carp-Clan-" version ".tar.gz"))
        (sha256
         (base32
-         "1m6902n6s627nsvyn2vyrk29q7lh6808hsdk7ka5cirm27vchjpa"))))
+         "0gaa4ygd9q8lp2fn5d9s7miiwxz92a2lqs7j6smwmifq6w3mc20a"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)))
@@ -910,15 +907,14 @@ the same mk_accessors interface.")
 (define-public perl-class-accessor-grouped
   (package
     (name "perl-class-accessor-grouped")
-    (version "0.10012")
+    (version "0.10014")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
                            "Class-Accessor-Grouped-" version ".tar.gz"))
        (sha256
-        (base32
-         "1zp74yv023q3macrf4rv3i82z8pkffqyhh7xk9xg8fbr63ikwqf4"))))
+        (base32 "1fy48hx56n5kdn1gz66awg465qf34r0n5jam64x7zxh9zhzb1m9m"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -936,15 +932,14 @@ different getters and setters.")
 (define-public perl-class-c3
   (package
     (name "perl-class-c3")
-    (version "0.27")
+    (version "0.34")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "Class-C3-" version ".tar.gz"))
        (sha256
-        (base32
-         "185jdpr4applrkvh71ks9ildx5kdymhqr4hilsqxwqny1wr56qss"))))
+        (base32 "1dcibc31v5jwmi6hsdzi7c5ag1sb4wp3kxkibc889qrdj7jm12sd"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-algorithm-c3" ,perl-algorithm-c3)))
@@ -982,15 +977,14 @@ supporting the same interface, but using Class::C3 to do the hard work.")
 (define-public perl-class-c3-componentised
   (package
     (name "perl-class-c3-componentised")
-    (version "1.001000")
+    (version "1.001002")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/F/FR/FREW/"
                            "Class-C3-Componentised-" version ".tar.gz"))
        (sha256
-        (base32
-         "1nzav8arxll0rya7r2vp032s3acliihbb9mjlfa13rywhh77bzvl"))))
+        (base32 "14wn1g45z3b5apqq7dcai5drk01hfyqydsd2m6hsxzhyvi3b2l9h"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -1029,15 +1023,14 @@ subclasses and can be overridden.")
 (define-public perl-class-date
   (package
     (name "perl-class-date")
-    (version "1.1.15")
+    (version "1.1.17")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/"
                            "Class-Date-" version ".tar.gz"))
        (sha256
-        (base32
-         "0dd707sq8ix2dqbnp7ga77ba69r3vsn0cd6scnkn13s0gm2g4b00"))))
+        (base32 "1h7dfjxkpqbfymrf1bn7699i4fx6pbv5wvvi5zszfr8sqqkax1yf"))))
     (build-system perl-build-system)
     (arguments `(#:tests? #f))          ;timezone tests in chroot
     (home-page "https://metacpan.org/release/Class-Date")
@@ -1108,15 +1101,14 @@ loaded class.")
 (define-public perl-class-load
   (package
     (name "perl-class-load")
-    (version "0.24")
+    (version "0.25")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "Class-Load-" version ".tar.gz"))
        (sha256
-        (base32
-         "0dnacm959vi5819h6cdl5qpi89fr81p6smbsqx7m6in18vd87f8b"))))
+        (base32 "13sz4w8kwljhfcy7yjjgrgg5hv3wccr8n3iqarhyb5sjkdvzlj1a"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build-tiny" ,perl-module-build-tiny)
@@ -1291,14 +1283,14 @@ arrays for their internal representation.")
 (define-public perl-clone
   (package
     (name "perl-clone")
-    (version "0.39")
+    (version "0.41")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/"
                                   "Clone-" version ".tar.gz"))
               (sha256
                (base32
-                "0bgsidb96gxzf3zhy6v1ksj1c200vxbwykk32fqm1mj97rl4dc5c"))))
+                "060mlm31lacirpnp5fl9jqk4m9cl07vjlh89k83qk25wykf5dh78"))))
     (build-system perl-build-system)
     (synopsis "Recursively copy Perl datatypes")
     (description
@@ -1348,6 +1340,35 @@ and objects.")
 as defined by two typical specimens of Perl coders.")
     (license (package-license perl))))
 
+(define-public perl-conf-libconfig
+  (package
+    (name "perl-conf-libconfig")
+    (version "0.100")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CN/CNANGEL/"
+                           "Conf-Libconfig-" version ".tar.gz"))
+       (sha256
+        (base32 "0qdypqd7mx96bwdjlv13fn6p96bs4w0yv94yv94xa7z5lqkdj4rg"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)
+       ("perl-test-deep" ,perl-test-deep)
+       ("perl-test-exception" ,perl-test-exception)
+       ("perl-test-warn" ,perl-test-warn)))
+    (inputs
+     `(("libconfig" ,libconfig)))
+    (home-page "https://metacpan.org/release/Conf-Libconfig")
+    (synopsis "Perl extension for libconfig")
+    (description
+     "Conf::Libconfig is a Perl interface to the libconfig configuration file
+library.  It support scalar, array, and hash data structures just like its C/C++
+counterpart.  It reduces the effort required to implement a configuration file
+parser in your Perl programme and allows sharing configuration files between
+languages.")
+    (license bsd-3)))
+
 (define-public perl-config-any
   (package
     (name "perl-config-any")
@@ -1394,15 +1415,14 @@ opportunities to Perl developers as GNU Autoconf does for Shell developers.")
 (define-public perl-config-general
   (package
     (name "perl-config-general")
-    (version "2.56")
+    (version "2.63")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TL/TLINDEN/"
                            "Config-General-" version ".tar.gz"))
        (sha256
-        (base32
-         "0szxxaihz71pr0r2jp9wvbrfc3hrsxi9xrd9vnyrxlrax8sci5h9"))))
+        (base32 "1bbg3wp0xcpj04cmm86j1x0j5968jqi5s2c87qs7dgmap1vzk6qa"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Config-General")
     (synopsis "Generic Config Module")
@@ -1534,15 +1554,14 @@ CPAN::Meta object are present.")
 (define-public perl-cpanel-json-xs
   (package
     (name "perl-cpanel-json-xs")
-    (version "4.08")
+    (version "4.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Cpanel-JSON-XS-" version ".tar.gz"))
        (sha256
-        (base32
-         "0bbw9sk3kgfwkg9lw3vf59g4jjvr69vv09sinndl2nlbd5dlgh9b"))))
+        (base32 "1r92b03hkmqr0brp00cj67b1iklfd4yas481d6a5nx2941c03h3p"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-common-sense" ,perl-common-sense)))
@@ -2015,15 +2034,14 @@ necessary later on.")
 (define-public perl-data-tumbler
   (package
     (name "perl-data-tumbler")
-    (version "0.008")
+    (version "0.010")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "Data-Tumbler-" version ".tar.gz"))
        (sha256
-        (base32
-         "13kww2xj30rkk8w9h50h4blypdb689zgils0zyah587kip0z6509"))))
+        (base32 "15pgvmf7mf9fxsg2l4l88xwvs41218d0bvawhlk15sx06qqp0kwb"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-most" ,perl-test-most)))
@@ -2116,15 +2134,14 @@ Date::Calc.")
 (define-public perl-date-manip
   (package
     (name "perl-date-manip")
-    (version "6.70")
+    (version "6.76")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://cpan.metacpan.org/authors/id/S/SB/SBECK/"
                            "Date-Manip-" version ".tar.gz"))
        (sha256
-        (base32
-         "0r4k4ypb09xwhvq6das0vpx2c0xbhhhx83knq6jfpf8m55h8qi9r"))))
+        (base32 "1a33mpkx7qqb9nqxyh2kkb596d8xq6jw0ljrd4xrwiz30f6cg1qw"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-module-build" ,perl-module-build)))
     (arguments
@@ -2195,15 +2212,14 @@ time before its creation (in 1582).")
 (define-public perl-datetime-calendar-julian
   (package
     (name "perl-datetime-calendar-julian")
-    (version "0.04")
+    (version "0.100")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PI/PIJLL/"
                            "DateTime-Calendar-Julian-" version ".tar.gz"))
        (sha256
-        (base32
-         "03h0llkwsiw2d2ci1ah5x9sp8xrvnbgd471i5hnpgl5w32nnhndv"))))
+        (base32 "0gbw7rh706qk5jlmmz3yzsm0ilzp39kyar28g4j6d57my8cwaipx"))))
     (build-system perl-build-system)
     ;; Only needed for tests
     (native-inputs
@@ -2292,7 +2308,7 @@ or \"every day\".  You can also create more complicated recurrences, such as
 (define-public perl-datetime-format-builder
   (package
     (name "perl-datetime-format-builder")
-    (version "0.81")
+    (version "0.82")
     (source
      (origin
        (method url-fetch)
@@ -2300,7 +2316,7 @@ or \"every day\".  You can also create more complicated recurrences, such as
                            "DateTime-Format-Builder-" version ".tar.gz"))
        (sha256
         (base32
-         "1vrkzw7kmxnyy403ykxgbg2kvgs99nggi4n9gi09ixivnn68mmbw"))))
+         "18qw5rn1qbji3iha8gmpgldbjv9gvn97j9d5cp57fb4r5frawgrq"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-class-factory-util" ,perl-class-factory-util)
@@ -2372,15 +2388,14 @@ order to create the appropriate objects.")
 (define-public perl-datetime-format-natural
   (package
     (name "perl-datetime-format-natural")
-    (version "1.05")
+    (version "1.06")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SC/SCHUBIGER/"
                            "DateTime-Format-Natural-" version ".tar.gz"))
        (sha256
-        (base32
-         "10ldrhz5rnpsd8qmqn1a4s0w5hhfbjrr13a93yx7kpp89g85pxqv"))))
+        (base32 "1n68b5hnw4n55q554v7y4ffwiypz6rk40mh0r550fxwv69bvyky0"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -2466,7 +2481,7 @@ the DateTime.pm class.")
 (define-public perl-datetime-timezone
   (package
     (name "perl-datetime-timezone")
-    (version "2.19")
+    (version "2.23")
     (source
      (origin
        (method url-fetch)
@@ -2474,7 +2489,7 @@ the DateTime.pm class.")
                            "DateTime-TimeZone-" version ".tar.gz"))
        (sha256
         (base32
-         "1y54bsgq886sg35fgmxgj8wwmgs4l83qhwa0g3zv8w9d43z2w6dr"))))
+         "0kz5kz47awf2bhb85xx5rbajkr093ipm2d2vkhqs8lqq0f305r3a"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -2594,7 +2609,7 @@ the appropriate objects.")
 (define-public perl-devel-checkbin
   (package
     (name "perl-devel-checkbin")
-    (version "0.02")
+    (version "0.04")
     (source
      (origin
        (method url-fetch)
@@ -2602,7 +2617,7 @@ the appropriate objects.")
                            "Devel-CheckBin-" version ".tar.gz"))
        (sha256
         (base32
-         "0g71sma9jy0fjm619hcrcsb9spg2y03vjxx36y8k1xpa2553sr7m"))))
+         "1r735yzgvsxkj4m6ks34xva5m21cfzp9qiis2d4ivv99kjskszqm"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-module-build" ,perl-module-build)))
     (home-page "https://metacpan.org/release/Devel-CheckBin")
@@ -2704,15 +2719,14 @@ equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
 (define-public perl-devel-hide
   (package
     (name "perl-devel-hide")
-    (version "0.0009")
+    (version "0.0010")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/Devel-Hide-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1phnzbw58v6551nhv6sg86m72nx9w5j4msh1hg4jvkakkq5w9pki"))))
+        (base32 "10jyv9nmv513hs75rls5yx2xn82513xnnhjir3dxiwgb1ykfyvvm"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-test-pod" ,perl-test-pod)
@@ -3061,14 +3075,14 @@ separator.")
 (define-public perl-error
   (package
     (name "perl-error")
-    (version "0.17025")
+    (version "0.17027")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
                                   "Error-" version ".tar.gz"))
               (sha256
                (base32
-                "1bzgzmf1v4md02vadm46b4j4ilqxrcrfasvbzymhrznlsd54g7vc"))))
+                "1gnkxf12dq2w1jmjpllp5f30ya4nll01jv2sfi24386zfn1arch7"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-module-build" ,perl-module-build)))
     (home-page "https://metacpan.org/release/Error")
@@ -3156,15 +3170,14 @@ import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
 (define-public perl-exporter-tiny
   (package
     (name "perl-exporter-tiny")
-    (version "0.042")
+    (version "1.002001")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/"
                            "Exporter-Tiny-" version ".tar.gz"))
        (sha256
-        (base32
-         "0gq2ia8c6n84gdrlc73vab61djs8gs8zf7fqx8cxbg5zxg2j45lg"))))
+        (base32 "13f4sd9n9iyi15r5rbjbmawajxlgfdvvyrvwlyg0yjyf09636b58"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Exporter-Tiny")
     (synopsis "Exporter with the features of Sub::Exporter but only core dependencies")
@@ -3476,7 +3489,7 @@ platforms.")
 (define-public perl-file-path
   (package
     (name "perl-file-path")
-    (version "2.13")
+    (version "2.16")
     (source
      (origin
        (method url-fetch)
@@ -3485,8 +3498,7 @@ platforms.")
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "039gc0i5cbdmidl8j8x195yykwcdmzwawmpapnysvljl8l33jqwj"))))
+        (base32 "01gsysg9mjkh1ckk7jhj3y8vs291a5ynkgzhqmcz90f3b6dxdxr1"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/File-Path")
     (synopsis "Create or remove directory trees")
@@ -3603,15 +3615,14 @@ that.  It also accepts wildcards, * and ?, as arguments for file names.")
 (define-public perl-file-sharedir
   (package
     (name "perl-file-sharedir")
-    (version "1.104")
+    (version "1.116")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
                            "File-ShareDir-" version ".tar.gz"))
        (sha256
-        (base32
-         "1bqwhk3qfg60bkpi5b83bh93sng8jx20i3ka5sixc0prrppjidh7"))))
+        (base32 "0a43rfb0a1fpxh4d2dayarkdxw4cx9a2krkk87zmcilcz7yhpnar"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-file-sharedir-install" ,perl-file-sharedir-install)))
@@ -3630,15 +3641,14 @@ the installation.")
 (define-public perl-file-sharedir-dist
   (package
     (name "perl-file-sharedir-dist")
-    (version "0.05")
+    (version "0.07")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
                            "File-ShareDir-Dist-" version ".tar.gz"))
        (sha256
-        (base32
-         "1xkmrckp1qfi9ik098n2vz0r8g7wfwp2y05zjd100w6wcqwfzcpn"))))
+        (base32 "0vg8kxzgz4hf6221jb4v5bx1zhsnplnw5bcmxx0iyd92xv8fazwd"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/File-ShareDir-Dist")
     (synopsis "Locate per-dist shared files")
@@ -3671,15 +3681,14 @@ allows you to locate these files after installation.")
 (define-public perl-file-slurp
   (package
     (name "perl-file-slurp")
-    (version "9999.25")
+    (version "9999.26")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/C/CA/CAPOEIRAB/"
                            "File-Slurp-" version ".tar.gz"))
        (sha256
-        (base32
-         "1hg3bhf5m78d77p4174cnldd75ppyrvr5rkc8w289ihvwsx9gsn7"))))
+        (base32 "0c09ivl50sg9j75si6cahfp1wgvhqawakb6h5j6hlca6vwjqs9qy"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/File-Slurp")
     (synopsis "Reading/Writing/Modifying of complete files")
@@ -3734,15 +3743,14 @@ slurping and spewing.  All functions are optionally exported.")
 (define-public perl-file-temp
   (package
     (name "perl-file-temp")
-    (version "0.2304")
+    (version "0.2309")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
                            "File-Temp-" version ".tar.gz"))
        (sha256
-        (base32
-         "1b11scbw77924awwdf5yw8sk8z0s2hskvpyyxws9yz4gwhim6h8k"))))
+        (base32 "0pr3wrxrk93wy7dz9gsb1sgl77icrs8rh2mah6wms5cdi2ll5ch1"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-parent" ,perl-parent)))
@@ -4188,15 +4196,14 @@ try @code{Capture::Tiny} instead.")
 (define-public perl-io-interactive
   (package
     (name "perl-io-interactive")
-    (version "0.0.6")
+    (version "1.022")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
                            "IO-Interactive-" version ".tar.gz"))
        (sha256
-        (base32
-         "1303q6rbcf2cag5z08pq3d1y91wls5q51jrpw4kh0l2bv75idh4w"))))
+        (base32 "1p7b3z877am99qn9b3n2whgcv77256sbg28divlpgs1sx653pm8f"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/IO-Interactive")
     (synopsis "Utilities for interactive I/O")
@@ -4266,15 +4273,14 @@ pseudo ttys.")
 (define-public perl-ipc-cmd
   (package
     (name "perl-ipc-cmd")
-    (version "0.96")
+    (version "1.02")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/B/BI/BINGOS/IPC-Cmd-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0a2v44x70gj9fd5wa8i08f9z6n14qppj1j49m1hc333wh72mzk6i"))))
+        (base32 "0qvh0qpvc22r4kysfy8srxnhni677lvc8hr18kjrdkmb58jjj8ah"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/IPC-Cmd")
     (synopsis "Run interactive command-line programs")
@@ -4286,15 +4292,14 @@ run interactively.  It also has an option to capture output/error buffers.")
 (define-public perl-ipc-run
   (package
     (name "perl-ipc-run")
-    (version "0.94")
+    (version "20180523.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TODDR/"
                            "IPC-Run-" version ".tar.gz"))
        (sha256
-        (base32
-         "0nv0lpw31zaz6vi42q7ihjj3j382j4njicp5k0gsczib3b4kdcrf"))))
+        (base32 "0bvckcs1629ifqfb68xkapd4a74fd5qbg6z9qs8i6rx4z3nxfl1q"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-io-tty" ,perl-io-tty)))
@@ -4384,7 +4389,7 @@ commands.")
 (define-public perl-json
   (package
     (name "perl-json")
-    (version "4.01")
+    (version "4.02")
     (source
      (origin
        (method url-fetch)
@@ -4392,7 +4397,7 @@ commands.")
                            "JSON-" version ".tar.gz"))
        (sha256
         (base32
-         "1vdiw095g5rf51q8d0ipf8020jx371pma0k4sxp0wlfl76lr65b3"))))
+         "0z32x2lijij28c9fhmzgxc41i9nw24fyvd2a8ajs5zw9b9sqhjj4"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-json-xs" ,perl-json-xs))) ;recommended
@@ -4506,15 +4511,14 @@ versa.")
 (define-public perl-log-any
   (package
     (name "perl-log-any")
-    (version "1.040")
+    (version "1.707")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/Log-Any-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0r1q7cclgwl24gzdnjzvd8y0r7j17dngjk492x35w198zhdj2ncp"))))
+        (base32 "1wb55ib4gvk8h5pjb6hliqg7li1xjk420q3w5r33f9p1ps60ylbl"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Log-Any")
     (synopsis "Bringing loggers and listeners together")
@@ -4585,14 +4589,14 @@ widely popular (Java-based) Log4j logging package in pure Perl.")
 (define-public perl-log-report-optional
   (package
     (name "perl-log-report-optional")
-    (version "1.01")
+    (version "1.06")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
                                   "Log-Report-Optional-" version ".tar.gz"))
               (sha256
                (base32
-                "1f4yi4dgzqjc79vrh4f2phdj57xxgk8hd2psx77214i4m5av408f"))))
+                "11ciiaq8vy186m7mzj8pcncwi8p9qp13wblvk427g1pnqjzlda0g"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-string-print" ,perl-string-print)))
@@ -4633,15 +4637,14 @@ one: logging, exceptions, and translations.")
 (define-public perl-libintl-perl
   (package
     (name "perl-libintl-perl")
-    (version "1.29")
+    (version "1.31")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/G/GU/GUIDO/"
                            "libintl-perl-" version ".tar.gz"))
        (sha256
-        (base32
-         "1cgvrgh4axd8jlr6497ndgphgvgnqc1axd306460hskdvc85z4vq"))))
+        (base32 "1afandrl44mq9c32r57xr489gkfswdgc97h8x86k98dz1byv3l6a"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -4791,7 +4794,7 @@ commonly needed functionality on lists which is not going to go into
 (define-public perl-list-someutils
   (package
     (name "perl-list-someutils")
-    (version "0.52")
+    (version "0.56")
     (source
      (origin
        (method url-fetch)
@@ -4800,8 +4803,7 @@ commonly needed functionality on lists which is not going to go into
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "1b450jyxaa6q2yl0cdhknr3c2a5s7b9b18ccnwac625c681r130y"))))
+        (base32 "1xw9dzg949997b10y6zgzrmhmk2ap274qivnk0wc1033x2fdk9za"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-leaktrace" ,perl-test-leaktrace)))
@@ -5041,7 +5043,7 @@ file names are added for you.")
 (define-public perl-modern-perl
   (package
     (name "perl-modern-perl")
-    (version "1.20170117")
+    (version "1.20181021")
     (source
      (origin
        (method url-fetch)
@@ -5049,8 +5051,7 @@ file names are added for you.")
              "mirror://cpan/authors/id/C/CH/CHROMATIC/Modern-Perl-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "0a1n9c04zhs1a1km1zi0d1hj78d10qv3bhxr4bdi4chnc4saiwjx"))))
+        (base32 "1if9jbh66z2vm4wwnky41ljnhdlwrh7vzl6pd3w60v3wix92nj0x"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -5430,14 +5431,14 @@ Moose and is optimised for rapid startup.")
 (define-public perl-moose
   (package
     (name "perl-moose")
-    (version "2.2004")
+    (version "2.2011")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                                   "Moose-" version ".tar.gz"))
               (sha256
                (base32
-                "1c6jx2lnrh2mi9wlj2c0sirj6345xmbpr34ax8d85mcginzq3j74"))))
+                "10ndq6jwj2iwhwqjs23g6nb1yrf3brgw41jjphxzk6zkv4shlgcp"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@@ -5511,7 +5512,7 @@ sentences.")
 (define-public perl-moosex-emulate-class-accessor-fast
   (package
     (name "perl-moosex-emulate-class-accessor-fast")
-    (version "0.00903")
+    (version "0.009032")
     (source
      (origin
        (method url-fetch)
@@ -5519,8 +5520,7 @@ sentences.")
                            "MooseX-Emulate-Class-Accessor-Fast-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1lkn1h4sxr1483jicsgsgzclbfw63g2i2c3m4v4j9ar75yrb0kh8"))))
+        (base32 "153r30nggcyyx7ai15dbnba2h5145f8jdsh6wj54298d3zpvgvl2"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -5538,15 +5538,14 @@ private methods are not.")
 (define-public perl-moosex-getopt
   (package
     (name "perl-moosex-getopt")
-    (version "0.73")
+    (version "0.74")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "MooseX-Getopt-" version ".tar.gz"))
        (sha256
-        (base32
-         "19zm8brf930p0ymqn3w1y0ix29kb74m8nvhrhjvrg8cgz6vc5fyz"))))
+        (base32 "091crga5gjyhj2lz55w3ba37xq6pmjg5dx5xccsrzghy8cxxzq0x"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -5655,15 +5654,14 @@ BUILD methods are called.  It tries to be as non-intrusive as possible.")
 (define-public perl-moosex-params-validate
   (package
     (name "perl-moosex-params-validate")
-    (version "0.19")
+    (version "0.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
                            "MooseX-Params-Validate-" version ".tar.gz"))
        (sha256
-        (base32
-         "16isvyfsnzp63qr9cwsn094hasb6m7rzldmzav6spk7rih4mxdwk"))))
+        (base32 "1n9ry6gnskkp9ir6s7d5jirn3mh14ydgpmwqz6wcp6d9md358ac8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-moose" ,perl-moose)
@@ -5704,15 +5702,14 @@ manually setting up a subclass.")
 (define-public perl-moosex-role-parameterized
   (package
     (name "perl-moosex-role-parameterized")
-    (version "1.08")
+    (version "1.10")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "MooseX-Role-Parameterized-" version ".tar.gz"))
        (sha256
-        (base32
-         "12s2nmq13ri126yv02bx9h30j760zpal27i470z85ayw9s7il4jq"))))
+        (base32 "0plx25n80mv9qwhix52z79md0qil616nbcryk2f4216kghpw2ij8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
@@ -5736,7 +5733,7 @@ Parameterized roles offer a solution to these (and other) kinds of problems.")
 (define-public perl-moosex-role-withoverloading
   (package
     (name "perl-moosex-role-withoverloading")
-    (version "0.16")
+    (version "0.17")
     (source
      (origin
        (method url-fetch)
@@ -5744,7 +5741,7 @@ Parameterized roles offer a solution to these (and other) kinds of problems.")
                            "MooseX-Role-WithOverloading-" version ".tar.gz"))
        (sha256
         (base32
-         "0kfs203ip44vsxh282kshia8wqkwklz4i7fs2ngsbj6frv00nqdv"))))
+         "0rb8k0dp1a55bm2pr6r0vsi5msvjl1dslfidxp1gj80j7zbrbc4j"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-aliased" ,perl-aliased)
@@ -5897,7 +5894,7 @@ with coercions, designed to work with the DateTime suite of objects.")
 (define-public perl-moosex-types-datetime-morecoercions
   (package
     (name "perl-moosex-types-datetime-morecoercions")
-    (version "0.14")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
@@ -5905,8 +5902,7 @@ with coercions, designed to work with the DateTime suite of objects.")
                            "MooseX-Types-DateTime-MoreCoercions-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0888ns6fmvpcj5vh86n8mra9anq8jak7gf0b1z5hvww4birki6dn"))))
+        (base32 "15ip1rgaana2p4vww355jb5jxyawim0k58gadkdqx20rfxckmfr1"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build-tiny" ,perl-module-build-tiny)
@@ -5931,15 +5927,14 @@ all coercions and constraints are inherited.")
 (define-public perl-moosex-types-loadableclass
   (package
     (name "perl-moosex-types-loadableclass")
-    (version "0.013")
+    (version "0.015")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
                            "MooseX-Types-LoadableClass-" version ".tar.gz"))
        (sha256
-        (base32
-         "13v2hn3xr6adx15qik8b6966fbbw77ik1v4sxx24f766la10w2mq"))))
+        (base32 "1x1vb96hcrd96bzs73w0lb04jr0fvax1ams38qlzkp2kh9vx6dz0"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build-tiny" ,perl-module-build-tiny)
@@ -5986,15 +5981,14 @@ constraint with coercion to load the class.")
 (define-public perl-moox-cmd
   (package
     (name "perl-moox-cmd")
-    (version "0.015")
+    (version "0.017")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Cmd-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0145ha8vnc6sbg82ps96wj716bznq2qamm657bia9ji2yxhbnsam"))))
+        (base32 "1xbhmq07v9z371ygkyghva9aryhc22kwbzn5qwkp72c0ma6z4gwl"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)
@@ -6203,15 +6197,14 @@ generate a command line tool.")
 (define-public perl-moox-types-mooselike
   (package
     (name "perl-moox-types-mooselike")
-    (version "0.28")
+    (version "0.29")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MA/MATEU/"
                            "MooX-Types-MooseLike-" version ".tar.gz"))
        (sha256
-        (base32
-         "15af2xmpari4vwjwxn1m9yzjfffkr2aiisqqfij31gxcdk15fpk3"))))
+        (base32 "1d6jg9x3p7gm2r0xmbcag374a44gf5pcga2swvxhlhzakfm80dqx"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-moo" ,perl-moo)
@@ -6229,7 +6222,7 @@ fields in Moo-based classes.")
 (define-public perl-mouse
   (package
   (name "perl-mouse")
-  (version "2.4.9")
+  (version "2.5.6")
   (source (origin
             (method url-fetch)
             (uri (string-append
@@ -6238,7 +6231,7 @@ fields in Moo-based classes.")
                   ".tar.gz"))
             (sha256
              (base32
-              "1y20sl97x1h4y1iid47hj0w1hb2887dchh4nfffgmqpyggkslh4n"))))
+              "1j3048ip691j91rdig6wrlg6i4jdzhszxmz5pi2g7n355rl2w00l"))))
   (build-system perl-build-system)
   (native-inputs
    `(("perl-module-build" ,perl-module-build)
@@ -6408,7 +6401,7 @@ name, but they won't show up as methods on your class or instances.")
 (define-public perl-net-dns-native
   (package
     (name "perl-net-dns-native")
-    (version "0.15")
+    (version "0.20")
     (source
      (origin
        (method url-fetch)
@@ -6416,7 +6409,7 @@ name, but they won't show up as methods on your class or instances.")
              "mirror://cpan/authors/id/O/OL/OLEG/Net-DNS-Native-"
              version ".tar.gz"))
        (sha256
-        (base32 "12bsv5jkic3q4arpzk6dda35didkn445v658j87rmi540dpnac85"))))
+        (base32 "0whm9l30frgzcfmlzqrsx3q5rdi8y6dhz33r4msgxrch8h97i8cb"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Net-DNS-Native")
     (synopsis "Non-blocking system DNS resolver")
@@ -6543,15 +6536,14 @@ number exists in a given range, and to be able to manipulate the range.")
 (define-public perl-object-signature
   (package
     (name "perl-object-signature")
-    (version "1.07")
+    (version "1.08")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
                            "Object-Signature-" version ".tar.gz"))
        (sha256
-        (base32
-         "0c8l7195bjvx0v6zmkgdnxvwg7yj2zq8hi7xd25a3iikd12dc4f6"))))
+        (base32 "12k90c19ly93ib1p6sm3k7sbnr2h5dbywkdmnff2ngm99p4m68c4"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)))
@@ -6639,15 +6631,14 @@ one or more modules.")
 (define-public perl-package-stash
   (package
     (name "perl-package-stash")
-    (version "0.37")
+    (version "0.38")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
                            "Package-Stash-" version ".tar.gz"))
        (sha256
-        (base32
-         "0b3vg2nbzmz1m5qla4123rmfzmpfmwxkw78fghvwsc4iiww0baq6"))))
+        (base32 "0zrs4byhlpq5ybnl0fd3y6pfzair6i2dyvzn7f7a7pgj9n2fi3n5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-dist-checkconflicts" ,perl-dist-checkconflicts)
@@ -6668,15 +6659,14 @@ of that behind a simple API.")
 (define-public perl-package-stash-xs
   (package
     (name "perl-package-stash-xs")
-    (version "0.28")
+    (version "0.29")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DO/DOY/"
                            "Package-Stash-XS-" version ".tar.gz"))
        (sha256
-        (base32
-         "11nl69n8i56p91pd0ia44ip0vpv2cxwpbfakrv01vvv8az1cbn13"))))
+        (base32 "1akqk10qxwk798qppajqbczwmhy4cs9g0lg961m3vq218slnnryk"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -6693,15 +6683,14 @@ compiler.")
 (define-public perl-padwalker
   (package
     (name "perl-padwalker")
-    (version "2.0")
+    (version "2.3")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RO/ROBIN/"
                            "PadWalker-" version ".tar.gz"))
        (sha256
-        (base32
-         "058l78rkr6px3rqcv2sdf9sqimdq1nc6py5yb9rrg3wmva7crw84"))))
+        (base32 "1kw8cnfyh6jbngm9q1kn003g08gis6l82h77d12yaq88c3xl8v1a"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/PadWalker")
     (synopsis "Play with other peoples' lexical variables")
@@ -6784,15 +6773,14 @@ function call parameters to an arbitrary level of specificity.")
 (define-public perl-params-validationcompiler
   (package
     (name "perl-params-validationcompiler")
-    (version "0.27")
+    (version "0.30")
     (source
       (origin
         (method url-fetch)
         (uri (string-append "mirror://cpan/authors/id/D/DR/DROLSKY/"
                             "Params-ValidationCompiler-" version ".tar.gz"))
         (sha256
-         (base32
-          "1cpr188c2xm0kkmdir6slcsgv7v6ibqff4lax8s0whwx6ml9kaah"))))
+         (base32 "1jqn1l4m4i341g14kmjsf3a1kn7vv6z89cix0xjjgr1v70iywnyw"))))
     (build-system perl-build-system)
     (native-inputs
      ;; For tests.
@@ -6835,15 +6823,14 @@ distributions.")
 (define-public perl-parent
   (package
     (name "perl-parent")
-    (version "0.228")
+    (version "0.237")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/C/CO/CORION/"
                            "parent-" version ".tar.gz"))
        (sha256
-        (base32
-         "0w0i02y4z8465z050kml57mvhv7c5gl8w8ivplhr3cms0zbaq87b"))))
+        (base32 "1bnaadzf51g6zrpq6pvvgds2cc9d4w1vck7sapkd3hb5hmjdk28h"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/parent")
     (synopsis "Establish an ISA relationship with base classes at compile time")
@@ -6874,7 +6861,7 @@ directory specifications in a cross-platform manner.")
 (define-public perl-pathtools
   (package
     (name "perl-pathtools")
-    (version "3.74")
+    (version "3.75")
     (source
      (origin
        (method url-fetch)
@@ -6882,7 +6869,7 @@ directory specifications in a cross-platform manner.")
              "mirror://cpan/authors/id/X/XS/XSAWYERX/PathTools-"
              version ".tar.gz"))
        (sha256
-        (base32 "04bfjdvn5p78hirljcinpxv8djcjn8nyg5gcmnmvz8sr9k2lqwi5"))))
+        (base32 "18j5z71xin9dsqddl6khm838d23p3843jcq7q0kwgy5ilqx50n55"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -6905,14 +6892,14 @@ file names.")
 (define-public perl-path-tiny
   (package
     (name "perl-path-tiny")
-    (version "0.104")
+    (version "0.108")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
                                   "Path-Tiny-" version ".tar.gz"))
               (sha256
                (base32
-                "1vxaczi44d2acfyyzwa7p6c5gx3rgm6c36zbdl40982axg7iv7y6"))))
+                "1x9zf8r3cynf4vqlycyyspsr70v4zw6bk9bkgvfpvsxkw8mlhj9w"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f)) ; Tests require additional test modules to be packaged
@@ -6930,7 +6917,7 @@ with file paths.")
 (define-public perl-perlio-utf8_strict
   (package
     (name "perl-perlio-utf8-strict")
-    (version "0.006")
+    (version "0.007")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -6938,7 +6925,7 @@ with file paths.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0qnmiflirfq10jkmrxyy81ch6hzyndfzxqf8maif0fy44kk1004q"))))
+                "1jw1ri8nkm4ck73arbsld1y2qgj2b9ir01y8mzb3mjs6w0pkz8w3"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)))
@@ -6953,7 +6940,7 @@ for correctness.")
 (define-public perl-pegex
   (package
    (name "perl-pegex")
-   (version "0.67")
+   (version "0.70")
    (source
     (origin
      (method url-fetch)
@@ -6962,7 +6949,7 @@ for correctness.")
            version ".tar.gz"))
      (sha256
       (base32
-       "149015ra2figalxrnj72fz02qc5cm96xg6x8d6kmyanfmrrxzf9w"))))
+       "1zd0zm6vxapw6bds3ipymkbzam70p3j3rm48794qy11620r22dgx"))))
    (build-system perl-build-system)
    (native-inputs
     `(("perl-file-sharedir-install" ,perl-file-sharedir-install)
@@ -7294,15 +7281,14 @@ optimized for sets that have long runs of consecutive integers.")
 (define-public perl-set-object
   (package
     (name "perl-set-object")
-    (version "1.35")
+    (version "1.39")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
                            "Set-Object-" version ".tar.gz"))
        (sha256
-        (base32
-         "1rqf11274s3h17jgbimmg47k4fmayifajqwaa6lgm0z5qdy4v6hq"))))
+        (base32 "040q819l9x55j0hjhfvc153451syvjffw3d22gs398sd23mwzzsy"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-moose" ,perl-moose)
@@ -7494,28 +7480,26 @@ run from within a source-controlled directory.")
 (define-public perl-strictures-2
   (package
     (inherit perl-strictures)
-    (version "2.000004")
+    (version "2.000006")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
                            "strictures-" version ".tar.gz"))
        (sha256
-        (base32
-         "0lzp0q6kwk6vgf7zdlvy9zz28fj6n1b776irm556c7gylcq29113"))))))
+        (base32 "0mwd9xqz4n8qfpi5h5581lbm33qhf7agww18h063icnilrs7km89"))))))
 
 (define-public perl-string-camelcase
   (package
     (name "perl-string-camelcase")
-    (version "0.02")
+    (version "0.04")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HI/HIO/"
                            "String-CamelCase-" version ".tar.gz"))
        (sha256
-        (base32
-         "17kh8nap2z5g5rqcvw0m7mvbai7wr7h0al39w8l827zhqad8ss42"))))
+        (base32 "1a8i4yzv586svd0pbxls7642vvmyiwzh4x2xyij8gbnfxsydxhw9"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -7733,7 +7717,7 @@ return value is the sub.")
 (define-public perl-sub-quote
   (package
     (name "perl-sub-quote")
-    (version "2.005001")
+    (version "2.006003")
     (source
      (origin
        (method url-fetch)
@@ -7741,8 +7725,7 @@ return value is the sub.")
              "mirror://cpan/authors/id/H/HA/HAARG/Sub-Quote-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "01xsvfdpxzimsbrp9mqipsr93y83nhj21q05g8v1bw6yfl3lzayn"))))
+        (base32 "0xl1w55qilqc3xdqvmjzs5vjnjdc0d4633yw7hh1yd9zfxpkl7xy"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)))
@@ -7803,15 +7786,14 @@ support for run-time mix-ins and roles.")
 (define-public perl-svg
   (package
     (name "perl-svg")
-    (version "2.63")
+    (version "2.84")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SZ/SZABGAB/SVG-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "12cbncsfxbwg1w3p1qmymfbqdb22kmyajxzdnxnxbq5xjl6yncha"))))
+        (base32 "1br8dwh2363s6r0qgy7vv30gv5kj456vj5m6x83savx4wzfnsggc"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/SVG")
     (synopsis "Perl extension for generating SVG documents")
@@ -7946,7 +7928,7 @@ error encouraging the user to seek support.")
 (define-public perl-template-toolkit
   (package
     (name "perl-template-toolkit")
-    (version "2.26")
+    (version "2.28")
     (source
      (origin
        (method url-fetch)
@@ -7954,7 +7936,7 @@ error encouraging the user to seek support.")
                            "Template-Toolkit-" version ".tar.gz"))
        (sha256
         (base32
-         "1gknrm8hdci5ryg67p4y23lsy7lynczqmq9kh9nzj7kg08vczqg7"))))
+         "1msxg3j1hx5wsc7vr81x5gs9gdbn4y0x6cvyj3pq4dgi1603dbvi"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-appconfig" ,perl-appconfig)
@@ -8132,15 +8114,14 @@ the job on behalf of @code{Term::Size::Any}.")
 (define-public perl-term-size-perl
   (package
     (name "perl-term-size-perl")
-    (version "0.029")
+    (version "0.031")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/"
                            "Term-Size-Perl-" version ".tar.gz"))
        (sha256
-        (base32
-         "1rvm91bhdlxfwx5zka023p7szf2s7gm16wl27qiivvj66svsl6lc"))))
+        (base32 "17i05y186l977bhp32b24c8rqasmg1la934dizf5sc0vrd36g6mf"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Term-Size-Perl")
     (synopsis "Perl extension for retrieving terminal size (Perl version)")
@@ -8172,15 +8153,14 @@ into tables.")
 (define-public perl-text-aligner
   (package
     (name "perl-text-aligner")
-    (version "0.12")
+    (version "0.13")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SH/SHLOMIF/"
                            "Text-Aligner-" version ".tar.gz"))
        (sha256
-        (base32
-         "0a6zkchc0apvzkch6z18cx6h97xfiv50r7n4xhg90x8dvk75qzcs"))))
+        (base32 "1vry21jrh91l2pkajnrps83bnr1fn6zshbzi80mcrnggrn9iq776"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-module-build" ,perl-module-build)))
     (home-page "https://metacpan.org/release/Text-Aligner")
@@ -8211,15 +8191,14 @@ text sequences from strings.")
 (define-public perl-text-csv
   (package
     (name "perl-text-csv")
-    (version "1.33")
+    (version "1.99")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MA/MAKAMAKA/"
                            "Text-CSV-" version ".tar.gz"))
        (sha256
-        (base32
-         "05a1nayxv04n0hx7y3m8327ijm34k9nhngrbxl18zmgzpawqynww"))))
+        (base32 "1llccsl6sr11g9affh43m6q5r85qgnpi9n7idcs1vi9cn4ww0kp7"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Text-CSV")
     (synopsis "Manipulate comma-separated values")
@@ -8231,15 +8210,14 @@ can combine fields into a CSV string and parse a CSV string into fields.")
 (define-public perl-text-csv-xs
   (package
     (name "perl-text-csv-xs")
-    (version "1.25")
+    (version "1.39")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/H/HM/HMBRAND/"
                            "Text-CSV_XS-" version ".tgz"))
        (sha256
-        (base32
-         "06zlfbqrwbl0g2g3bhk6046yy5pf2rz80fzcp8aj47rnswz2yx5k"))))
+        (base32 "1gcy1bxym6f7qsxivkl3c5p94r1bjhf9csy1x38a1gk8mx744kma"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Text-CSV_XS")
     (synopsis "Rountines for manipulating CSV files")
@@ -8369,15 +8347,14 @@ algorism to indicate multiplication by 1000.")
 (define-public perl-text-simpletable
   (package
     (name "perl-text-simpletable")
-    (version "2.04")
+    (version "2.07")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MR/MRAMBERG/"
                            "Text-SimpleTable-" version ".tar.gz"))
        (sha256
-        (base32
-         "14sjmdcy7s73sk740g3ccmzmwhwd52x5ay3bjmibjlql1cag70ld"))))
+        (base32 "1v8r8qpzg283p2pqqr8dqrak2bxray1b2jmib0qk75jffqw3yv95"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Text-SimpleTable")
     (synopsis "Simple ASCII tables")
@@ -8409,7 +8386,7 @@ algorism to indicate multiplication by 1000.")
 (define-public perl-text-template
   (package
     (name "perl-text-template")
-    (version "1.54")
+    (version "1.55")
     (source
      (origin
        (method url-fetch)
@@ -8419,7 +8396,7 @@ algorism to indicate multiplication by 1000.")
              ".tar.gz"))
        (sha256
         (base32
-         "0s56jgak9ccbbbybf5v8hvvhyplbfhzl6p6v1751inly80rlj1kv"))))
+         "12zi08mwmlbfbnsialmppk75s6dkg765dvmay3wif3158plqp554"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-more-utf8" ,perl-test-more-utf8)
@@ -8438,15 +8415,14 @@ evaluate the little programs and replace them with their values.")
 (define-public perl-text-unidecode
   (package
     (name "perl-text-unidecode")
-    (version "1.23")
+    (version "1.30")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SB/SBURKE/"
                            "Text-Unidecode-" version ".tar.gz"))
        (sha256
-        (base32
-         "1mnnq57amh0bs6z2ggkmgnn4hz8mqc9lfhr66xv2bsnlvhg7c7fb"))))
+        (base32 "1imii0p6wvhrxsr5z2zhazpx5vl4l4ybf1y2c5hy480xvi6z293c"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Text-Unidecode")
     (synopsis "Provide plain ASCII transliterations of Unicode text")
@@ -8587,7 +8563,7 @@ $object->TIEHASH are avoided.")
 (define-public perl-time-duration
   (package
     (name "perl-time-duration")
-    (version "1.1")
+    (version "1.20")
     (source
      (origin
        (method url-fetch)
@@ -8595,7 +8571,7 @@ $object->TIEHASH are avoided.")
                            "Time-Duration-" version ".tar.gz"))
        (sha256
         (base32
-         "0klg33yzb7pr9ra76s6gj5k7nravqnw2lbh022x1xwlj92f43756"))))
+         "1f5vkid4pl5iq3hal01hk1zjbbzrqpx4m1djawbp93l152shb0j5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -8610,15 +8586,14 @@ rounded or exact terms.")
 (define-public perl-time-duration-parse
   (package
     (name "perl-time-duration-parse")
-    (version "0.13")
+    (version "0.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
                            "Time-Duration-Parse-" version ".tar.gz"))
        (sha256
-        (base32
-         "0affdzhsiy7dr6dzj2p6m9lynmjh53k31bprfsfa21pz8551hjj1"))))
+        (base32 "17nh73r50mqqpgxdf3zpgdiqrizmjy0vdk0zd6xi9zcsdijrdhnc"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-time-duration" ,perl-time-duration)))
@@ -8633,7 +8608,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
 (define-public perl-time-hires
   (package
     (name "perl-time-hires")
-    (version "1.9758")
+    (version "1.9760")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -8641,7 +8616,7 @@ duration strings like \"2 minutes\" and \"3 seconds\" to seconds.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "07jbydcdzpjm6i4nidci0rlklx4kla210fsl6zishw0yq5di9yjv"))))
+                "0avh25m5ffsqc2xnfczvlnlbfbisw5wjq9d3w0j01h9byjzrif1c"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Time-HiRes")
     (synopsis "High resolution alarm, sleep, gettimeofday, interval timers")
@@ -8738,15 +8713,14 @@ and time() calls.")
 (define-public perl-tree-simple
   (package
     (name "perl-tree-simple")
-    (version "1.25")
+    (version "1.33")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RS/RSAVAGE/"
                            "Tree-Simple-" version ".tgz"))
        (sha256
-        (base32
-         "1xj1n70v4qbx7m9k01bj9aixk77yssliavgvfds3xj755hcan0nr"))))
+        (base32 "1alnwb6c7n4al91m9cyknvcyvdz521lh22dz1hyk4v7c50adffnv"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -8762,15 +8736,14 @@ simple n-ary tree.")
 (define-public perl-tree-simple-visitorfactory
   (package
     (name "perl-tree-simple-visitorfactory")
-    (version "0.12")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RS/RSAVAGE/"
                            "Tree-Simple-VisitorFactory-" version ".tgz"))
        (sha256
-        (base32
-         "1g27xl48q1vr7aikhxg4vvcsj1si8allxz59vmnks61wsw4by7vg"))))
+        (base32 "06y2vazkl307k59hnkp9h5bp3p7711kgmp1qdhb2lgnfwzn84zin"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)
@@ -8807,15 +8780,14 @@ else.")
 (define-public perl-type-tie
   (package
     (name "perl-type-tie")
-    (version "0.009")
+    (version "0.014")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/"
                            "Type-Tie-" version ".tar.gz"))
        (sha256
-        (base32
-         "1wv32kd7gx4kfyvzs13y029f49qbbji991wawvarac7rlz09wpan"))))
+        (base32 "1ri23xb3rdb59lk984hnjqi4pb97zqnv4ppn0zpd70pfp0a9addm"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -8835,15 +8807,14 @@ variable conform.")
 (define-public perl-type-tiny
   (package
     (name "perl-type-tiny")
-    (version "1.002002")
+    (version "1.004004")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/"
                            "Type-Tiny-" version ".tar.gz"))
        (sha256
-        (base32
-         "0b48v28rvl20969gyr62yg6gr6a2nj9qik0bixavbjdmk67hqnx8"))))
+        (base32 "1gk2f0zs2xq99nqn6wcgvl8l9qlq2cnab2lk7l08kpac03m824h8"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-warnings" ,perl-test-warnings)))
@@ -8869,15 +8840,14 @@ be used with Moose, Mouse and Moo (or none of the above).")
 (define-public perl-type-tiny-xs
   (package
     (name "perl-type-tiny-xs")
-    (version "0.012")
+    (version "0.014")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/Type-Tiny-XS-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "05nbr898cvjjh1wsy55l84zasx65gijdxc6dnn558ihns8zx6gm9"))))
+        (base32 "1bbvghd2wmm9z1jx9qs9yz4l3r4izs8sz87z87sis7n3ydjdx2w2"))))
     (build-system perl-build-system)
     (home-page "https://metacpan.org/release/Type-Tiny-XS")
     (synopsis "Provides an XS boost for some of Type::Tiny's built-in type constraints")
@@ -8890,15 +8860,14 @@ so other data validation frameworks might also consider using it.")
 (define-public perl-types-path-tiny
   (package
     (name "perl-types-path-tiny")
-    (version "0.005")
+    (version "0.006")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
                            "Types-Path-Tiny-" version ".tar.gz"))
        (sha256
-        (base32
-         "09nf167ssi4rgj8hhzylwp3zdx61njdpyfri43arcmk9aqn7f0pp"))))
+        (base32 "1072vwcbx2bldfg8xpxc9iqs3rzqd18yik60b432hsdwxpxcjgsr"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-file-pushd" ,perl-file-pushd)
@@ -8937,7 +8906,7 @@ common serialisation formats such as JSON or CBOR.")
 (define-public perl-unicode-normalize
   (package
     (name "perl-unicode-normalize")
-    (version "1.25")
+    (version "1.26")
     (source
      (origin
        (method url-fetch)
@@ -8945,7 +8914,7 @@ common serialisation formats such as JSON or CBOR.")
                            "Unicode-Normalize-" version ".tar.gz"))
        (sha256
         (base32
-         "0v04bcyjfcfap4kfpc8q3ikq3j7s68nym4ckw3iasmmksdskmcq0"))))
+         "0gvpmrfrvb3sxqq4pnqfmbpf9q0q2an6a2ba4ara95cvx1s6zpms"))))
     (build-system perl-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -8964,15 +8933,14 @@ common serialisation formats such as JSON or CBOR.")
 (define-public perl-unicode-collate
   (package
     (name "perl-unicode-collate")
-    (version "1.18")
+    (version "1.27")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/S/SA/SADAHIRO/"
                            "Unicode-Collate-" version ".tar.gz"))
        (sha256
-        (base32
-         "1lq4p3mqqljhhy8wyiyahris33j4m5qfzpi6iacmcqjzw5g4afbm"))))
+        (base32 "12df4n46yri6via4x9jb918v1hk6yrlzqk9srq6fnz5kviylnxbf"))))
     (build-system perl-build-system)
     (arguments
      `(#:phases
@@ -8997,14 +8965,14 @@ Unicode data.")
 (define-public perl-unicode-linebreak
   (package
     (name "perl-unicode-linebreak")
-    (version "2016.003")
+    (version "2019.001")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/N/NE/NEZUMI/"
                                   "Unicode-LineBreak-" version ".tar.gz"))
               (sha256
                (base32
-                "096wf5x99swx7l7yd8pm2aw50g596nf50rkq7250zjcc1acjskp6"))))
+                "12iinva5gqc9g7qzxrvmh45n714z0ad9g7wq2dxwgp6drbj64rs8"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-mime-charset" ,perl-mime-charset)))
@@ -9065,7 +9033,7 @@ UNIVERSAL::can() as a function, which it is not.")
 (define-public perl-universal-isa
   (package
     (name "perl-universal-isa")
-    (version "1.20140927")
+    (version "1.20171012")
     (source
      (origin
        (method url-fetch)
@@ -9073,7 +9041,7 @@ UNIVERSAL::can() as a function, which it is not.")
                            "UNIVERSAL-isa-" version ".tar.gz"))
        (sha256
         (base32
-         "0ryqk58nkzhdq26si7mh49h8wand1wlmyf4m78qgiyn8ib6989bb"))))
+         "0avzv9j32aab6l0rd63n92v0pgliz1p4yabxxjfq275hdh1mcsfi"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build-tiny" ,perl-module-build-tiny)))
@@ -9181,7 +9149,7 @@ neither visible nor modifiable from Perl space).")
 (define-public perl-yaml
   (package
     (name "perl-yaml")
-    (version "1.24")
+    (version "1.27")
     (source
      (origin
        (method url-fetch)
@@ -9189,7 +9157,7 @@ neither visible nor modifiable from Perl space).")
                            "YAML-" version ".tar.gz"))
        (sha256
         (base32
-         "1dpzgnjbd8yvf94vf45cmyj5bc6vrm6bchhx9xqwxqd5f9d093dm"))))
+         "1yc2yqjyrcdlhp209f3a63f9xx6v5klisli25fv221yy43la34n9"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-yaml" ,perl-test-yaml)))
@@ -9202,7 +9170,7 @@ on the YAML 1.0 specification.")
 (define-public perl-yaml-libyaml
   (package
     (name "perl-yaml-libyaml")
-    (version "0.69")
+    (version "0.76")
     (source
      (origin
        (method url-fetch)
@@ -9211,8 +9179,7 @@ on the YAML 1.0 specification.")
              version
              ".tar.gz"))
        (sha256
-        (base32
-         "06msvj3vmjszl5zj1k7g47ll0kkds9gdb5sky0q27lh4zw1vlj33"))))
+        (base32 "1m94g36sl9rasjlvlsf65xcal5hvkc3gbzd7l68h17az75269kyy"))))
     (build-system perl-build-system)
     (home-page
      "https://metacpan.org/release/YAML-LibYAML")
@@ -9494,7 +9461,7 @@ File::Find replacement in Perl.")
 (define-public perl-file-find-object-rule
  (package
   (name "perl-file-find-object-rule")
-  (version "0.0305")
+  (version "0.0309")
   (source
     (origin
       (method url-fetch)
@@ -9503,8 +9470,7 @@ File::Find replacement in Perl.")
              version
              ".tar.gz"))
       (sha256
-        (base32
-          "0hs4n3w99q4ylkhg3qhzcwkxqn7zblfj1zjdgl06ca30afkk4cv6"))))
+        (base32 "1qr1rrp9gn0bpsixsrkan710sxc7bnhirh0anjsw2ihn4wdy3151"))))
   (build-system perl-build-system)
   (native-inputs
     `(("perl-module-build" ,perl-module-build)))
@@ -9650,7 +9616,7 @@ till 5pm\" and \"on the second Tuesday of the month\" and \"between 4pm and
 (define-public perl-path-iterator-rule
   (package
     (name "perl-path-iterator-rule")
-    (version "1.012")
+    (version "1.014")
     (source
      (origin
        (method url-fetch)
@@ -9658,8 +9624,7 @@ till 5pm\" and \"on the second Tuesday of the month\" and \"between 4pm and
              "mirror://cpan/authors/id/D/DA/DAGOLDEN/Path-Iterator-Rule-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "1z76avwvwgv4bw28kzx79mmb4449s5l345sn0wljq3dbf4wqigd1"))))
+        (base32 "19mik0r5v1cmxfxm0h4lwqyj0nmq6jgnvvq96hqcjgylpvc02x1z"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-file-pushd" ,perl-file-pushd)
@@ -9726,7 +9691,7 @@ lookup in %INC or by assuming it is $0 if the caller is @code{main}
 (define-public perl-regexp-pattern
   (package
     (name "perl-regexp-pattern")
-    (version "0.1.4")
+    (version "0.2.8")
     (source
      (origin
        (method url-fetch)
@@ -9734,8 +9699,7 @@ lookup in %INC or by assuming it is $0 if the caller is @code{main}
              "mirror://cpan/authors/id/P/PE/PERLANCAR/Regexp-Pattern-"
              version ".tar.gz"))
        (sha256
-        (base32
-         "0rwpl6dxd1yl2ng3d4jdy68jz3mggmdl35rphrw1x619sm1aa876"))))
+        (base32 "064igp2wxgsz4yb33v1r90i8clwjzs2xnpvw9niqlqrbzzrd4q1l"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)))
diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
new file mode 100644
index 0000000000..f227786e8d
--- /dev/null
+++ b/gnu/packages/perl6.scm
@@ -0,0 +1,787 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 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 perl6)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system perl)
+  #:use-module (guix build-system rakudo)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls))
+
+(define-public moarvm
+  (package
+    (name "moarvm")
+    (version "2019.03")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://moarvm.org/releases/MoarVM-"
+                            version ".tar.gz"))
+        (sha256
+         (base32
+          "017w1zvr6yl0cgjfc1b3ddlc6vjw9q8p7alw1vvsckw95190xc14"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            ;(delete-file-recursively "3rdparty/dynasm") ; JIT
+            (delete-file-recursively "3rdparty/dyncall")
+            (delete-file-recursively "3rdparty/freebsd")
+            (delete-file-recursively "3rdparty/libatomicops")
+            (delete-file-recursively "3rdparty/libuv")
+            (delete-file-recursively "3rdparty/libtommath")
+            (delete-file-recursively "3rdparty/msinttypes")
+            #t))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out        (assoc-ref outputs "out"))
+                   (pkg-config (assoc-ref inputs "pkg-config")))
+               (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
+               (invoke "perl" "Configure.pl"
+                       "--prefix" out
+                       "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
+                       "--has-libtommath"
+                       "--has-libatomic_ops"
+                       "--has-libffi"
+                       "--has-libuv")))))))
+    (home-page "https://moarvm.org/")
+    ;; These should be inputs but moar.h can't find them when building rakudo
+    (propagated-inputs
+     `(("libatomic-ops" ,libatomic-ops)
+       ("libtommath" ,libtommath-1.0)
+       ("libuv" ,libuv)))
+    (inputs
+     `(("libffi" ,libffi)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "VM for NQP And Rakudo Perl 6")
+    (description
+     "Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
+built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain.  Highlights
+include:
+
+@itemize
+@item Great Unicode support, with strings represented at grapheme level
+@item Dynamic analysis of running code to identify hot functions and loops, and
+perform a range of optimizations, including type specialization and inlining
+@item Support for threads, a range of concurrency control constructs, and
+asynchronous sockets, timers, processes, and more
+@item Generational, parallel, garbage collection
+@item Support for numerous language features, including first class functions,
+exceptions, continuations, runtime loading of code, big integers and interfacing
+with native libraries.
+@end itemize")
+    (license license:artistic2.0)))
+
+(define-public nqp
+  (package
+    (name "nqp")
+    (version "2019.03")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://rakudo.perl6.org/downloads/nqp/nqp-"
+                            version ".tar.gz"))
+        (sha256
+         (base32
+          "183zhll13fx416s3hkg4bkvib77kyr857h0nydgrl643fpacxp83"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (delete-file-recursively "3rdparty") #t))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'patch-source-shebangs 'patch-more-shebangs
+           (lambda _
+             (substitute* '("tools/build/install-jvm-runner.pl.in"
+                            "tools/build/gen-js-cross-runner.pl"
+                            "tools/build/gen-js-runner.pl"
+                            "tools/build/install-js-runner.pl"
+                            "tools/build/install-moar-runner.pl"
+                            "tools/build/gen-moar-runner.pl"
+                            "t/nqp/111-spawnprocasync.t"
+                            "t/nqp/113-run-command.t")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-after 'unpack 'patch-source-date
+           (lambda _
+             (substitute* "tools/build/gen-version.pl"
+               (("gmtime") "gmtime(0)"))
+             #t))
+         (add-after 'unpack 'remove-failing-test
+           ;; One subtest fails for unknown reasons
+           (lambda _
+             (delete-file "t/nqp/019-file-ops.t")
+             #t))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out  (assoc-ref outputs "out"))
+                   (moar (assoc-ref inputs "moarvm")))
+               (invoke "perl" "Configure.pl"
+                       "--backends=moar"
+                       "--with-moar" (string-append moar "/bin/moar")
+                       "--prefix" out)))))))
+    (inputs
+     `(("moarvm" ,moarvm)))
+    (home-page "https://github.com/perl6/nqp")
+    (synopsis "Not Quite Perl")
+    (description "This is \"Not Quite Perl\" -- a lightweight Perl 6-like
+environment for virtual machines.  The key feature of NQP is that it's designed
+to be a very small environment (as compared with, say, perl6 or Rakudo) and is
+focused on being a high-level way to create compilers and libraries for virtual
+machines like MoarVM, the JVM, and others.
+
+Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a
+runtime footprint as it can, while still providing a Perl 6 object model and
+regular expression engine for the virtual machine.")
+    (license license:artistic2.0)))
+
+(define-public rakudo
+  (package
+    (name "rakudo")
+    (version "2019.03.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://rakudo.perl6.org/downloads/rakudo/rakudo-"
+                            version ".tar.gz"))
+        (sha256
+         (base32
+          "1nllf69v8xr6v3kkj7pmryg11n5m3ajfkr7j72pvhrgnjy8lv3r1"))))
+    (build-system perl-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source-date
+           (lambda _
+             (substitute* "tools/build/gen-version.pl"
+               (("gmtime") "gmtime(0)"))
+             #t))
+         (add-after 'patch-source-shebangs 'patch-more-shebangs
+           (lambda _
+             (substitute* '("tools/build/create-js-runner.pl"
+                            "tools/build/create-moar-runner.p6"
+                            "tools/build/create-jvm-runner.pl"
+                            "src/core/Proc.pm6")
+               (("/bin/sh") (which "sh")))
+             #t))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (nqp (assoc-ref inputs "nqp")))
+               (invoke "perl" "./Configure.pl"
+                       "--backend=moar"
+                       "--with-nqp" (string-append nqp "/bin/nqp")
+                       "--prefix" out))))
+         ;; This is the recommended tool for distro maintainers to install perl6
+         ;; modules systemwide.  See: https://github.com/ugexe/zef/issues/117
+         (add-after 'install 'install-dist-tool
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (dest (string-append out "/share/perl6/tools")))
+               (install-file "tools/install-dist.p6" dest)
+               (substitute* (string-append dest "/install-dist.p6")
+                 (("/usr/bin/env perl6")
+                  (string-append out "/bin/perl6"))))
+             #t)))))
+    (inputs
+     `(("moarvm" ,moarvm)
+       ("nqp" ,nqp)
+       ("openssl" ,openssl)))
+    (home-page "https://rakudo.org/")
+    (native-search-paths
+      (list (search-path-specification
+              (variable "PERL6LIB")
+              (separator ",")
+              (files '("share/perl6/lib"
+                       "share/perl6/site/lib"
+                       "share/perl6/vendor/lib")))))
+    (synopsis "Perl 6 Compiler")
+    (description "Rakudo Perl is a compiler that implements the Perl 6
+specification and runs on top of several virtual machines.")
+    (license license:artistic2.0)))
+
+(define-public perl6-grammar-debugger
+  ;; Last commit was September 2017
+  (let ((commit "0375008027c8caa216bd869476ce59ae09b2a702")
+        (revision "1"))
+    (package
+      (name "perl6-grammar-debugger")
+      (version (git-version "1.0.1" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/jnthn/grammar-debugger")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "0y826z3m276n7ia810hgcb3div67nxmx125m2fzlc16994zd5vm5"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-terminal-ansicolor" ,perl6-terminal-ansicolor)))
+      (home-page "https://github.com/jnthn/grammar-debugger")
+      (synopsis "Simple tracing and debugging support for Perl 6 grammars")
+      (description "This module provides a simple debugger for grammars.  Just
+@code{use} it: use @code{Grammar::Debugger;} and any grammar in the lexical
+scope of the use statement will automatically have debugging enabled. The
+debugger will break execution when you first enter the grammar, and provide a
+prompt.")
+      (license license:artistic2.0))))
+
+(define-public perl6-grammar-profiler-simple
+  ;; Last commit was June 2017
+  (let ((commit "c0aca5fab323b2974821dabd6b89330c609e0b7d")
+        (revision "1"))
+    (package
+      (name "perl6-grammar-profiler-simple")
+      (version (git-version "0.02" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/perlpilot/Grammar-Profiler-Simple.git")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1qcsa4lmcilp3vp0jng0hrgzyzxin9ayg2wjvkcd0k6h7djx9dff"))))
+      (build-system rakudo-build-system)
+      (arguments '(#:with-zef? #f))
+      (home-page "https://github.com/perlpilot/Grammar-Profiler-Simple")
+      (synopsis "Simple rule profiling for Perl 6 grammars")
+      (description "This module provides a simple profiler for Perl 6 grammars.
+To enable profiling simply add use @code{Grammar::Profiler::Simple;} to your
+code.  Any grammar in the lexical scope of the use statement will automatically
+have profiling information collected when the grammar is used.")
+      (license license:artistic2.0))))
+
+(define-public perl6-json
+  (package
+    (name "perl6-json")
+    (version "1.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/moritz/json")
+               ;; The commit where 1.0 was "tagged"
+               (commit "a5ef8c179350dae44ce7fb1abb684fc62c1c2b99")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1kzryxkqyr129rcckd4jh0dfxdgzv71qx8dpkpm1divbfjyknlay"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/moritz/json")
+    (synopsis "A minimal JSON (de)serializer")
+    (description "This module is a simple Perl 6 module for serializing and
+deserializing JSON.")
+    (license license:artistic2.0)))
+
+(define-public perl6-json-class
+  (package
+    (name "perl6-json-class")
+    (version "0.0.12")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Class.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1zyzajc57j3m8q0nr72h9pw4w2nx92rafywlvysgphc5q9sb8np2"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-marshal" ,perl6-json-marshal)
+       ("perl6-json-unmarshal" ,perl6-json-unmarshal)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/JSON-Class")
+    (synopsis "Provide simple serialisation/deserialisation of objects to/from JSON")
+    (description "This is a simple role that provides methods to instantiate a
+class from a JSON string that (hopefully,) represents it, and to serialise an
+object of the class to a JSON string.  The JSON created from an instance should
+round trip to a new instance with the same values for the @quot{public
+attributes}.  @quot{Private} attributes (that is ones without accessors,) will
+be ignored for both serialisation and de-serialisation.  The exact behaviour
+depends on that of @code{JSON::Marshal} and @code{JSON::Unmarshal} respectively.")
+    (license license:artistic2.0)))
+
+(define-public perl6-json-fast
+  (package
+    (name "perl6-json-fast")
+    (version "0.8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/timo/json_fast.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1fif081gdxdnja14vkj523p9dyzdcdj81lmjv9fvfazvpagb6dg2"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/timo/json_fast")
+    (synopsis "Perl6 json parser")
+    (description "A naive imperative json parser in pure perl6 (but with direct
+access to @code{nqp::} ops), to evaluate performance against @code{JSON::Tiny}.
+It is a drop-in replacement for @code{JSON::Tiny}'s from-json and to-json subs,
+but it offers a few extra features.")
+    (license license:artistic2.0)))
+
+(define-public perl6-json-marshal
+  (package
+    (name "perl6-json-marshal")
+    (version "0.0.16")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Marshal.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0qy7j83h6gjzyyv74ncd92cd9h45rv8diaz3vldiv3b6fqwz4c6i"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)
+       ("perl6-json-name" ,perl6-json-name)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/JSON-Marshal")
+    (synopsis "Simple serialisation of objects to JSON")
+    (description "This library provides a single exported subroutine to create
+a JSON representation of an object.  It should round trip back into an object
+of the same class using @code{JSON::Unmarshal}.")
+    (license license:artistic2.0)))
+
+(define-public perl6-json-name
+  (package
+    (name "perl6-json-name")
+    (version "0.0.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/JSON-Name.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "130qwdpbj5qdlsdz05y0rksd79lzbq79scy47n6lnf21b0hz1qjc"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/jonathanstowe/JSON-Name")
+    (synopsis "Provides a trait to store an alternative JSON Name")
+    (description "This is released as a dependency of @code{JSON::Marshal} and
+@code{JSON::Unmarshal} in order to save duplication, it is intended to store a
+separate JSON name for an attribute where the name of the JSON attribute might be
+changed, either for aesthetic reasons or the name is not a valid Perl identifier.
+It will of course also be needed in classes thar are going to use
+@code{JSON::Marshal} or @code{JSON::Unmarshal} for serialisation/de-serialisation.")
+    (license license:artistic2.0)))
+
+(define-public perl6-json-unmarshal
+  ;; Last commit was May 2017
+  (let ((commit "e1b6288c5f3165058f36c0f4e171cdf2dfd640da")
+        (revision "1"))
+    (package
+      (name "perl6-json-unmarshal")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/tadzik/JSON-Unmarshal.git")
+                 (commit commit)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "14azsmzmwdn8k0gqcpvballharcvzylmlyrx2wmv4kpqfnz29fjc"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-json-fast" ,perl6-json-fast)
+         ("perl6-json-name" ,perl6-json-name)))
+      (home-page "https://github.com/tadzik/JSON-Unmarshal")
+      (synopsis "Make JSON from an Object")
+      (description "This library provides a single exported subroutine to
+create an object from a JSON representation of an object.")
+      (license license:expat))))
+
+(define-public perl6-license-spdx
+  (package
+    (name "perl6-license-spdx")
+    (version "3.4.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/License-SPDX")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0dl263c3fbxk001gm5fisrzqz1dx182ipaa0x2qva2gxvl075xm8"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-class" ,perl6-json-class)))
+    (home-page "https://github.com/jonathanstowe/License-SPDX")
+    (synopsis "Abstraction over the SPDX License List")
+    (description "This provides an abstraction over the SPDX License List as
+provided in JSON format.  Its primary raison d'être is to help the licence
+checking of @code{Test::META} and to allow for the warning about deprecated
+licences therein.")
+    (license license:artistic2.0)))
+
+(define-public perl6-meta6
+  (package
+    (name "perl6-meta6")
+    (version "0.0.23")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/META6.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1xnlaamfbdlfb2zidim3bbc4mawsrg6qxhxi6gbld46z1cyry1cw"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-json-class" ,perl6-json-class)))
+    (native-inputs
+     `(("perl6-json-fast" ,perl6-json-fast)))
+    (home-page "https://github.com/jonathanstowe/META6")
+    (synopsis "Do things with Perl 6 [META files]")
+    (description "This provides a representation of the Perl 6 META files
+specification - the META file data can be read, created, parsed and written in a
+manner that is conformant with the specification.
+
+Where they are known about it also makes allowance for @quot{customary} usage in
+existing software (such as installers and so forth.)
+
+The intent of this is allow the generation and testing of META files for module
+authors, so it can provide meta-information whether the attributes are mandatory
+as per the spec and where known the places that @quot{customary} attributes are
+used.")
+    (license license:artistic2.0)))
+
+(define-public perl6-mime-base64
+  (package
+    (name "perl6-mime-base64")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6/Perl6-MIME-Base64")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0l67m8mvz3gxml425sd1ggfnhzh4lf754k7w8fngfr453s6lsza1"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/perl6/Perl6-MIME-Base64")
+    (synopsis "Encoding and decoding Base64 ASCII strings")
+    (description "This Perl 6 module implements encoding and decoding to and
+from base64.")
+    (license license:artistic2.0)))
+
+(define-public perl6-oo-monitors
+  (package
+    (name "perl6-oo-monitors")
+    (version "1.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jnthn/oo-monitors")
+               ;; The commit where 1.1 was "tagged"
+               (commit "494db3a3852854f30a80c9bd1489a7d5e429e7c5")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1sbw2x54wwjjanghjnc7ipmplaw1srvbrphsdv4ym6cipnbmbj9x"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/jnthn/oo-monitors")
+    (synopsis "Monitors with condition variables for Perl 6")
+    (description "A monitor provides per-instance mutual exclusion for objects.
+This means that for a given object instance, only one thread can ever be inside
+its methods at a time.  This is achieved by a lock being associated with each
+object.  The lock is acquired automatically at the entry to each method in the
+monitor.  Condition variables are also supported.")
+    (license license:artistic2.0)))
+
+(define-public perl6-svg
+  ;; Latest commit, basically unchanged since August 2015
+  (let ((commit "07190c0602aa276e5319f06aa0012452dbff3582")
+        (revision "1"))
+    (package
+      (name "perl6-svg")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/moritz/svg")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "0mkjdhg7ajksdn61n8fqhyzfd7ly9myazsvpsm02a5c2q73hdygg"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-xml-writer" ,perl6-xml-writer)))
+      (home-page "https://github.com/moritz/svg")
+      (synopsis "Perl 6 module to generate SVG")
+      (description "This is a Perl 6 module that makes it easy to write
+@dfn{Scalable Vector Graphic files} (SVG).  Right now it is a shallow wrapper
+around @code{XML::Writer}, adding only the xmlns attributes that identifies an
+XML file as SVG.")
+      (license license:artistic2.0))))
+
+(define-public perl6-svg-plot
+  ;; Latest commit
+  (let ((commit "062570a78fd38c3c6baba29dfe2fbb8ca014f4de")
+        (revision "1"))
+    (package
+      (name "perl6-svg-plot")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/moritz/svg-plot")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "095ga5hbg92jnmczxvhk1hjz14yr334zyf8cph4w5w5frcza44my"))))
+      (build-system rakudo-build-system)
+      (propagated-inputs
+       `(("perl6-svg" ,perl6-svg)))
+      (home-page "https://github.com/moritz/svg-plot")
+      (synopsis "Perl 6 charting and plotting library that produces SVG output")
+      (description "@code{SVG::Plot} is a simple 2D chart plotter for Perl 6.
+It currently supports bars, stacked bars, lines and points (both equally spaced
+with optional labels, or xy plots).")
+      (license license:artistic2.0))))
+
+(define-public perl6-tap-harness
+  (package
+    (name "perl6-tap-harness")
+    (version "0.0.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6/tap-harness6.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1lig8i0my3fgqvlay9532xslbf3iis2d7wz89gniwvwqffi2kh6r"))))
+    (build-system rakudo-build-system)
+    (arguments
+     '(#:with-zef? #f
+       #:with-prove6? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "perl6" "-Ilib" "bin/prove6" "-l" "t"))))))
+    (home-page "https://github.com/perl6/tap-harness6/")
+    (synopsis "TAP harness for perl6")
+    (description "This module provides the @command{prove6} command which runs a
+TAP based test suite and prints a report.  The @command{prove6} command is a
+minimal wrapper around an instance of this module.")
+    (license license:artistic2.0)))
+
+(define-public perl6-terminal-ansicolor
+  (package
+    (name "perl6-terminal-ansicolor")
+    (version "0.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/tadzik/Terminal-ANSIColor.git")
+               ;; The commit where 0.5 was "tagged"
+               (commit "edded4a7116ce11cbc9fb5a83669c7ba119d0212")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1apm999azkyg5s35gid12wq019aqnvzrkz7qjmipd74mdxgr00x7"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/tadzik/Terminal-ANSIColor")
+    (synopsis "Colorize terminal output")
+    (description "This is a @code{Terminal::ANSIColor} module for Perl 6.")
+    (license license:expat)))
+
+(define-public perl6-test-meta
+  (package
+    (name "perl6-test-meta")
+    (version "0.0.14")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jonathanstowe/Test-META")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "1mzrglb7lbiy5h9dlc7dyhvv9gppxmdmpmrv6nzbd695jzr38bri"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-meta6" ,perl6-meta6)
+       ("perl6-uri" ,perl6-uri)))
+    (home-page "https://github.com/jonathanstowe/Test-META")
+    (synopsis "Test a distributions META file")
+    (description "This provides a simple mechanism for module authors to have
+some confidence that they have a working distribution META description file.")
+    (license license:artistic2.0)))
+
+(define-public perl6-test-mock
+  (package
+    (name "perl6-test-mock")
+    (version "1.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jnthn/test-mock")
+               ;; The commit where 1.5 was "tagged"
+               (commit "6eddb42f73f40b9ac29c14badb41ce4a04d876f2")))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "07yr3qimc8fl29p23562ayj2j9h53madcnf9sgqvgf2kcprh0zd2"))))
+    (build-system rakudo-build-system)
+    (propagated-inputs
+     `(("perl6-oo-monitors" ,perl6-oo-monitors)))
+    (home-page "https://github.com/jnthn/test-mock")
+    (synopsis "Module for simply generating and checking mock objects")
+    (description "@code{Test::Mock} is a module that works alongside the
+standard Test module to help you write tests when you want to verify what
+methods are called on an object, while still having calls to undefined methods
+die.  You get started just as normal with the test file, but also add a use
+statement for @code{Test::Mock}.")
+    (license license:artistic2.0)))
+
+(define-public perl6-uri
+  (package
+    (name "perl6-uri")
+    (version "0.1.5")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/perl6-community-modules/uri.git")
+               (commit version)))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0h318g75jqn2ckw051g35iqyfxz1mps0jyg5z6pd857y3kacbkpl"))))
+    (build-system rakudo-build-system)
+    (arguments '(#:with-zef? #f))
+    (home-page "https://github.com/perl6-community-modules/uri")
+    (synopsis "URI implementation using Perl 6")
+    (description "A URI implementation using Perl 6 grammars to implement RFC
+3986 BNF.  Currently only implements parsing.  Includes @code{URI::Escape} to
+(un?)escape characters that aren't otherwise allowed in a URI with % and a hex
+character numbering.")
+    (license license:artistic2.0)))
+
+(define-public perl6-xml-writer
+  ;; Last commit was May 2017
+  (let ((commit "4d30a9d8e06033ca97387971b653817becd5a759")
+        (revision "1"))
+    (package
+      (name "perl6-xml-writer")
+      (version (git-version "0.0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/masak/xml-writer")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "1kwrf7akp70kyzw1b90khp71a6hpilihwndy2jsjpffcd4hd4m4z"))))
+      (build-system rakudo-build-system)
+      (arguments '(#:with-zef? #f))
+      (home-page "https://github.com/masak/xml-writer")
+      (synopsis "Perl 6 module to generate XML")
+      (description "@code{XML::Writer} is a module for creating XML in Perl 6.")
+      (license license:artistic2.0))))
+
+(define-public perl6-zef
+  (package
+    (name "perl6-zef")
+    (version "0.6.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/ugexe/zef.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "07n7g1xw2c4g860rs890gx85vyhdq0ysgwbrnzw6q905jph2bkv7"))))
+    (build-system rakudo-build-system)
+    (arguments
+     '(#:with-zef? #f
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (setenv "HOME" "/tmp")
+             (invoke "perl6" "-I." "bin/zef" "--debug"
+                     "--tap-harness" "test" "."))))))
+    (home-page "https://github.com/ugexe/zef")
+    (synopsis "Perl6 Module Management")
+    (description "Zef is a Perl 6 package (module) manager.  It can be used to
+download and install Perl 6 modules in your home directory or as a system-wide
+module.")
+    (license license:artistic2.0)))
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index ec693d72b3..f2cabec39a 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -357,19 +357,18 @@ photographic equipment.")
 (define-public darktable
   (package
     (name "darktable")
-    (version "2.6.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/darktable-org/darktable/releases/"
-                    "download/release-"
-                    version "/darktable-" version ".tar.xz"))
-              (sha256
-               (base32
-                "0y04cx0a0rwdclmn16f5y0z2vnm7yxly291gzjgdhcn59a77sga8"))))
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/darktable-org/darktable/releases/"
+             "download/release-" version "/darktable-" version ".tar.xz"))
+       (sha256
+        (base32 "09ihbj0602spgc5lfbskf9am38n03gam2r8v3kj4dyfgxqr37ib3"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; There are no tests.
+     `(#:tests? #f                      ; there are no tests
        #:configure-flags '("-DBINARY_PACKAGE_BUILD=On")
        #:make-flags
        (list
@@ -420,7 +419,7 @@ photographic equipment.")
 developer.  It manages your digital negatives in a database, lets you view
 them through a zoomable lighttable and enables you to develop raw images
 and enhance them.")
-    ;; see src/is_supported_platform.h for supported platforms
+    ;; See src/is_supported_platform.h for supported platforms.
     (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
     (license license:gpl3+)))
 
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index bdb5dbbdad..34793db58b 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -244,15 +244,14 @@ seen in a terminal.")
 (define-public highlight
   (package
     (name "highlight")
-    (version "3.47")
+    (version "3.49")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://www.andre-simon.de/zip/highlight-"
                            version ".tar.bz2"))
        (sha256
-        (base32
-         "0xidf8755lnx55x6p4ajgg4l145akjqswny41483fvg5lpa41i6f"))))
+        (base32 "1zlhmlq5fnsxxmm04qfchhl4w2iw5fa6sn81c34q6k2m1m77g6aj"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -267,9 +266,10 @@ seen in a terminal.")
          (add-after 'unpack 'fix-search-for-lua
            (lambda _
              (substitute* "src/makefile"
-               (("(pkg-config.*)lua" _ prefix)
-                (string-append prefix "lua-" ,(version-major+minor
-                                               (package-version lua)))))
+               (("(LUA_PKG_NAME=).*" _ assignment)
+                (string-append assignment "lua-" ,(version-major+minor
+                                                   (package-version lua))
+                               "\n")))
              #t)))))
     (inputs
      `(("lua" ,lua)
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index 028b2f21e1..73169216b4 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -23,6 +23,8 @@
 (define-module (gnu packages protobuf)
   #:use-module (guix packages)
   #: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 python)
   #:use-module ((guix licenses) #:prefix license:)
@@ -160,6 +162,29 @@ generator that converts Protocol Buffer @code{.proto} files to C descriptor
 code.")
     (license license:bsd-2)))
 
+(define-public protozero
+  (package
+    (name "protozero")
+    (version "1.6.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mapbox/protozero.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ryvn3iwxiaih3mvyy45nbwxnhzfc8vby0xh9m6d6fpakhcpf6s3"))))
+    (build-system cmake-build-system)
+    (home-page "https://github.com/mapbox/protozero")
+    (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
+    (description "Protozero is a minimalistic protocol buffer decoder and
+encoder in C++.  The developer using protozero has to manually translate the
+@file{.proto} description into code.")
+    (license (list
+              license:asl2.0            ; for folly
+              license:bsd-2))))
+
 (define-public python-protobuf
   (package
     (name "python-protobuf")
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 2686425b51..58a1022bc2 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module (gnu packages check)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages web)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -57,3 +59,49 @@
 This package provides seamless integration with coverage.py (and thus pytest,
 nosetests, etc...) in Python projects.")
     (license license:expat)))
+
+(define-public python-vcrpy
+  (package
+    (name "python-vcrpy")
+    (version "2.0.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "vcrpy" version))
+        (sha256
+         (base32
+          "0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp"))))
+    (build-system python-build-system)
+    (arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin
+    (propagated-inputs
+     `(("python-pyyaml" ,python-pyyaml)
+       ("python-six" ,python-six)
+       ("python-wrapt" ,python-wrapt)
+       ("python-yarl" ,python-yarl)))
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-httpbin" ,python-pytest-httpbin)))
+    (home-page "https://github.com/kevin1024/vcrpy")
+    (synopsis "Automatically mock your HTTP interactions")
+    (description
+     "VCR.py simplifies and speeds up tests that make HTTP requests.  The first
+time you run code that is inside a VCR.py context manager or decorated function,
+VCR.py records all HTTP interactions that take place through the libraries it
+supports and serializes and writes them to a flat file (in yaml format by
+default).  This flat file is called a cassette.  When the relevant piece of code
+is executed again, VCR.py will read the serialized requests and responses from
+the aforementioned cassette file, and intercept any HTTP requests that it
+recognizes from the original test run and return the responses that corresponded
+to those requests.  This means that the requests will not actually result in
+HTTP traffic, which confers several benefits including:
+@enumerate
+@item The ability to work offline
+@item Completely deterministic tests
+@item Increased test execution speed
+@end enumerate
+If the server you are testing against ever changes its API, all you need to do
+is delete your existing cassette files, and run your tests again.  VCR.py will
+detect the absence of a cassette file and once again record all HTTP
+interactions, which will update them to correspond to the new API.")
+    (license license:expat)))
diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm
index e13227b616..88f62d1934 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 688c8c4378..08f1e4d399 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index b1809c6d9a..fa634c2ecd 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
@@ -3030,3 +3030,66 @@ applications using Publish and Subscribe (PubSub) and routed Remote Procedure
 Calls (rRPC).  It is ideal for distributed, multi-client and server applications
 such as IoT applications or multi-user database-driven business applications.")
     (license license:expat)))
+
+(define-public python-ws4py
+  (package
+    (name "python-ws4py")
+    (version "0.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ws4py" version))
+       (sha256
+        (base32
+         "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'python3.7-compatibility
+           (lambda _
+             (substitute* '("ws4py/server/tulipserver.py"
+                            "ws4py/async_websocket.py")
+               (("asyncio.async")
+                "asyncio.ensure_future"))
+             #t))
+         ;; We don't have a package for cherrypy.
+         (add-after 'unpack 'remove-cherrypy-support
+           (lambda _
+             (delete-file "ws4py/server/cherrypyserver.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-gevent" ,python-gevent)
+       ("python-tornado" ,python-tornado)))
+    (home-page "https://github.com/Lawouach/WebSocket-for-Python")
+    (synopsis "WebSocket client and server library")
+    (description
+     "This package provides a WebSocket client and server library for
+Python.")
+    (license license:bsd-3)))
+
+;; kaldi-gstreamer-server does not yet work with python-ws4py > 0.3.2
+(define-public python2-ws4py-for-kaldi-gstreamer-server
+  (package (inherit python-ws4py)
+    (name "python2-ws4py")
+    (version "0.3.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ws4py" version))
+       (sha256
+        (base32
+         "12ys3dv98awhrxd570vla3hqgzq3avjhq4yafhghhq3a942y1928"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         ;; We don't have a package for cherrypy.
+         (add-after 'unpack 'remove-cherrypy-support
+           (lambda _
+             (delete-file "ws4py/server/cherrypyserver.py")
+             #t)))))
+    (propagated-inputs
+     `(("python-gevent" ,python2-gevent)
+       ("python-tornado" ,python2-tornado)))))
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index a995618305..db31794225 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -54,10 +54,11 @@
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
 ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
 ;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
+;;; Copyright © 2019 Sam <smbaines8@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -142,6 +143,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix hg-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
@@ -229,6 +231,28 @@ pidof, tty, taskset, pmap.")
 planar geometric objects.  It is based on the @code{GEOS} library.")
     (license license:bsd-3)))
 
+(define-public python-shortuuid
+  (package
+    (name "python-shortuuid")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "shortuuid" version))
+       (sha256
+        (base32
+         "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-pep8" ,python-pep8)))
+    (home-page "https://github.com/skorokithakis/shortuuid")
+    (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs")
+    (description
+     "@code{shortuuid} is a Python library for generating concise, unambiguous
+and URL-safe UUIDs.  UUIDs are generated using the built-in Python @code{uuid}
+module and then similar looking characters are removed.")
+    (license license:bsd-3)))
+
 (define-public python-logwrap
   (package
     (name "python-logwrap")
@@ -839,6 +863,73 @@ messages in color.")
 (define-public python2-coloredlogs
   (package-with-python2 python-coloredlogs))
 
+(define-public python-et-xmlfile
+  (package
+    (name "python-et-xmlfile")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "et_xmlfile" version))
+       (sha256
+        (base32
+         "0nrkhcb6jdrlb6pwkvd4rycw34y3s931hjf409ij9xkjsli9fkb1"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "pytest"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-lxml" ,python-lxml)))   ;used for the tests
+    (home-page "https://bitbucket.org/openpyxl/et_xmlfile")
+    (synopsis "Low memory implementation of @code{lxml.xmlfile}")
+    (description "This Python library is based upon the @code{xmlfile} module
+from @code{lxml}.  It aims to provide a low memory, compatible implementation
+of @code{xmlfile}.")
+    (license license:expat)))
+
+(define-public python2-et-xmlfile
+  (package-with-python2 python-et-xmlfile))
+
+(define-public python-openpyxl
+  (package
+    (name "python-openpyxl")
+    (version "2.6.0")
+    (source
+     (origin
+       ;; We use the upstream repository, as the tests are not included in the
+       ;; PyPI releases.
+       (method hg-fetch)
+       (uri (hg-reference
+             (url "https://bitbucket.org/openpyxl/openpyxl")
+             (changeset version)))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32
+         "1x47ngn7ybaqdbvg90c8h2x0j6yfdfj25gjfinp2w5rf62gsany7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "pytest"))))))
+    (native-inputs
+     ;; For the test suite.
+     `(("python-lxml" ,python-lxml)
+       ("python-pillow" ,python-pillow)
+       ("python-pytest" ,python-pytest)))
+    (propagated-inputs
+     `(("python-et-xmlfile" ,python-et-xmlfile)
+       ("python-jdcal" ,python-jdcal)))
+    (home-page "https://openpyxl.readthedocs.io")
+    (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files")
+    (description "This Python library allows reading and writing to the Excel XLSX, XLSM,
+XLTX and XLTM file formats that are defined by the Office Open XML (OOXML)
+standard.")
+    (license license:expat)))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
@@ -950,13 +1041,13 @@ human-friendly syntax.")
 (define-public python-pandas
   (package
     (name "python-pandas")
-    (version "0.23.4")
+    (version "0.24.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "pandas" version))
        (sha256
-        (base32 "1x54pd7hr3y7qahx6b5bf2wzj54xvl8r3s1h4pl254pnmi3wl92v"))))
+        (base32 "18imlm8xbhcbwy4wa957a1fkamrcb0z988z006jpfda3ki09z4ag"))))
     (build-system python-build-system)
     (arguments
      `(#:modules ((guix build utils)
@@ -964,6 +1055,13 @@ human-friendly syntax.")
                   (ice-9 ftw)
                   (srfi srfi-26))
        #:phases (modify-phases %standard-phases
+                  (add-after 'unpack '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))
                   (replace 'check
                     (lambda _
                       (let ((build-directory
@@ -972,17 +1070,17 @@ human-friendly syntax.")
                               (car (scandir "build"
                                             (cut string-prefix? "lib." <>))))))
                         ;; Disable the "strict data files" option which causes
-                        ;; the build to error out if required data files are not
-                        ;; available (as is the case with PyPI archives).
+                        ;; the build to error out if required data files are
+                        ;; not available (as is the case with PyPI archives).
                         (substitute* "setup.cfg"
                           (("addopts = --strict-data-files") "addopts = "))
                         (with-directory-excursion build-directory
-                          ;; Delete tests that require "moto" which is not yet in Guix.
+                          ;; 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_excel.py"
                                       "pandas/tests/io/test_parquet.py"))
                           (invoke "pytest" "-vv" "pandas" "--skip-slow"
                                   "--skip-network" "-k"
@@ -990,15 +1088,20 @@ human-friendly syntax.")
                                   "not test_read_s3_jsonl"))))))))
     (propagated-inputs
      `(("python-numpy" ,python-numpy)
+       ("python-openpyxl" ,python-openpyxl)
        ("python-pytz" ,python-pytz)
-       ("python-dateutil" ,python-dateutil)))
+       ("python-dateutil" ,python-dateutil)
+       ("python-xlrd" ,python-xlrd)))
+    (inputs
+     `(("which" ,which)))
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-beautifulsoup4" ,python-beautifulsoup4)
        ("python-lxml" ,python-lxml)
        ("python-html5lib" ,python-html5lib)
        ("python-nose" ,python-nose)
-       ("python-pytest" ,python-pytest)))
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-mock" ,python-pytest-mock)))
     (home-page "https://pandas.pydata.org")
     (synopsis "Data structures for data analysis, time series, and statistics")
     (description
@@ -1765,6 +1868,34 @@ version numbers.")
 (define-public python2-vcversioner
   (package-with-python2 python-vcversioner))
 
+(define-public python-jdcal
+  (package
+    (name "python-jdcal")
+    (version "1.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "jdcal" version))
+        (sha256
+          (base32
+            "1ja6j2xq97bsl6rv09mhdx7n0xnrsfx0mj5xqza0mxghqmkm02pa"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "pytest"))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)))
+    (home-page "https://github.com/phn/jdcal")
+    (synopsis "Functions to convert between Julian dates Gregorian dates")
+    (description "This Python library provides functions for converting
+between Julian dates and Gregorian dates.")
+    (license license:bsd-2)))
+
+(define-public python2-jdcal
+  (package-with-python2 python-jdcal))
+
 (define-public python-jsonschema
   (package
     (name "python-jsonschema")
@@ -2641,14 +2772,14 @@ Server (PLS).")
 (define-public python-language-server
   (package
     (name "python-language-server")
-    (version "0.24.0")
+    (version "0.25.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "python-language-server" version))
        (sha256
         (base32
-         "05zmv6jr7qbgnkz0lqh5pr7kr4lm12i8ljm2k5h5kz3q9m8d4mm0"))))
+         "1xabnaqd4n72myrc3mxl2y33vr2p7c9c5a87n77p9k327ckvdx01"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-pluggy" ,python-pluggy)
@@ -2660,7 +2791,8 @@ Server (PLS).")
        ("python-pycodestyle" ,python-pycodestyle)
        ("python-mccabe" ,python-mccabe)
        ("python-rope" ,python-rope)
-       ("python-autopep8" ,python-autopep8)))
+       ("python-autopep8" ,python-autopep8)
+       ("python-pylint" ,python-pylint)))
     (home-page "https://github.com/palantir/python-language-server")
     (synopsis "Python implementation of the Language Server Protocol")
     (description
@@ -3393,13 +3525,14 @@ To address this and enable easy cycling over arbitrary @code{kwargs}, the
     (name "python-colorspacious")
     (version "1.1.0")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://github.com/njsmith/colorspacious/archive/v"
-                            version ".tar.gz"))
-        (file-name (string-append name "-" version))
-        (sha256
-         (base32 "1vflh5jm32qb0skza2i8pjacv09w6gq84fqpp2nj77s0rbmzgr4k"))))
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/njsmith/colorspacious.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0g0lxqiscy5g5rq9421vv7abg0c90jzy0zmas2z3hya6k2dr5aid"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-numpy" ,python-numpy)))
@@ -13205,14 +13338,13 @@ such as figshare or Zenodo.")
 (define-public python-pyro4
   (package
     (name "python-pyro4")
-    (version "4.74")
+    (version "4.75")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Pyro4" version))
        (sha256
-        (base32
-         "0pzp7c6q3vvkxq0wy9lr6wd5wky40sajz69g697i5rb2q497pvc9"))))
+        (base32 "1dfpp36imddx19yv0kd28gk1l71ckhpqy6jd590wpm2680jw15rq"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-serpent" ,python-serpent)))
@@ -13875,14 +14007,13 @@ working with iterables.")
 (define-public python-latexcodec
   (package
     (name "python-latexcodec")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "latexcodec" version))
        (sha256
-        (base32
-         "0zdd1gf24i83ykadx0y30n3001j43scqr2saql3vckk5c39dj1wn"))))
+        (base32 "0s4wdbg0w2l8pj3i0y4510i0s04p8nhxcsa2z41bjsv0k66npb81"))))
     (build-system python-build-system)
     (inputs
      `(("python-six" ,python-six)))
@@ -14936,14 +15067,13 @@ distribution.")
 (define-public python-gast
   (package
     (name "python-gast")
-    (version "0.2.0")
+    (version "0.2.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "gast" version))
        (sha256
-        (base32
-         "0c296xm1vz9x4w4inmdl0k8mnc0i9arw94si2i7pglpc461r0s3h"))))
+        (base32 "1w5dzdb3gpcfmd2s0b93d8gff40a1s41rv31458z14inb3s9v4zy"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-astunparse" ,python-astunparse)))
@@ -15087,3 +15217,23 @@ and dates in \"human readable\" forms.  For example, it would display
     (description "Txaio provides a compatibility layer between the Python
 @code{asyncio} module and @code{Twisted}.")
     (license license:expat)))
+
+(define-public python-toolshed
+  (package
+    (name "python-toolshed")
+    (version "0.4.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "toolshed" version))
+       (sha256
+        (base32
+         "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://github.com/brentp/toolshed/")
+    (synopsis "Collection of modules and functions for working with data")
+    (description "This is a collection of well-tested, simple modules and
+functions that aim to reduce boilerplate when working with data.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0a483fb1db..064b8dbf4c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8179911539..87d92765f4 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org>
@@ -2067,7 +2067,7 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
 (define-public qwt
   (package
     (name "qwt")
-    (version "6.1.3")
+    (version "6.1.4")
     (source
       (origin
         (method url-fetch)
@@ -2075,7 +2075,7 @@ securely.  It will not store any data unencrypted unless explicitly requested.")
          (string-append "mirror://sourceforge/qwt/qwt/"
                         version "/qwt-" version ".tar.bz2"))
         (sha256
-         (base32 "0cwp63s03dw351xavb3pzbjlqvx7kj88wv7v4a2b18m9f97d7v7k"))))
+         (base32 "1navkcnmn0qz8kzsyqmk32d929zl72l0b580w1ica7z5559j2a8m"))))
   (build-system gnu-build-system)
   (inputs
    `(("qtbase" ,qtbase)
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
index 754539f546..e623f9b8c4 100644
--- a/gnu/packages/rails.scm
+++ b/gnu/packages/rails.scm
@@ -22,6 +22,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages ruby)
   #:use-module (guix build-system ruby))
 
@@ -65,6 +66,33 @@ migration.")
     (home-page "https://github.com/rails/spring")
     (license license:expat)))
 
+(define-public ruby-sass-rails
+  (package
+    (name "ruby-sass-rails")
+    (version "5.0.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "sass-rails" version))
+       (sha256
+        (base32
+         "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; No included tests
+    (propagated-inputs
+     `(("ruby-railties" ,ruby-railties)
+       ("ruby-sass" ,ruby-sass)
+       ("ruby-sprockets" ,ruby-sprockets)
+       ("ruby-sprockets-rails" ,ruby-sprockets-rails)
+       ("ruby-tilt" ,ruby-tilt)))
+    (synopsis "Sass adapter for the Rails asset pipeline")
+    (description
+     "This library integrates the SASS stylesheet language into Ruby on
+Rails.")
+    (home-page "https://github.com/rails/sass-rails")
+    (license license:expat)))
+
 (define-public ruby-debug-inspector
   (package
     (name "ruby-debug-inspector")
@@ -95,17 +123,70 @@ API.")
      "https://github.com/banister/debug_inspector")
     (license license:expat)))
 
+(define-public ruby-autoprefixer-rails
+  (package
+    (name "ruby-autoprefixer-rails")
+    (version "9.4.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "autoprefixer-rails" version))
+       (sha256
+        (base32
+         "0fxbfl3xrrjj84n98x24yzxbz4nvm6c492dxj41kkrl9z97ga13i"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'extract-gemspec 'remove-unnecessary-dependencies
+           (lambda _
+             ;; Remove the testing of compass, as it's use is deprecated, and
+             ;; it's unpackaged for Guix
+             (substitute* "autoprefixer-rails.gemspec"
+               ((".*%q<compass>.*") "\n")
+               (("\"spec/compass_spec\\.rb\"\\.freeze, ") ""))
+             (delete-file "spec/compass_spec.rb")
+
+             (substitute* "Gemfile"
+               ;; Remove overly strict requirement on sprockets
+               ((", '>= 4\\.0\\.0\\.beta1'") "")
+               ;; The mini_racer gem isn't packaged yet, and it's not directly
+               ;; required, as other backends for ruby-execjs can be used.
+               (("gem 'mini_racer'") "")
+               ;; For some reason, this is required for the gems to be picked
+               ;; up
+               (("gemspec") "gemspec\ngem 'tzinfo-data'\ngem 'sass'"))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rails" ,ruby-rails)
+       ("ruby-rspec-rails" ,ruby-rspec-rails)
+       ;; This is needed for a test, but I'm unsure why
+       ("ruby-sass" ,ruby-sass)
+       ;; This is used as the ruby-execjs runtime
+       ("node" ,node)))
+    (propagated-inputs
+     `(("ruby-execjs" ,ruby-execjs)))
+    (synopsis "Parse CSS and add vendor prefixes to CSS rules")
+    (description
+     "This gem provides Ruby and Ruby on Rails integration with Autoprefixer,
+which can parse CSS and add vendor prefixes to CSS rules using values from the
+Can I Use website.")
+    (home-page "https://github.com/ai/autoprefixer-rails")
+    (license license:expat)))
+
 (define-public ruby-activemodel
   (package
    (name "ruby-activemodel")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "activemodel" version))
      (sha256
       (base32
-       "1xmwi3mw8g4shbjvkhk72ra3r5jccbdsd4piphqka2y1h8s7sxvi"))))
+       "1idmvqvpgri34k31s44pjb88rc3jad3yxra7fd1kpidpnv5f3v65"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -123,14 +204,14 @@ serialization, internationalization, and testing.")
 (define-public ruby-activerecord
   (package
    (name "ruby-activerecord")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "activerecord" version))
      (sha256
       (base32
-       "19a0sns6a5wz2wym25lb1dv4lbrrl5sd1n15s5ky2636znmhz30y"))))
+       "1c5cz9v7ggpqjxf0fqs1xhy1pb9m34cp31pxarhs9aqb71qjl98v"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -146,6 +227,35 @@ an almost zero-configuration persistence layer for applications.")
    (home-page "https://rubyonrails.org")
    (license license:expat)))
 
+(define-public ruby-rspec-rails
+  (package
+    (name "ruby-rspec-rails")
+    (version "3.8.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "rspec-rails" version))
+       (sha256
+        (base32
+         "1pf6n9l4sw1arlax1bdbm1znsvl8cgna2n6k6yk1bi8vz2n73ls1"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; No included tests
+    (propagated-inputs
+     `(("ruby-actionpack" ,ruby-actionpack)
+       ("ruby-activesupport" ,ruby-activesupport)
+       ("ruby-railties" ,ruby-railties)
+       ("ruby-rspec-core" ,ruby-rspec-core)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations)
+       ("ruby-rspec-mocks" ,ruby-rspec-mocks)
+       ("ruby-rspec-support" ,ruby-rspec-support)))
+    (synopsis "Use RSpec to test Ruby on Rails applications")
+    (description
+     "This package provides support for using RSpec to test Ruby on Rails
+applications, in pace of the default Minitest testing library.")
+    (home-page "https://github.com/rspec/rspec-rails")
+    (license license:expat)))
+
 (define-public ruby-rails-html-sanitizer
   (package
     (name "ruby-rails-html-sanitizer")
@@ -201,14 +311,14 @@ useful when writing tests.")
 (define-public ruby-actionview
   (package
    (name "ruby-actionview")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "actionview" version))
      (sha256
       (base32
-       "1lz04drbi1z0xhvb8jnr14pbf505lilr02arahxq7y3mxiz0rs8z"))))
+       "0832vlx37rly8ryfgi01b20mld8b3bv9cg62n5wax4zpzgn6jdxb"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -229,14 +339,14 @@ Ruby.")
 (define-public ruby-actionpack
   (package
    (name "ruby-actionpack")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "actionpack" version))
      (sha256
       (base32
-       "0iwhbqqn0cm39dq040iwq8cfyclqk3kyzwlp5k3j5cz8k2668wws"))))
+       "1lxqzxa728dqg42yw0q4hqkaawqagiw1k0392an2ghjfgb16pafx"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -258,14 +368,14 @@ applications.  These work with any Rack-compatible server.")
 (define-public ruby-actioncable
   (package
    (name "ruby-actioncable")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "actioncable" version))
      (sha256
       (base32
-       "0826k5ch0l03f9yrkxy69aiv039z4qi00lnahw2rzywd2iz6r68x"))))
+       "1x5fxhsr2mxq5r6258s48xsn7ld081d3qaavppvj7yp7w9vqn871"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -284,14 +394,14 @@ WebSockets it allows for real-time features in web applications.")
 (define-public ruby-activejob
   (package
    (name "ruby-activejob")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "activejob" version))
      (sha256
       (base32
-       "1jjkl62x2aprg55x9rpm0h2c82vr2qr989hg3l9r21l01q4822ir"))))
+       "1zma452lc3qp4a7r10zbdmsci0kv9a3gnk4da2apbdrc8fib5mr3"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -309,14 +419,14 @@ applications.")
 (define-public ruby-activestorage
   (package
     (name "ruby-activestorage")
-    (version "5.2.2")
+    (version "5.2.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "activestorage" version))
        (sha256
         (base32
-         "0c72837098sw384vk6dmrb2p7q3wx4swnibk6sw9dp4hn1vc4p31"))))
+         "155xpbzrz0kr0argx0vsh5prvadd2h1g1m61kdiabvfy2iygc02n"))))
     (build-system ruby-build-system)
     (arguments
      '(;; No included tests
@@ -335,14 +445,14 @@ allowing files to be attached to ActiveRecord models..")
 (define-public ruby-actionmailer
   (package
    (name "ruby-actionmailer")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "actionmailer" version))
      (sha256
       (base32
-       "0sfpb8s95cmkpp9ybyp2c88r55r5llscmmnkfwcwgasz9ncjiq5n"))))
+       "10n2v2al68rsq5ghrdp7cpycsc1q0m19fcd8cd5i528n30nl23iw"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -363,14 +473,14 @@ pattern.  Including support for multipart email and attachments.")
 (define-public ruby-railties
   (package
    (name "ruby-railties")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "railties" version))
      (sha256
       (base32
-       "00pnylmbz4c46mxw5lhxi8h39lndfg6fs1hpd0qd6swnjhkqsr1l"))))
+       "0al6mvh2jvr3n7cxkx0yvhgiiarby6gxc93vl5xg1yxkvx27qzd6"))))
    (build-system ruby-build-system)
    (arguments
     '(;; No included tests
@@ -413,6 +523,62 @@ application bootup, plugins, generators, and Rake tasks.")
     "https://github.com/rails/sprockets-rails")
    (license license:expat)))
 
+(define-public ruby-web-console
+  (package
+    (name "ruby-web-console")
+    (version "3.7.0")
+    (source
+     (origin
+       ;; 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")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0ir999p8cnm3l3zwbgpwxxcq1vwkj8d0d3r24362cyaf4v1rglq2"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-Gemfile
+           (lambda _
+             (substitute* "Gemfile"
+               ;; Remove the github bit from the Gemfile, so that the Guix
+               ;; packages are used.
+               ((", github: .*") "\n")
+               ;; The usual methods of not loading this group don't work, so
+               ;; patch the Gemfile.
+               (("group :development") "[].each")
+               ;; tzinfo-data is propagated by ruby-activesupport, but it
+               ;; needs to be in the Gemfile to become available.
+               (("group :test do") "group :test do\n  gem 'tzinfo-data'"))
+             #t))
+         (add-after 'unpack 'fix-mocha-minitest-require
+           (lambda _
+             (substitute* "test/test_helper.rb"
+               ;; This chanegd in recent versions of Mocha
+               (("mocha/minitest") "mocha/mini_test"))
+             #t)))))
+    (propagated-inputs
+     `(("ruby-actionview" ,ruby-actionview)
+       ("ruby-activemodel" ,ruby-activemodel)
+       ("ruby-bindex" ,ruby-bindex)
+       ("ruby-railties" ,ruby-railties)))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rails" ,ruby-rails)
+       ("ruby-mocha" ,ruby-mocha)
+       ("ruby-simplecov" ,ruby-simplecov)))
+    (synopsis "Debugging tool for your Ruby on Rails applications")
+    (description
+     "This package allows you to create an interactive Ruby session in your
+browser.  Those sessions are launched automatically in case of an error and
+can also be launched manually in any page.")
+    (home-page "https://github.com/rails/web-console")
+    (license license:expat)))
+
 (define-public ruby-with-advisory-lock
   (package
     (name "ruby-with-advisory-lock")
@@ -444,14 +610,14 @@ for locks.")
 (define-public ruby-rails
   (package
    (name "ruby-rails")
-   (version "5.2.2")
+   (version "5.2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (rubygems-uri "rails" version))
      (sha256
       (base32
-       "1m9cszds68dsiycciiayd3c9g90s2yzn1izkr3gpgqkfw6dmvzyr"))))
+       "1jxmwrykwgbn116hhmi7h75hcsdifhj89wk12m7ch2f3mn1lrmp9"))))
    (build-system ruby-build-system)
    (arguments
     '(#:phases
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 818553848d..9a899b6bb4 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -51,6 +51,7 @@
   #:use-module (gnu packages maths)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ragel)
@@ -446,16 +447,16 @@ notebook).")
 ;; RSpec is the dominant testing library for Ruby projects.  Even RSpec's
 ;; dependencies use RSpec for their test suites!  To avoid these circular
 ;; dependencies, we disable tests for all of the RSpec-related packages.
-(define ruby-rspec-support
+(define-public ruby-rspec-support
   (package
     (name "ruby-rspec-support")
-    (version "3.5.0")
+    (version "3.8.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rspec-support" version))
               (sha256
                (base32
-                "10vf3k3d472y573mag2kzfsfrf6rv355s13kadnpryk8d36yq5r0"))))
+                "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -467,13 +468,13 @@ notebook).")
 (define-public ruby-rspec-core
   (package
     (name "ruby-rspec-core")
-    (version "3.5.4")
+    (version "3.8.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rspec-core" version))
               (sha256
                (base32
-                "1nacs062qbr98fx6czf1vwppn1js956nv2c8vfwj6i65axdfs46i"))))
+                "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -520,13 +521,13 @@ standard diff-like tool.")
 (define-public ruby-rspec-expectations
   (package
     (name "ruby-rspec-expectations")
-    (version "3.5.0")
+    (version "3.8.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rspec-expectations" version))
               (sha256
                (base32
-                "0bbqfrb1x8gmwf8x2xhhwvvlhwbbafq4isbvlibxi6jk602f09gs"))))
+                "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -612,13 +613,13 @@ eq(1)\\}}.")
 (define-public ruby-rspec-mocks
   (package
     (name "ruby-rspec-mocks")
-    (version "3.5.0")
+    (version "3.8.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rspec-mocks" version))
               (sha256
                (base32
-                "0nl3ksivh9wwrjjd47z5dggrwx40v6gpb3a0gzbp1gs06a5dmk24"))))
+                "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -669,13 +670,13 @@ RSpec tests.")
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")
-    (version "3.5.0")
+    (version "3.8.0")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "rspec" version))
               (sha256
                (base32
-                "16g3mmih999f0b6vcz2c3qsc7ks5zy4lj1rzjh8hf6wk531nvc6s"))))
+                "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3"))))
     (build-system ruby-build-system)
     (arguments
      '(#:tests? #f)) ; avoid dependency cycles
@@ -1434,6 +1435,39 @@ support.")
     (home-page "http://www.kuwata-lab.com/erubis/")
     (license license:expat)))
 
+(define-public ruby-execjs
+  (package
+    (name "ruby-execjs")
+    (version "2.7.0")
+    (source
+     (origin
+       ;; fetch from github as the gem does not contain testing code
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rails/execjs.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0c0vd2mmqq3ar4plbwi2wsbr31vn4h45i19r5km66skydnnbp1y6"))))
+    (build-system ruby-build-system)
+    (native-inputs
+     `(("bundler" ,bundler)
+       ;; The test suite tests all the available backends. Currenly, this just
+       ;; means the node backend.
+       ;;
+       ;; PASSED: test:node
+       ;; SKIPPED: test:duktape, ;; test:javascriptcore, test:jscript,
+       ;; test:miniracer, test:rubyracer, ;; test:rubyrhino, test:v8
+       ("node" ,node)))
+    (synopsis "Run JavaScript code from Ruby")
+    (description
+     "ExecJS lets you run JavaScript code from Ruby.  It automatically picks a
+runtime to evaluate your JavaScript program, then returns the result to you as
+a Ruby object.")
+    (home-page "https://github.com/rails/execjs")
+    (license license:expat)))
+
 (define-public ruby-orderedhash
   (package
     (name "ruby-orderedhash")
@@ -2818,6 +2852,30 @@ conversion to (X)HTML.")
     (home-page "https://github.com/vmg/redcarpet")
     (license license:expat)))
 
+(define-public ruby-rerun
+  (package
+  (name "ruby-rerun")
+  (version "0.13.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (rubygems-uri "rerun" version))
+      (sha256
+        (base32
+          "1cskvxk8z8vmfail8na7hj91hs0qnvds9nydj04zi3dbddgnbmvz"))))
+  (build-system ruby-build-system)
+  (arguments
+   '(#:tests? #f)) ; No included tests
+  (propagated-inputs
+   `(("ruby-listen" ,ruby-listen)))
+  (synopsis "Run a process, and restart when some monitored files change")
+  (description
+    "Rerun is a tool to launch programs, then monitor the filesystem, and
+restart the program when any of the monitored files change.  It's written in
+Ruby, but can be used for all programs.")
+  (home-page "https://github.com/alexch/rerun/")
+  (license license:expat)))
+
 (define-public ruby-mocha
   (package
     (name "ruby-mocha")
@@ -3788,6 +3846,27 @@ rate.")
     (home-page "https://github.com/paul/progress_bar")
     (license license:wtfpl2)))
 
+(define-public ruby-dep
+  (package
+    (name "ruby-dep")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ruby_dep" version))
+       (sha256
+        (base32
+         "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:tests? #f)) ; No included tests
+    (synopsis "Creates a version constraint of supported Rubies")
+    (description
+     "This package helps create a version constraint of supported Rubies,
+suitable for a gemspec file.")
+    (home-page "https://github.com/e2/ruby_dep")
+    (license license:expat)))
+
 (define-public ruby-progressbar
   (package
     (name "ruby-progressbar")
@@ -4462,33 +4541,50 @@ a native C extension.")
     (version "3.1.5")
     (source
      (origin
-       (method url-fetch)
-       (uri (rubygems-uri "listen" version))
+       ;; The gem does not include a Rakefile, so fetch from the Git
+       ;; repository.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/guard/listen.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx"))))
+         "1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg"))))
     (build-system ruby-build-system)
-    (arguments '(#:tests? #f)) ; no tests
+    (arguments
+     `(#:test-target "spec"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-files-in-gemspec
+           (lambda _
+             (substitute* "listen.gemspec"
+               (("`git ls-files -z`") "`find . -type f -printf '%P\\\\0' |sort -z`"))
+             #t))
+         (add-before 'check 'remove-unnecessary-dependencies'
+           (lambda _
+             (substitute* "Rakefile"
+               ;; Rubocop is for code linting, and is unnecessary for running
+               ;; the tests.
+               ((".*rubocop.*") ""))
+             #t)))))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rspec" ,ruby-rspec)))
+    (inputs
+     `(;; ruby-thor is used for the command line interface, and is referenced
+       ;; in the wrapper, and therefore just needs to be an input.
+       ("ruby-thor" ,ruby-thor)))
     (propagated-inputs
-     `(("ruby-rb-inotify" ,ruby-rb-inotify)
-       ("ruby-rb-fsevent" ,ruby-rb-fsevent)))
+     `(("ruby-rb-fsevent" ,ruby-rb-fsevent)
+       ("ruby-rb-inotify" ,ruby-rb-inotify)
+       ("ruby-dep" ,ruby-dep)))
     (synopsis "Listen to file modifications")
     (description "The Listen gem listens to file modifications and notifies
 you about the changes.")
     (home-page "https://github.com/guard/listen")
     (license license:expat)))
 
-(define-public ruby-listen-3.0
-  (package
-    (inherit ruby-listen)
-    (version "3.0.8")
-    (source (origin
-              (method url-fetch)
-              (uri (rubygems-uri "listen" version))
-              (sha256
-               (base32
-                "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i"))))))
-
 (define-public ruby-loofah
   (package
     (name "ruby-loofah")
@@ -4530,14 +4626,14 @@ documents and fragments.  It's built on top of Nokogiri and libxml2.")
 (define-public ruby-activesupport
   (package
     (name "ruby-activesupport")
-    (version "5.2.2")
+    (version "5.2.2.1")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "activesupport" version))
        (sha256
         (base32
-         "1iya7vxqwxysr74s7b4z1x19gmnx5advimzip3cbmsd5bd43wfgz"))))
+         "161bp4p01v1a1lvszrhd1a02zf9x1p1l1yhw79a3rix1kvzkkdqb"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
@@ -5550,6 +5646,31 @@ boolean expression used by Cucumber.")
     (home-page "https://github.com/cucumber/tag-expressions-ruby")
     (license license:expat)))
 
+(define-public ruby-bindex
+  (package
+    (name "ruby-bindex")
+    (version "0.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "bindex" version))
+       (sha256
+        (base32
+         "1wvhf4v8sk5x8li03pcc0v0wglmyv7ikvvg05bnms83dfy7s4k8i"))))
+    (build-system ruby-build-system)
+    (arguments
+     '(#:test-target "default"))
+    (native-inputs
+     `(("bundler" ,bundler)
+       ("ruby-rake-compiler" ,ruby-rake-compiler)))
+    (synopsis "Provides access for bindings relating to Ruby exceptions")
+    (description
+     "@code{bindex} provides a way to access the bindings that relate to
+exceptions in Ruby, providing more information about the context in which the
+exception occurred.")
+    (home-page "https://github.com/gsamokovarov/bindex")
+    (license license:expat)))
+
 (define-public ruby-bio-logger
   (package
     (name "ruby-bio-logger")
@@ -5915,14 +6036,14 @@ definitions.")
 (define-public ruby-fivemat
   (package
     (name "ruby-fivemat")
-    (version "1.3.6")
+    (version "1.3.7")
     (source
      (origin
        (method url-fetch)
        (uri (rubygems-uri "fivemat" version))
        (sha256
         (base32
-         "006n7b09vviv5bs5hv2ccmjxw9iw3brcsm3xh3dhzfncsknz4jp7"))))
+         "0pzlycasvwmg4bbx7plllpqnhd9zlmmff8l2w3yii86nrm2nvf9n"))))
     (build-system ruby-build-system)
     (arguments
      `(#:tests? #f)) ; no tests
@@ -7710,16 +7831,16 @@ in Jekyll.")
 (define-public ruby-jekyll-watch
   (package
     (name "ruby-jekyll-watch")
-    (version "2.0.0")
+    (version "2.1.2")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "jekyll-watch" version))
               (sha256
                (base32
-                "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"))))
+                "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"))))
     (build-system ruby-build-system)
     (propagated-inputs
-     `(("ruby-listen-3.0" ,ruby-listen-3.0)))
+     `(("ruby-listen" ,ruby-listen)))
     (arguments
      ;; No rakefile
      `(#:tests? #f))
@@ -8266,13 +8387,13 @@ Pathname.")
 (define-public jekyll
   (package
     (name "jekyll")
-    (version "3.8.3")
+    (version "3.8.5")
     (source (origin
               (method url-fetch)
               (uri (rubygems-uri "jekyll" version))
               (sha256
                (base32
-                "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk"))))
+                "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"))))
     (build-system ruby-build-system)
     (arguments
      ;; No rakefile, but a test subdirectory
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index abd873aefa..83c132c4f7 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
@@ -429,7 +429,13 @@ safety and thread safety guarantees.")
     (package
       (inherit base-rust)
       (outputs '("out" "doc" "cargo"))
-      (properties '())
+      ;; Since rust-1.19 is local, it's quite probable that Hydra
+      ;; will build rust-1.19 only as a dependency of rust-1.20.
+      ;; But then Hydra will use the wrong properties, the ones here,
+      ;; for rust-1.19.  Therefore, we copied the properties of
+      ;; rust-1.19 here.
+      (properties '((timeout . 72000)               ;20 hours
+                    (max-silent-time . 18000)))     ;5 hours (for armel)
       (arguments
        (substitute-keyword-arguments (package-arguments rust-1.19)
          ((#:phases phases)
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index d10c6ebc9c..f4bd0e3f11 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -151,14 +152,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.9.5")
+    (version "4.10.0")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://download.samba.org/pub/samba/stable/"
                                  "samba-" version ".tar.gz"))
              (sha256
               (base32
-               "001p896z609vb0qs196bgl362j7y3qibgm5gcl9028lfv795d287"))))
+               "0n1ld77y8sydkpx6l8i2hqa1k7hpkr8df91pg849glc4b85407wz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -225,7 +226,7 @@ anywhere.")
        ("xsltproc" ,libxslt)           ;ditto
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2))) ; incompatible with Python 3
+       ("python" ,python)))
     (home-page "https://www.samba.org/")
     (synopsis
      "The standard Windows interoperability suite of programs for GNU and Unix")
@@ -241,14 +242,14 @@ Desktops into Active Directory environments using the winbind daemon.")
 (define-public talloc
   (package
     (name "talloc")
-    (version "2.1.16")
+    (version "2.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/talloc/talloc-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1aajda08yf7njgvg6r21ccxlvkarb9bwvf4jqh8yn3871a1zcnqr"))))
+                "1g1fqa37xkjp9lp6lrwxrbfgashcink769ll505zvcwnxx2nlvsw"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -308,14 +309,14 @@ destructors.  It is the core memory allocator used in Samba.")
 (define-public tevent
   (package
     (name "tevent")
-    (version "0.9.39")
+    (version "0.10.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/tevent/tevent-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1rnln76ngd2b8lgqvfa9iscy6jizwycj85nfp9zd46b1c760z3gn"))))
+                "1rm4d9245ya15wyrh9vqn1dnz14l2ic88mr46ykyc6kdrl99dwrk"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -344,14 +345,14 @@ many event types, including timers, signals, and the classic file descriptor eve
 (define-public ldb
   (package
     (name "ldb")
-    (version "1.6.2")
+    (version "1.6.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1kiwlra6nfkb5n870k2db41jrm59bq9lxqmil4v7ignblgsdfdwb"))
+                "01livdy3g073bm6xnc8zqnqrxg53sw8q66d1903z62hd6g87whsa"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm
index 6539756a6e..d23da9e502 100644
--- a/gnu/packages/scanner.scm
+++ b/gnu/packages/scanner.scm
@@ -21,15 +21,15 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages scanner)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix utils)
-  #:use-module (guix build-system gnu)
-  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
   #:use-module ((guix licenses)
-                #:prefix licence:))
+                #:prefix licence:)
+  #:use-module (guix packages)
+  #:use-module (guix utils))
 
 (define-public sane-backends-minimal
   (package
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 93a1a3e152..9dbb3713ee 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index 8d2a024378..fe01086a86 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -87,10 +87,13 @@
     (propagated-inputs
      ;; SDL headers include X11 headers.
      `(("libx11" ,libx11)
-       ("libcap" ,libcap))) ; 'libSDL.la' contain `-lcap'.
+       ("libcap" ,libcap) ; 'libSDL.la' contain `-lcap'.
+       ;; TODO: Since building Mesa with Meson it is now necessary that Mesa is
+       ;; a propogated input. We still need to figure out why, possibly due to a
+       ;; change in pkg-config.
+       ("mesa" ,mesa)))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("libxrandr" ,libxrandr)
-              ("mesa" ,mesa)
               ("glu" ,glu)
               ("alsa-lib" ,alsa-lib)
               ("pulseaudio" ,pulseaudio)))
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 876318869c..05e0d1d833 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
 ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
 ;;;
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 4c832c0702..2c6642f727 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com>
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index a672aa041a..88c0f32e99 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -118,15 +118,17 @@ are already there.")
        #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))
        #:modules ((guix build gnu-build-system)
                   ((guix build go-build-system) #:prefix go:)
+                  (guix build union)
                   (guix build utils))
        #:imported-modules (,@%gnu-build-system-modules
+                            (guix build union)
                             (guix build go-build-system))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          ;; Help the build scripts find the Go language dependencies.
-         (add-after 'unpack 'setup-go-environment
-           (assoc-ref go:%standard-phases 'setup-environment)))))
+         (add-before 'unpack 'setup-go-environment
+           (assoc-ref go:%standard-phases 'setup-go-environment)))))
     (inputs
      `(("go" ,go)
        ("go-github-com-burntsushi-toml" ,go-github-com-burntsushi-toml)
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index fc7a711395..bd26149872 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -3,13 +3,13 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Manuel Graf <graf@init.at>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
 ;;;
@@ -111,7 +111,7 @@ applications.")
 (define-public libssh2
   (package
    (name "libssh2")
-   (version "1.8.0")
+   (version "1.8.1")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -119,7 +119,7 @@ applications.")
                    version ".tar.gz"))
             (sha256
              (base32
-              "1m3n8spv79qhjq4yi0wgly5s5rc8783jb1pyra9bkx1md0plxwrr"))
+              "0ngif3ynk6xqzy5nlfjs7bsmfm81g9f145av0z86kf0vbgrigda0"))
             (patches
              (search-patches "libssh2-fix-build-failure-with-gcrypt.patch"))))
    (build-system gnu-build-system)
@@ -141,7 +141,7 @@ the SSH-2 protocol in an easy-to-use self-contained package.  It can be built
 into an application to perform many different tasks when communicating with
 a server that supports the SSH-2 protocol.")
    (license license:bsd-3)
-   (home-page "http://www.libssh2.org/")))
+   (home-page "https://www.libssh2.org/")))
 
 (define-public openssh
   (package
@@ -451,18 +451,17 @@ TCP, not the SSH protocol.")
 (define-public dropbear
   (package
     (name "dropbear")
-    (version "2018.76")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://matt.ucc.asn.au/" name "/releases/"
-                    name "-" version ".tar.bz2"))
-              (patches (search-patches "dropbear-CVE-2018-15599.patch"))
-              (sha256
-               (base32
-                "0rgavbzw7jrs5wslxm0dnwx2m409yzxd9hazd92r7kx8xikr3yzj"))))
+    (version "2019.77")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://matt.ucc.asn.au/dropbear/releases/"
+             "dropbear-" version ".tar.bz2"))
+       (sha256
+        (base32 "13a55fcy2mx2pvsfj6dh9107k4wnbd9ybdyi3w3ivgikwvmph7yr"))))
     (build-system gnu-build-system)
-    (arguments `(#:tests? #f)) ; there is no "make check" or anything similar
+    (arguments `(#:tests? #f))  ; there is no "make check" or anything similar
     ;; TODO: Investigate unbundling libtommath and libtomcrypt or at least
     ;; cherry-picking important bug fixes from them. See <bugs.gnu.org/24674>
     ;; for more information.
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index e017d60767..6face9910a 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -548,14 +548,14 @@ also flexible enough to handle most nonstandard requirements.")
 (define-public r-matrix
   (package
     (name "r-matrix")
-    (version "1.2-15")
+    (version "1.2-16")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "Matrix" version))
        (sha256
         (base32
-         "1mshhyia6imh939p8labxi0wv21lal7csmccxi42klpgdh1j89kv"))))
+         "10fh0y1wd0bvnqbzlyck08pn1vxcd58bskx2lrf9m42v5792ba9p"))))
     (properties `((upstream-name . "Matrix")))
     (build-system r-build-system)
     (propagated-inputs
@@ -593,14 +593,14 @@ nonlinear mixed-effects models.")
 (define-public r-mgcv
   (package
    (name "r-mgcv")
-   (version "1.8-27")
+   (version "1.8-28")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "mgcv" version))
      (sha256
       (base32
-       "06vx1z52gcdmji0phmphfa0sg62gwxkw590prplxgv4da7xrk2y8"))))
+       "1snkpnkkigwrj9zm31j1nlivv9ls56imz263cv167hnmghiahpmm"))))
    (build-system r-build-system)
    (propagated-inputs
     `(("r-matrix" ,r-matrix)
@@ -916,14 +916,14 @@ Munsell colour system.")
 (define-public r-permute
   (package
    (name "r-permute")
-   (version "0.9-4")
+   (version "0.9-5")
    (source
     (origin
      (method url-fetch)
      (uri (cran-uri "permute" version))
      (sha256
       (base32
-       "1w8wzk1fg9q7wvisnfp2js70dg0m9wi12gkdhpyngpbdcgssahd5"))))
+       "0ra8p5mf2590azrkas8z2ry7mif77xqxd29n4zgyi5vll225726j"))))
    (build-system r-build-system)
    ;; Tests do not run correctly, but running them properly would entail a
    ;; circular dependency with vegan.
@@ -1021,14 +1021,14 @@ solution for sending email, including attachments, from within R.")
 (define-public r-stringi
   (package
     (name "r-stringi")
-    (version "1.3.1")
+    (version "1.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "stringi" version))
        (sha256
         (base32
-         "0qn3xy6vnz11vv2prbm55vkbgxr6dl8w5vk5q8d7wlp9nqxndprj"))))
+         "1vbr6g9p1iyzdj7wfw6afyizvnd1a2srfvkl72pq23vhdcwwpkhk"))))
     (build-system r-build-system)
     (inputs `(("icu4c" ,icu4c)))
     (native-inputs `(("pkg-config" ,pkg-config)))
@@ -1234,13 +1234,13 @@ considerably faster, produces smaller files, and leaves text as is.")
 (define-public r-assertthat
   (package
     (name "r-assertthat")
-    (version "0.2.0")
+    (version "0.2.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "assertthat" version))
               (sha256
                (base32
-                "1wp5znk3xy338x6hknppk702jn596yr735d9i7c3wabm3sdzfgnp"))))
+                "17wy5bdfzg73sg2clisg1k3zyn1adkj59x56m5nwia2k8z67zkw5"))))
     (build-system r-build-system)
     (home-page "https://github.com/hadley/assertthat")
     (synopsis "Easy pre and post assertions")
@@ -1254,13 +1254,13 @@ wrong.")
 (define-public r-lazyeval
   (package
     (name "r-lazyeval")
-    (version "0.2.1")
+    (version "0.2.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "lazyeval" version))
               (sha256
                (base32
-                "0q9zx78ncy2ffzrf9sh053069kd3w1xn1ss3gsbyf3y4jhza9cw3"))))
+                "1m10i059csrcqkcn59a8wspn784alxsq3symzhn24mhhl894346n"))))
     (build-system r-build-system)
     (home-page "https://github.com/hadley/lazyeval")
     (synopsis "Lazy (non-standard) evaluation in R")
@@ -1350,13 +1350,13 @@ There is also a Shiny app as a user interface in this package.")
 (define-public r-highr
   (package
     (name "r-highr")
-    (version "0.7")
+    (version "0.8")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "highr" version))
               (sha256
                (base32
-                "1dzknqk4x7iiiq1jkh9bqm5qcvs7mbqxbkn5955050payavabfya"))))
+                "0my6idnhmmgs4q1vs40y2lh56yij2p59mpwvm53wjs2zk6x1zl2b"))))
     (build-system r-build-system)
     (home-page "https://github.com/yihui/highr")
     (synopsis "Syntax highlighting for R source code")
@@ -1431,13 +1431,13 @@ emitter (http://pyyaml.org/wiki/LibYAML) for R.")
 (define-public r-knitr
   (package
     (name "r-knitr")
-    (version "1.21")
+    (version "1.22")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "knitr" version))
               (sha256
                (base32
-                "0xzymi4gkilqaa5b2ay9zk1advavzkwxf7mb064bqfb09y8rak0j"))))
+                "1iks80g1cj25rvgyf0y2jc2pmfvsq4sbgdp788w9016bk71wzdcs"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-evaluate" ,r-evaluate)
@@ -1635,13 +1635,13 @@ defined in different packages.")
 (define-public r-rlang
   (package
     (name "r-rlang")
-    (version "0.3.1")
+    (version "0.3.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rlang" version))
               (sha256
                (base32
-                "0lbi66bavca866k26dnpkxj3l106xr4a6khcsfn8i3i8w8mpnhih"))))
+                "13s8dh7nryjacp9jpi092icxf5ffkp16qxv59m923g5nkf8f03hi"))))
     (build-system r-build-system)
     (home-page "http://rlang.tidyverse.org")
     (synopsis "Functions for base types, core R and Tidyverse features")
@@ -1653,14 +1653,14 @@ like tidy evaluation.")
 (define-public r-tibble
   (package
     (name "r-tibble")
-    (version "2.0.1")
+    (version "2.1.1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "tibble" version))
        (sha256
         (base32
-         "04rxf5x9awwa9c00v9p7d3a2lqnn7j2rjg4r219hmw7cbqlwrcks"))))
+         "111jl0hdjhh7hkydxvsr5l19gb0ylxq7xrkc28awnc9pzglpgis5"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-cli" ,r-cli)
@@ -2375,13 +2375,13 @@ functions make it easy to control additional request components.")
 (define-public r-git2r
   (package
     (name "r-git2r")
-    (version "0.24.0")
+    (version "0.25.2")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "git2r" version))
               (sha256
                (base32
-                "0vfc25z4j53pc49cnp3zjwzjb72kvc0aq96wgyg10xpgvhl3z0gg"))))
+                "15kpvz6ry2r8ii5hzinjwkggc5kgmkbcpsdwzahsf8gha52w80p0"))))
     (build-system r-build-system)
     ;; This R package contains modified sources of libgit2.  This modified
     ;; version of libgit2 is built as the package is built.  Hence libgit2 is
@@ -2403,13 +2403,13 @@ pure C implementation of the Git core methods.")
 (define-public r-rstudioapi
   (package
     (name "r-rstudioapi")
-    (version "0.9.0")
+    (version "0.10")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "rstudioapi" version))
               (sha256
                (base32
-                "0gn1pvaxfh2gh2ikvxcr8f6k97ygcfr68iz6dhwlq4z71a1s4jai"))))
+                "15mbw607ncdf53mgga76n3va5zzdcjqz14nb0jcn9axwccqamic0"))))
     (build-system r-build-system)
     (home-page "https://cran.r-project.org/web/packages/rstudioapi")
     (synopsis "Safely access the RStudio API")
@@ -2580,17 +2580,21 @@ well as additional utilities such as panel and axis annotation functions.")
 (define-public r-rcpparmadillo
   (package
     (name "r-rcpparmadillo")
-    (version "0.9.200.7.0")
+    (version "0.9.200.7.1")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "RcppArmadillo" version))
               (sha256
                (base32
-                "11m04yvdh6086567dzzxchbf68fl5hxf2y32acf3f43bjqgwbv2p"))))
+                "1gy3ywzw1cx344a8xihnmflgxphy2fhci7ng85msqd1iv9gzxyk4"))))
     (properties `((upstream-name . "RcppArmadillo")))
     (build-system r-build-system)
+    ;; All needed for vignettes
     (native-inputs
-     `(("r-knitr" ,r-knitr)))  ; needed for vignettes
+     `(("r-knitr" ,r-knitr)
+       ("r-rmarkdown" ,r-rmarkdown)
+       ("ghc-pandoc" ,ghc-pandoc)
+       ("ghc-pandoc-citeproc" ,ghc-pandoc-citeproc)))
     (propagated-inputs
      `(("r-rcpp" ,r-rcpp)))
     (home-page "https://github.com/RcppCore/RcppArmadillo")
@@ -2674,14 +2678,14 @@ certain criterion, e.g., it contains a certain regular file.")
 (define-public r-rmarkdown
   (package
     (name "r-rmarkdown")
-    (version "1.11")
+    (version "1.12")
     (source
       (origin
         (method url-fetch)
         (uri (cran-uri "rmarkdown" version))
         (sha256
           (base32
-            "0yyjbh891mdqzpjkblz8510ng71i7mxmyiqr69x3rwlwk2vakk79"))))
+            "0milpdaf4nd36kq6sci9wc5dhwswl4w9c9fychfbppgjsgfp6kfv"))))
     (properties `((upstream-name . "rmarkdown")))
     (build-system r-build-system)
     (propagated-inputs
@@ -3343,14 +3347,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
 (define-public r-e1071
   (package
     (name "r-e1071")
-    (version "1.7-0.1")
+    (version "1.7-1")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "e1071" version))
        (sha256
         (base32
-         "11fqm4shmksalkazcwvzfknp3amigw7fr8wdwanqa5v5kx7ihyq9"))))
+         "1zlxz3da216q6v6r4ff60il121xwz7g7m639vzdwglhw3jjh8psw"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-class" ,r-class)))
@@ -3778,14 +3782,14 @@ It uses and relies on grid graphics and formal (S4) classes and methods.")
 (define-public r-purrr
   (package
     (name "r-purrr")
-    (version "0.3.1")
+    (version "0.3.2")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "purrr" version))
        (sha256
         (base32
-         "0fw8nyrwf009fpj3457binw5s02si226yrvn96hdivwj268ck8y2"))))
+         "0ccs78a2ylr60f3z0f7iywi8h1pwr8mz4ga78bs4pwgnwkclvir7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-magrittr" ,r-magrittr)
@@ -4292,13 +4296,13 @@ mechanism.")
 (define-public r-zoo
   (package
     (name "r-zoo")
-    (version "1.8-4")
+    (version "1.8-5")
     (source (origin
               (method url-fetch)
               (uri (cran-uri "zoo" version))
               (sha256
                (base32
-                "1pywcp86kqijdrvl42qwdy75szrag9pzj0p88zbrj2r1klb8rn5i"))))
+                "09p8gmd5ifz80ahnhiianarsr5xx3nz76jzp90d7v3fjffcrcww7"))))
     (build-system r-build-system)
     (propagated-inputs
      `(("r-lattice" ,r-lattice)))
@@ -4726,14 +4730,14 @@ models, generalized linear models and model-based clustering.")
 (define-public r-mclust
   (package
     (name "r-mclust")
-    (version "5.4.2")
+    (version "5.4.3")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "mclust" version))
        (sha256
         (base32
-         "09152swfpa3fzhmrq5cwb5kxgvrxvigv1m4v6rhcibrdhfd1x8x4"))))
+         "18x5ych9zi3y87rxi4pf6f23sl2918dp9xxpw1pqa7p7drw817p6"))))
     (build-system r-build-system)
     (native-inputs
      `(("gfortran" ,gfortran)))
@@ -4796,16 +4800,16 @@ can be efficiently implemented directly in the R language.")
 (define-public r-robustbase
   (package
     (name "r-robustbase")
-    (version "0.93-3")
+    (version "0.93-4")
     (source
      (origin
        (method url-fetch)
        (uri (cran-uri "robustbase" version))
        (sha256
         (base32
-         "1nqh1qg1qd1qrxl1w585dqx7ql55qzjny1r4f9hqxpwd7lml07cc"))))
+         "1q56y0iqp7qhavm4xnpzhs64q7l893y7yiq3b20fllpghka077pa"))))
     (build-system r-build-system)
-    (inputs
+    (native-inputs
      `(("gfortran" ,gfortran)))
     (propagated-inputs
      `(("r-deoptimr" ,r-deoptimr)))
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 4cff9665d5..0c25e03ffc 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -54,14 +54,14 @@
 (define-public ceph
   (package
     (name "ceph")
-    (version "13.2.2")
+    (version "13.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0h483n9iy0fkbqrhf7k0dzspwdpcaswkjwmc5n5c600fr6s1v9pk"))
+                "0jbs6l763clbqnq2s5jksn44yf71rhcnk85cw64fqvmv0r4ch71n"))
               (patches
                (search-patches "ceph-skip-unittest_blockdev.patch"
                                "ceph-skip-collect-sys-info-test.patch"
@@ -93,6 +93,8 @@
               (libdir (string-append lib "/lib")))
          (list (string-append "-DCMAKE_INSTALL_PREFIX=" out)
                (string-append "-DCMAKE_INSTALL_LIBDIR=" libdir)
+               (string-append "-DCMAKE_INSTALL_INCLUDEDIR="
+                              lib "/include")
                ;; We need both libdir and libdir/ceph in RUNPATH.
                (string-append "-DCMAKE_INSTALL_RPATH="
                               libdir ";" libdir "/ceph")
@@ -102,6 +104,8 @@
                (string-append "-DCMAKE_INSTALL_LIBEXECDIR=" out "/libexec")
                (string-append "-DKEYUTILS_INCLUDE_DIR="
                               (assoc-ref %build-inputs "keyutils") "/include")
+               (string-append "-DXFS_INCLUDE_DIR="
+                              (assoc-ref %build-inputs "xfsprogs") "/include")
                "-DCMAKE_INSTALL_LOCALSTATEDIR=/var"
                "-DENABLE_SHARED=ON"
                "-DWITH_SYSTEM_ROCKSDB=ON"
@@ -112,7 +116,6 @@
                "-DWITH_BABELTRACE=OFF"
                "-DWITH_LTTNG=OFF"
                "-DWITH_SPDK=OFF"
-               "-DWITH_XFS=OFF"
                "-DWITH_XIO=OFF"
                ;; Use jemalloc instead of tcmalloc.
                "-DALLOCATOR=jemalloc"))
@@ -127,11 +130,6 @@
              (let ((out (assoc-ref outputs "out"))
                    (lib (assoc-ref outputs "lib")))
 
-               ;; Make header files follow the dynamic libraries.
-               (substitute* "src/include/CMakeLists.txt"
-                 (("DESTINATION include")
-                  (string-append "DESTINATION " lib "/include")))
-
                (substitute* "cmake/modules/Distutils.cmake"
                  ;; Prevent creation of Python eggs.
                  (("setup.py install")
@@ -344,6 +342,7 @@
        ("snappy" ,snappy)
        ("udev" ,eudev)
        ("util-linux" ,util-linux)
+       ("xfsprogs" ,xfsprogs)
        ("zlib" ,zlib)))
     (home-page "https://ceph.com/")
     (synopsis "Distributed object store and file system")
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index d15fdbaddd..92d5358c5e 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2015 Dmitry Bogatov <KAction@gnu.org>
 ;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@@ -226,28 +226,27 @@ numbers of user-defined menu items efficiently.")
 (define-public st
   (package
     (name "st")
-    (version "0.8.1")
+    (version "0.8.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.suckless.org/st/st-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "09k94v3n20gg32xy7y68p96x9dq5msl80gknf9gbvlyjp3i0zyy4"))))
+        (base32 "0ddz2mdp1c7q67rd5vrvws9r0493ln0mlqyc3d73dv8im884xdxf"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ; no tests
+     '(#:tests? #f                      ; no tests
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" %output))
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-after 'unpack 'inhibit-terminfo-install
-                    (lambda _
-                      (substitute* "Makefile"
-                        (("\ttic .*") ""))
-                      #t)))))
+           (lambda _
+             (substitute* "Makefile"
+               (("\ttic .*") ""))
+             #t)))))
     (inputs
      `(("libx11" ,libx11)
        ("libxft" ,libxft)
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 5bb11b0400..500f9a8528 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -39,23 +39,77 @@
               (sha256
                (base32
                 "1iks1a3149gj89yqmqa5iry2ik2sj9sjhlhc6nfh7xq4swqgsrb5"))
-              ;; Since the update to Go 1.11, Go programs have been keeping
-              ;; spurious references to all their dependencies:
-              ;; <https://bugs.gnu.org/33620>.
-              ;; For Syncthing, this increases the size of the 'out' closure
-              ;; from 87.6 MiB to 253.5 MiB.  So, we use the bundled
-              ;; dependencies until the bug is resolved.
-;              (modules '((guix build utils)))
-;              ;; Delete bundled ("vendored") free software source code.
-;              (snippet '(begin
-;                          (delete-file-recursively "vendor")
-;                          #t))
-              ))
+              (modules '((guix build utils)))
+              ;; Delete bundled ("vendored") free software source code.
+              (snippet '(begin
+                          (delete-file-recursively "vendor")
+                          #t))))
     (build-system go-build-system)
     ;; The primary Syncthing executable goes to "out", while the auxiliary
     ;; server programs and utility tools go to "utils".  This reduces the size
     ;; of "out" by ~80 MiB.
     (outputs '("out" "utils"))
+    ;; When updating Syncthing, check 'go.mod' in the source distribution to
+    ;; ensure we are using the correct versions of these dependencies.
+    (inputs
+     `(("go-github-com-audriusbutkevicius-go-nat-pmp"
+        ,go-github-com-audriusbutkevicius-go-nat-pmp)
+       ("go-github-com-bkaradzic-go-lz4" ,go-github-com-bkaradzic-go-lz4)
+       ("go-github-com-calmh-du" ,go-github-com-calmh-du)
+       ("go-github-com-calmh-xdr" ,go-github-com-calmh-xdr)
+       ("go-github-com-chmduquesne-rollinghash"
+        ,go-github-com-chmduquesne-rollinghash)
+       ("go-github-com-gobwas-glob" ,go-github-com-gobwas-glob)
+       ("go-github-com-golang-groupcache-lru"
+        ,go-github-com-golang-groupcache-lru)
+       ("go-github-com-jackpal-gateway" ,go-github-com-jackpal-gateway)
+       ("go-github-com-kballard-go-shellquote"
+        ,go-github-com-kballard-go-shellquote)
+       ("go-github-com-lib-pq" ,go-github-com-lib-pq)
+       ("go-github-com-minio-sha256-simd" ,go-github-com-minio-sha256-simd)
+       ("go-github-com-oschwald-geoip2-golang"
+        ,go-github-com-oschwald-geoip2-golang)
+       ("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
+       ("go-github-com-rcrowley-go-metrics" ,go-github-com-rcrowley-go-metrics)
+       ("go-github-com-sasha-s-go-deadlock" ,go-github-com-sasha-s-go-deadlock)
+       ("go-github-com-syncthing-notify" ,go-github-com-syncthing-notify)
+       ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
+       ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
+       ("go-golang-org-x-time-rate" ,go-golang-org-x-time-rate)
+       ("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2)
+       ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
+       ("go-github-com-gogo-protobuf-gogoproto"
+        ,go-github-com-gogo-protobuf-gogoproto)
+       ("go-github-com-gogo-protobuf-protoc-gen-gogo"
+        ,go-github-com-gogo-protobuf-protoc-gen-gogo)
+       ("go-github-com-prometheus-client-golang-prometheus"
+        ,go-github-com-prometheus-client-golang-prometheus)
+       ("go-golang-org-x-net-bpf" ,go-golang-org-x-net-bpf)
+       ("go-golang-org-x-net-internal-iana" ,go-golang-org-x-net-internal-iana)
+       ("go-golang-org-x-net-internal-socket"
+        ,go-golang-org-x-net-internal-socket)
+       ("go-golang-org-x-net-internal-socks"
+        ,go-golang-org-x-net-internal-socks)
+       ("go-golang-org-x-net-ipv4" ,go-golang-org-x-net-ipv4)
+       ("go-golang-org-x-net-ipv6" ,go-golang-org-x-net-ipv6)
+       ("go-golang-org-x-net-proxy" ,go-golang-org-x-net-proxy)
+       ("go-golang-org-x-text-unicode-norm" ,go-golang-org-x-text-unicode-norm)
+       ("go-golang-org-x-text-transform" ,go-golang-org-x-text-transform)
+       ("go-github-com-audriusbutkevicius-recli"
+        ,go-github-com-audriusbutkevicius-recli)
+       ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)
+       ("go-github-com-vitrun-qart-qr" ,go-github-com-vitrun-qart-qr)
+       ("go-github-com-vitrun-qart-coding" ,go-github-com-vitrun-qart-coding)
+       ("go-github-com-vitrun-qart-gf256" ,go-github-com-vitrun-qart-gf256)
+       ("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
+       ("go-golang-org-x-crypto-bcrypt" ,go-golang-org-x-crypto-bcrypt)
+       ("go-golang-org-x-crypto-blowfish" ,go-golang-org-x-crypto-blowfish)
+       ("go-github-com-flynn-archive-go-shlex"
+        ,go-github-com-flynn-archive-go-shlex)
+
+       ;; For tests
+       ("go-github-com-d4l3k-messagediff" ,go-github-com-d4l3k-messagediff)))
+
     (arguments
      `(#:import-path "github.com/syncthing/syncthing"
        #:unpack-path "github.com/syncthing"
@@ -145,6 +199,33 @@ firewall.")
       (home-page "https://github.com/AudriusButkevicius/go-nat-pmp")
       (license asl2.0))))
 
+(define-public go-github-com-audriusbutkevicius-recli
+  (package
+    (name "go-github-com-audriusbutkevicius-recli")
+    (version "0.0.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/AudriusButkevicius/recli")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1m1xna1kb78pkmr1lfmvvnpk9j7c4x71j3a7c6vj7zpzc4srpsmf"))))
+    (build-system go-build-system)
+    (inputs
+     `(("go-github-com-pkg-errors" ,go-github-com-pkg-errors)
+       ("go-github-com-urfave-cli" ,go-github-com-urfave-cli)))
+    (arguments
+     `(#:import-path "github.com/AudriusButkevicius/recli"))
+    (synopsis "Reflection-based CLI generator")
+    (description "For a given struct, @code{recli} builds a set of
+@code{urfave/cli} commands which allows you to modify it from the command line.
+It is useful for generating command line clients for your application
+configuration that is stored in a Go struct.")
+    (home-page "https://github.com/AudriusButkevicius/recli")
+    (license mpl2.0)))
+
 (define-public go-github-com-bkaradzic-go-lz4
   (let ((commit "7224d8d8f27ef618c0a95f1ae69dbb0488abc33a")
         (revision "0"))
@@ -192,53 +273,49 @@ information, such as how much storage space is available, free, and used.")
     (license public-domain)))
 
 (define-public go-github-com-calmh-xdr
-  (let ((commit "08e072f9cb164f943a92eb59f90f3abc64ac6e8f")
-        (revision "0"))
-    (package
-      (name "go-github-com-calmh-xdr")
-      (version (git-version "2.0.1" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/calmh/xdr")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/calmh/xdr"))
-      (synopsis "XDR marshalling and unmarshalling")
-      (description "XDR is an External Data Representation (XDR)
+  (package
+    (name "go-github-com-calmh-xdr")
+    (version "1.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/calmh/xdr")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/calmh/xdr"))
+    (synopsis "XDR marshalling and unmarshalling")
+    (description "XDR is an External Data Representation (XDR)
 marshalling and unmarshalling library in Go.  It uses code generation and not
 reflection.")
-      (home-page "https://github.com/calmh/xdr")
-      (license expat))))
+    (home-page "https://github.com/calmh/xdr")
+    (license expat)))
 
 (define-public go-github-com-d4l3k-messagediff
-  (let ((commit "29f32d820d112dbd66e58492a6ffb7cc3106312b")
-        (revision "0"))
-    (package
-      (name "go-github-com-d4l3k-messagediff")
-      (version (git-version "1.1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/d4l3k/messagediff")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v"))))
-      (build-system go-build-system)
-      (arguments
-        `(#:import-path "github.com/d4l3k/messagediff"))
-      (synopsis "Diff arbitrary Go structs")
-      (description "Messagediff is a library for calculating diffs of arbitrary
+  (package
+    (name "go-github-com-d4l3k-messagediff")
+    (version "1.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/d4l3k/messagediff")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v"))))
+    (build-system go-build-system)
+    (arguments
+      `(#:import-path "github.com/d4l3k/messagediff"))
+    (synopsis "Diff arbitrary Go structs")
+    (description "Messagediff is a library for calculating diffs of arbitrary
 structs in the Go programming language.")
-      (home-page "https://github.com/d4l3k/messagediff")
-      (license expat))))
+    (home-page "https://github.com/d4l3k/messagediff")
+    (license expat)))
 
 (define-public go-github-com-gobwas-glob
   (let ((commit "51eb1ee00b6d931c66d229ceeb7c31b985563420")
@@ -340,31 +417,29 @@ address of the default LAN gateway.")
       (license bsd-3))))
 
 (define-public go-github-com-lib-pq
-  (let ((commit "83612a56d3dd153a94a629cd64925371c9adad78")
-        (revision "1"))
-    (package
-      (name "go-github-com-lib-pq")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/lib/pq")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "12334yigh284k5cdvb9pgxaq6n78205jcbp75ajz44vvfd4wi6qc"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/lib/pq"
-         ;; The tests seem to fail without access to the network or a running
-         ;; Postgres instance.
-         #:tests? #f))
-      (synopsis "Golang Postgres driver for Go's database/sql")
-      (description "This packages provides a pure Go Postgres driver for Go's
+  (package
+    (name "go-github-com-lib-pq")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lib/pq")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1zqnnyczaf00xi6xh53vq758v5bdlf0iz7kf22l02cal4i6px47i"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/lib/pq"
+       ;; The tests seem to fail without access to the network or a running
+       ;; Postgres instance.
+       #:tests? #f))
+    (synopsis "Golang Postgres driver for Go's database/sql")
+    (description "This packages provides a pure Go Postgres driver for Go's
 database/sql package.")
-      (home-page "https://github.com/lib/pq")
-      (license expat))))
+    (home-page "https://github.com/lib/pq")
+    (license expat)))
 
 (define-public go-github-com-oschwald-geoip2-golang
   (package
@@ -471,30 +546,28 @@ Metrics library.")
       (license bsd-2))))
 
 (define-public go-github-com-sasha-s-go-deadlock
-  (let ((commit "03d40e5dbd5488667a13b3c2600b2f7c2886f02f")
-        (revision "1"))
-    (package
-      (name "go-github-com-sasha-s-go-deadlock")
-      (version (git-version "0.1.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/sasha-s/go-deadlock")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "13p7b7pakd9k1c2k0fs1hfim3c8mivz679977ai6zb01s4aw7gyg"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/sasha-s/go-deadlock"))
-      (propagated-inputs
-       `(("go-github-com-petermattis-goid" ,go-github-com-petermattis-goid)))
-      (synopsis "Deadlock detection in go")
-      (description "This package provides tools for detecting deadlocks at
+  (package
+    (name "go-github-com-sasha-s-go-deadlock")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/sasha-s/go-deadlock")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13p7b7pakd9k1c2k0fs1hfim3c8mivz679977ai6zb01s4aw7gyg"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/sasha-s/go-deadlock"))
+    (propagated-inputs
+     `(("go-github-com-petermattis-goid" ,go-github-com-petermattis-goid)))
+    (synopsis "Deadlock detection in go")
+    (description "This package provides tools for detecting deadlocks at
 run-time in Go.")
-      (home-page "https://github.com/sasha-s/go-deadlock")
-      (license asl2.0))))
+    (home-page "https://github.com/sasha-s/go-deadlock")
+    (license asl2.0)))
 
 (define-public go-github-com-syndtr-goleveldb
   (let ((commit "34011bf325bce385408353a30b101fe5e923eb6e")
@@ -525,25 +598,23 @@ database in Go.")
       (license bsd-2))))
 
 (define-public go-github-com-thejerf-suture
-  (let ((commit "bf6ee6a0b047ebbe9ae07d847f750dd18c6a9276")
-        (revision "0"))
-    (package
-      (name "go-github-com-thejerf-suture")
-      (version (git-version "3.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/thejerf/suture")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0rzx9k408vaglwnnpgpcs6y7ff7p65915nbg33rvbaz13hxwkz3y"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/thejerf/suture"))
-      (synopsis "Supervisor trees for Go")
-      (description "Suture provides Erlang-ish supervisor trees for Go.
+  (package
+    (name "go-github-com-thejerf-suture")
+    (version "3.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/thejerf/suture")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "03bdrl78jfwk0kw40lj63ga9cxhgccgss8yi9lp5j0m0ml7921gh"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/thejerf/suture"))
+    (synopsis "Supervisor trees for Go")
+    (description "Suture provides Erlang-ish supervisor trees for Go.
 \"Supervisor trees\" -> \"sutree\" -> \"suture\" -> holds your code together
 when it's trying to die.
 
@@ -552,35 +623,8 @@ with supervision trees (such as burning all your CPU time endlessly restarting
 dead services), while also making no unnecessary demands on the \"service\"
 code, and providing hooks to perform adequate logging with in a production
 environment")
-      (home-page "https://github.com/thejerf/suture")
-      (license expat))))
-
-(define* (go-github-com-vitrun-qart-union
-           #:optional (packages (list go-github-com-vitrun-qart-coding
-                                      go-github-com-vitrun-qart-gf256
-                                      go-github-com-vitrun-qart-qr)))
-  (package
-    (name "go-github-com-vitrun-qart")
-    (version (package-version go-github-com-vitrun-qart-qr))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of qart libraries")
-    (description "This is a union of qart libraries.")
-    (home-page (package-home-page go-github-com-vitrun-qart-qr))
-    (license (package-license go-github-com-vitrun-qart-qr))))
+    (home-page "https://github.com/thejerf/suture")
+    (license expat)))
 
 (define-public go-github-com-vitrun-qart-coding
   (let ((commit "bf64b92db6b05651d6c25a3dabf2d543b360c0aa")
@@ -668,92 +712,15 @@ generation.")
       (home-page "https://github.com/vitrun/qart")
       (license bsd-3))))
 
-(define* (go-golang-org-x-net-union #:optional
-                                 (packages (list go-golang-org-x-net-ipv4
-                                                 go-golang-org-x-net-bpf
-                                                 go-golang-org-x-net-ipv6
-                                                 go-golang-org-x-net-proxy
-                                                 go-golang-org-x-net-internal-iana)))
-  (package
-    (name "go-golang-org-x-net")
-    (version (package-version go-golang-org-x-net-ipv4))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of the Go net libraries")
-    (description "A union of the Golang net libraries.")
-    (home-page (package-home-page go-golang-org-x-net-ipv4))
-    (license (package-license go-golang-org-x-net-ipv4))))
-
-(define* (go-golang-org-x-text-union #:optional
-                                  (packages (list go-golang-org-x-text-transform
-                                                  go-golang-org-x-text-unicode-norm)))
-  (package
-    (name "go-golang-org-x-text")
-    (version (package-version go-golang-org-x-text-transform))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of the Go text libraries")
-    (description "A union of the Golang text libraries.")
-    (home-page (package-home-page go-golang-org-x-text-transform))
-    (license (package-license go-golang-org-x-text-transform))))
-
-(define-public go-github-com-audriusbutkevicius-pfilter
-  (let ((commit "9dca34a5b530bfc9843fa8aa2ff08ff9821032cb")
-        (revision "2"))
-    (package
-      (name "go-github-com-audriusbutkevicius-pfilter")
-      (version (git-version "0.0.0" revision commit))
-      (source
-        (origin
-          (method git-fetch)
-          (uri (git-reference
-                 (url "https://github.com/AudriusButkevicius/pfilter.git")
-                 (commit commit)))
-          (file-name (git-file-name name version))
-          (sha256
-           (base32
-            "0i4qbnwba49db27fb1y792gcvhb0m744i9q4zgwjbypqmy3bj2a5"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/AudriusButkevicius/pfilter"))
-      (synopsis "Filter packets into mulitple virtual connections")
-      (description "Pfilter is a Go package for filtering packets into multiple
-virtual connections from a single physical connection.")
-      (home-page "https://github.com/AudriusButkevicius/pfilter")
-      (license expat))))
-
-(define-public go-github-com-chmduquesne-rollinghash-adler32
-  (let ((commit "abb8cbaf9915e48ee20cae94bcd94221b61707a2")
-        (revision "2"))
+;; XXX Syncthing actually imports 'github.com/chmduquesne/rollinghash/adler32'.
+;; Normally we'd package this module indpendenctly but the adler32 module itself
+;; imports 'github.com/chmduquesne/rollinghash/', so this is the easy way out.
+(define-public go-github-com-chmduquesne-rollinghash
+  (let ((commit "a60f8e7142b536ea61bb5d84014171189eeaaa81")
+        (revision "0"))
     (package
-      (name "go-github-com-chmduquesne-rollinghash-adler32")
-      (version (git-version "0.0.0" revision commit))
+      (name "go-github-com-chmduquesne-rollinghash")
+      (version (git-version "4.0.0" revision commit))
       (source
         (origin
           (method git-fetch)
@@ -763,40 +730,37 @@ virtual connections from a single physical connection.")
           (file-name (git-file-name name version))
           (sha256
            (base32
-            "0ylqb9r60q77qw0d6g9cg4yzadxzwcw74lfd25cw9yglyq0wgd3l"))))
+            "0fpaqq4zb0wikgbhn7vwqqj1h865f5xy195vkhivsp922p7qwsjr"))))
       (build-system go-build-system)
       (arguments
-       '(#:import-path "github.com/chmduquesne/rollinghash/adler32"
-         #:unpack-path "github.com/chmduquesne/rollinghash"))
-      (synopsis "Adler-32 rolling hash in Go")
-      (description "This package provides a Go implementation of the Adler-32
-rolling hash.")
+       '(#:import-path "github.com/chmduquesne/rollinghash/"))
+      (synopsis "Rolling hashes in Go")
+      (description "This package provides a Go implementation of several rolling
+hashes.")
       (home-page "https://github.com/chmduquesne/rollinghash")
       (license expat))))
 
 (define-public go-github-com-pkg-errors
-  (let ((commit "e881fd58d78e04cf6d0de1217f8707c8cc2249bc")
-        (revision "1"))
-    (package
-      (name "go-github-com-pkg-errors")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/pkg/errors.git")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0vfhj598jp6dzy4pbyjdrqxzb5kppw8ggvfh78g80nz11r34xnzs"))))
-      (build-system go-build-system)
-      (arguments
-       `(#:import-path "github.com/pkg/errors"))
-      (synopsis "Go error handling primitives")
-      (description "This packages provides @code{error}, which offers simple
+  (package
+    (name "go-github-com-pkg-errors")
+    (version "0.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/pkg/errors.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1"))))
+    (build-system go-build-system)
+    (arguments
+     `(#:import-path "github.com/pkg/errors"))
+    (synopsis "Go error handling primitives")
+    (description "This packages provides @code{error}, which offers simple
 error handling primitives in Go.")
-      (home-page "https://github.com/pkg/errors")
-      (license bsd-2))))
+    (home-page "https://github.com/pkg/errors")
+    (license bsd-2)))
 
 (define-public go-github-com-petermattis-goid
   (let ((commit "3db12ebb2a599ba4a96bea1c17b61c2f78a40e02")
@@ -823,39 +787,6 @@ the current goroutine's ID.")
       (home-page "https://github.com/petermattis/goid")
       (license asl2.0))))
 
-(define-public go-github-com-audriusbutkevicius-cli
-  (let ((commit "7f561c78b5a4aad858d9fd550c92b5da6d55efbb")
-        (revision "0"))
-    (package
-      (name "go-github-com-audriusbutkevicius-cli")
-      (version (git-version "0.0.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                       (url "https://github.com/AudriusButkevicius/cli.git")
-                       (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0bg26pfg25vr16jmczig2m493mja2nxjxyswz3hha7avxw20rpi5"))))
-      (build-system go-build-system)
-      (arguments
-       '(#:import-path "github.com/AudriusButkevicius/cli"
-         ;; Tests don't pass "vet" on go-1.11.  See
-         ;; https://github.com/AudriusButkevicius/cli/pull/1.
-         #:phases
-         (modify-phases %standard-phases
-           (replace 'check
-             (lambda* (#:key import-path #:allow-other-keys)
-               (invoke "go" "test"
-                       "-vet=off"
-                       import-path))))))
-      (synopsis "Library for building command-line interfaces in Go")
-      (description "This package provides a library for building command-line
-interfaces in Go.")
-      (home-page "https://github.com/AudriusButkevicius/cli")
-      (license expat))))
-
 (define-public go-github-com-kballard-go-shellquote
   (let ((commit "cd60e84ee657ff3dc51de0b4f55dd299a3e136f2")
         (revision "0"))
@@ -881,8 +812,8 @@ using sh's word-splitting rules.")
       (license expat))))
 
 (define-public go-github-com-syncthing-notify
-  (let ((commit "116c45bb5ad48777321e4984d1320d56889b6097")
-        (revision "3"))
+  (let ((commit "4e389ea6c0d84e6195eb585ffaf62c8c143306ae")
+        (revision "4"))
     (package
       (name "go-github-com-syncthing-notify")
       (version (git-version "0.0.0" revision commit))
@@ -894,7 +825,7 @@ using sh's word-splitting rules.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "14bh95pkhwmnc65bnv08p3y4flj1j7f6xxr2cgmlwrphnlp9yhl9"))))
+                  "19gvl14s1l9m82f8c2xsjcr8lmbqrvw1mxkayvfcpimvxfz0j61i"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/syncthing/notify"))
@@ -1067,6 +998,31 @@ Prometheus metrics.")
       (home-page "https://github.com/prometheus/common")
       (license asl2.0))))
 
+(define-public go-github-com-prometheus-common-model
+  (let ((commit "2e54d0b93cba2fd133edc32211dcc32c06ef72ca")
+        (revision "0"))
+    (package
+      (name "go-github-com-prometheus-common-model")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/prometheus/common.git")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "14kn5w7imcxxlfdqxl21fsnlf1ms7200g3ldy29hwamldv8qlm7j"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/prometheus/common/model"
+         #:unpack-path "github.com/prometheus/common"))
+      (synopsis "Prometheus component")
+      (description "This package provides a component of the Go Prometheus
+implementation.")
+      (home-page "https://github.com/prometheus/common")
+      (license asl2.0))))
+
 (define-public go-github-com-prometheus-procfs
   (let ((commit "b15cd069a83443be3154b719d0cc9fe8117f09fb")
         (revision "0"))
@@ -1092,20 +1048,18 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
       (license asl2.0))))
 
 (define-public go-github-com-client-golang-prometheus-promhttp
-  (let ((commit "180b8fdc22b4ea7750bcb43c925277654a1ea2f3")
-        (revision "0"))
     (package
       (name "go-github-com-client-golang-prometheus-promhttp")
-      (version (git-version "0.0.0" revision commit))
+      (version "0.9.2")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                        (url "https://github.com/prometheus/client_golang.git")
-                       (commit commit)))
+                       (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1kkfx1j9ka18ydsmdi2cdy3hs39c22b39mbc4laykmj2x93lmbdp"))))
+                  "02b4yg6rfag0m3j0i39sillcm5xczwv8h133vn12yr8qw04cnigs"))))
       (build-system go-build-system)
       (arguments
        '(#:tests? #f ; The tests require internet access
@@ -1116,8 +1070,12 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
           ,go-github-com-beorn7-perks-quantile)
          ("go-github-com-golang-protobuf-proto"
           ,go-github-com-golang-protobuf-proto)
+         ("go-github-com-prometheus-common-model"
+          ,go-github-com-prometheus-common-model)
          ("go-github-com-prometheus-client-model-go"
           ,go-github-com-prometheus-client-model-go)
+         ("go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg"
+          ,go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg)
          ("go-github-com-prometheus-common-expfmt"
           ,go-github-com-prometheus-common-expfmt)
          ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)))
@@ -1125,23 +1083,21 @@ system, kernel, and process metrics from the @file{/proc} pseudo file system.")
       (description "This package @code{promhttp} provides HTTP client and
 server tools for Prometheus metrics.")
       (home-page "https://github.com/prometheus/client_golang")
-      (license asl2.0))))
+      (license asl2.0)))
 
-(define-public go-github-com-client-golang-prometheus
-  (let ((commit "7e9098b20fb8e103a7a5691878272d7e3d703663")
-        (revision "0"))
+(define-public go-github-com-prometheus-client-golang-prometheus
     (package
       (name "go-github-com-prometheus-client-golang-prometheus")
-      (version (git-version "0.9.1" revision commit))
+      (version "0.9.2")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
                        (url "https://github.com/prometheus/client_golang.git")
-                       (commit commit)))
+                       (commit (string-append "v" version))))
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "09q8hlvgyn58hn8fmmj535hrwhqc1215czwzf7fhaqpa9zamj4w1"))))
+                  "02b4yg6rfag0m3j0i39sillcm5xczwv8h133vn12yr8qw04cnigs"))))
       (build-system go-build-system)
       (arguments
        '(#:import-path "github.com/prometheus/client_golang/prometheus"
@@ -1150,48 +1106,21 @@ server tools for Prometheus metrics.")
       (propagated-inputs
        `(("go-github-com-beorn7-perks-quantile"
           ,go-github-com-beorn7-perks-quantile)
-         ("go-github-com-golang-protobuf-proto"
-          ,go-github-com-golang-protobuf-proto)
+         ("go-github-com-prometheus-common-model" ,go-github-com-prometheus-common-model)
          ("go-github-com-prometheus-client-model-go"
           ,go-github-com-prometheus-client-model-go)
          ("go-github-com-prometheus-common-expfmt"
           ,go-github-com-prometheus-common-expfmt)
          ("go-github-com-prometheus-procfs" ,go-github-com-prometheus-procfs)
-         ("go-github-com-client-golang-prometheus-promhttp"
-          ,go-github-com-client-golang-prometheus-promhttp)))
+         ("go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg"
+          ,go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg)))
       (synopsis "Prometheus instrumentation library for Go applications")
       (description "This package provides the Go client library for the
 Prometheus monitoring and alerting system.  It has two separate parts, one for
 instrumenting application code, and one for creating clients that talk to the
 Prometheus HTTP API.")
       (home-page "https://github.com/prometheus/client_golang")
-      (license asl2.0))))
-
-(define* (go-github-com-prometheus-union
-           #:optional (packages (list go-github-com-client-golang-prometheus
-                                      go-github-com-client-golang-prometheus-promhttp)))
-  (package
-    (name "go-github-com-prometheus-union")
-    (version (package-version go-github-com-client-golang-prometheus))
-    (source #f)
-    (build-system trivial-build-system)
-    (arguments
-     '(#:modules ((guix build union))
-       #:builder (begin
-                   (use-modules (ice-9 match)
-                                (guix build union))
-                   (match %build-inputs
-                     (((names . directories) ...)
-                      (union-build (assoc-ref %outputs "out")
-                                   directories)
-                      #t)))))
-    (inputs (map (lambda (package)
-                   (list (package-name package) package))
-                 packages))
-    (synopsis "Union of Go Prometheus libraries")
-    (description "This is a union of Go Prometheus libraries")
-    (home-page (package-home-page go-github-com-client-golang-prometheus))
-    (license (package-license go-github-com-client-golang-prometheus))))
+      (license asl2.0)))
 
 (define-public go-gopkg.in-asn1-ber.v1
   (package
@@ -1248,3 +1177,49 @@ Go language.")
 language.")
     (home-page "https://gopkg.in/ldap.v2")
     (license expat)))
+
+(define-public go-github-com-flynn-archive-go-shlex
+  (let ((commit "3f9db97f856818214da2e1057f8ad84803971cff")
+        (revision "0"))
+    (package
+      (name "go-github-com-flynn-archive-go-shlex")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                       (url "https://github.com/flynn-archive/go-shlex.git")
+                       (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia"))))
+      (build-system go-build-system)
+      (arguments
+       '(#:import-path "github.com/flynn-archive/go-shlex"))
+      (synopsis "Go lexer")
+      (description "Shlex is a simple lexer for go that supports shell-style
+quoting, commenting, and escaping.")
+      (home-page "https://github.com/flynn-archive/go-shlex")
+      (license asl2.0))))
+
+(define-public go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg
+  (package
+    (name "go-github-com-prometheus-common-internal-bitbucket-org-ww-goautoneg")
+    (version "0.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/prometheus/common.git")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02kym6lcfnlq23qbv277jr0q1n7jj0r14gqg93c7wn7gc44jv3vp"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
+       #:unpack-path "github.com/prometheus/common"))
+    (synopsis "Internal Prometheus component")
+    (description "This package is an internal component of Prometheus.")
+    (home-page "https://github.com/prometheus/common")
+    (license asl2.0)))
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index a9ccfcd274..bfcefb7270 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -22,12 +22,17 @@
   #:use-module (guix download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-check)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml))
@@ -88,3 +93,47 @@ It started life as a fork of the currently unmaintained Newsbeuter.")
 (define-public newsbeuter
   ;; Newsbeuter is unmaintained with multiple CVEs, and was forked as Newsboat.
   (deprecated-package "newsbeuter" newsboat))
+
+(define-public rtv
+  (package
+    (name "rtv")
+    (version "1.26.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "rtv" version))
+        (sha256
+         (base32
+          "1aamkli1mlq2vxixlva790y0l0cbvbkz07lknajin0841sdq0411"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-environment-variables
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "HOME" (getcwd))
+             (setenv "TERM" "linux")
+             (setenv "TERMINFO" (string-append (assoc-ref inputs "ncurses")
+                                               "/share/terminfo"))
+             #t)))
+       #:tests? #f)) ; tests fail: _curses.error: nocbreak() returned ERR
+    (propagated-inputs
+     `(("python-beautifulsoup4" ,python-beautifulsoup4)
+       ("python-decorator" ,python-decorator)
+       ("python-kitchen" ,python-kitchen)
+       ("python-requests" ,python-requests)
+       ("python-six" ,python-six)))
+    (native-inputs
+     `(("ncurses" ,ncurses)
+       ("python-coveralls" ,python-coveralls)
+       ("python-coverage" ,python-coverage)
+       ("python-mock" ,python-mock)
+       ("python-pylint" ,python-pylint)
+       ("python-pytest" ,python-pytest)
+       ("python-vcrpy" ,python-vcrpy)))
+    (home-page "https://github.com/michael-lazar/rtv")
+    (synopsis "Terminal viewer for Reddit (Reddit Terminal Viewer)")
+    (description
+     "RTV provides a text-based interface to view and interact with Reddit.")
+    (license (list license:expat
+                   license:gpl3+)))) ; rtv/packages/praw
diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm
index ee21a61895..370c0f425e 100644
--- a/gnu/packages/tbb.scm
+++ b/gnu/packages/tbb.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,7 +20,7 @@
 (define-module (gnu packages tbb)
   #:use-module (guix packages)
   #:use-module (guix licenses)
-  #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages))
@@ -28,16 +28,15 @@
 (define-public tbb
   (package
     (name "tbb")
-    (version "2017_20160916")
+    (version "2019_U5")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://www.threadingbuildingblocks.org/sites/default"
-                    "/files/software_releases/source/"
-                    "tbb" version "oss_src.tgz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/01org/tbb")
+                    (commit version)))
               (sha256
                (base32
-                "1i3zy87gyzw22fvajm039w6g822qzqn7jbmznc8y8c57qpqnf330"))
+                "0390da1iya2mvn3ribjb1f8yvzsqsf5b16wn6dqbjxcz0crmwlzk"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 63709935c3..559fb3d63f 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 536a48986f..3839aa1b52 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -70,7 +70,6 @@
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages textutils)
-  #:use-module (gnu packages wm)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
diff --git a/gnu/packages/terraform.scm b/gnu/packages/terraform.scm
index f14b152fdb..b9313bbd4a 100644
--- a/gnu/packages/terraform.scm
+++ b/gnu/packages/terraform.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,7 +27,7 @@
 (define-public terraform-docs
   (package
     (name "terraform-docs")
-    (version "0.5.0")
+    (version "0.6.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -36,7 +36,7 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "12w2yr669hk5kxdb9rrzsn8hwvx8rzrc1rmn8hs9l8z1bkfhr4gg"))))
+                "1p6prhjf82qnhf1zwl9h92j4ds5g383a6g9pwwnqbc3wdwy5zx7d"))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/segmentio/terraform-docs"))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index 0c60d202a3..534934dfd1 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -3,9 +3,10 @@
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,7 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
@@ -41,6 +43,7 @@
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages regex)
@@ -102,16 +105,15 @@ based command language.")
 (define-public kakoune
   (package
     (name "kakoune")
-    (version "2018.09.04")
+    (version "2019.01.20")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/mawww/kakoune/"
                            "releases/download/v" version "/"
-                           name "-" version ".tar.bz2"))
+                           "kakoune-" version ".tar.bz2"))
        (sha256
-        (base32
-         "1qbj2hmcfs6pr5lc78z9ni5zxdyp3mr64dvms4l52716ikqcjcbs"))))
+        (base32 "15drk7i17qdiqxqkjxhrxfclryj9qzb5ymxd20dwl05y4yi064cr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -295,7 +297,7 @@ team.")
 (define-public ghostwriter
   (package
     (name "ghostwriter")
-    (version "1.6.2")
+    (version "1.7.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -304,11 +306,11 @@ team.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0251563zy0q69fzfacvalpx43y15cshb0bhshyd4w37061gh1c12"))))
+                "1pqlr08z5syqcq5p282asxwzrrm7c1w94baxyb467swh8yp3fj5m"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("qttools" ,qttools)))           ;for lrelease
+       ("qttools" ,qttools)))           ; for lrelease
     (inputs
      `(("hunspell" ,hunspell)
        ("qtbase" ,qtbase)
@@ -342,4 +344,48 @@ team.")
     (description
      "@code{ghostwriter} provides a relaxing, distraction-free writing
 environment with Markdown markup.")
-    (license license:gpl3+)))           ;icons/* under CC-BY-SA3
+    (license license:gpl3+)))           ; icons/* under CC-BY-SA3
+
+(define-public editorconfig-core-c
+  (package
+    (name "editorconfig-core-c")
+    (version "0.12.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/editorconfig/editorconfig-core-c.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0jkc69r4jwn4rih6h6cqvgljjc3ff49cxj8286mi515aczr48cm1"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'insert-tests
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((tests (assoc-ref inputs "tests")))
+               (copy-recursively tests "tests"))
+             #t)))))
+    (native-inputs
+     `(("tests" ,(origin
+                   (method git-fetch)
+                   (uri (git-reference
+                          (url "https://github.com/editorconfig/editorconfig-core-test")
+                          (commit "6ea1d8ece62cac9cf72c79dce4879b046abe1fe7"))) ; matches version
+                   (file-name (git-file-name "editorconfig-core-test" version))
+                   (sha256
+                    (base32
+                     "1sf6910idnd4bgzbj8w8f9ldsbkaqa0lh6syymwy3hfqda63acj7"))))))
+    (inputs
+     `(("pcre2" ,pcre2)))
+    (home-page "https://editorconfig.org/")
+    (synopsis "EditorConfig core library written in C")
+    (description "EditorConfig makes it easy to maintain the correct coding
+style when switching between different text editors and between different
+projects.  The EditorConfig project maintains a file format and plugins for
+various text editors which allow this file format to be read and used by those
+editors.")
+    (license license:bsd-2)))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index d55f27fd6b..7436fdeb97 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
@@ -188,6 +188,28 @@ normalization, case-folding, and other operations for data in the UTF-8
 encoding, supporting Unicode version 9.0.0.")
     (license license:expat)))
 
+(define-public libconfuse
+  (package
+    (name "libconfuse")
+    (version "3.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/martinh/libconfuse/"
+                           "releases/download/v" version
+                           "/confuse-" version ".tar.xz"))
+       (sha256
+        (base32 "02r1mmzik2m0iigbc2da3y754vj24i18r3ml5p2wzs027mjhn959"))))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/martinh/libconfuse")
+    (synopsis "Configuration file parser library")
+    (description "libconfuse is a configuration file parser library.  It
+supports sections and (lists of) values (strings, integers, floats, booleans
+or other sections), as well as some other features (such as
+single/double-quoted strings, environment variable expansion, functions and
+nested include statements).")
+    (license license:isc)))
+
 (define-public libgtextutils
   (package
     (name "libgtextutils")
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 04dbd8f002..d13f14b47e 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 188230343f..263ca9b548 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
@@ -729,7 +729,7 @@ correct OpenSSL include path.  It is intended for use in your
 (define-public perl-crypt-openssl-random
  (package
   (name "perl-crypt-openssl-random")
-  (version "0.13")
+  (version "0.15")
   (source
     (origin
       (method url-fetch)
@@ -738,8 +738,7 @@ correct OpenSSL include path.  It is intended for use in your
              version
              ".tar.gz"))
       (sha256
-        (base32
-          "0vmvrb3shrzjzri3qn524dzdasbq8zhhbpc1vmq8sx68n4jhizb0"))))
+        (base32 "1x6ffps8q7mnawmcfq740llzy7i10g3319vap0wiw4d33fm6z1zh"))))
   (build-system perl-build-system)
   (native-inputs
    `(("perl-crypt-openssl-guess" ,perl-crypt-openssl-guess)))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index a0b16db3a7..a24923c045 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
diff --git a/gnu/packages/uml.scm b/gnu/packages/uml.scm
index b4c9629769..4e8a580757 100644
--- a/gnu/packages/uml.scm
+++ b/gnu/packages/uml.scm
@@ -30,14 +30,14 @@
 (define-public plantuml
   (package
     (name "plantuml")
-    (version "1.2019.2")
+    (version "1.2019.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/plantuml/"
                                   version "/plantuml-" version ".tar.gz"))
               (sha256
                (base32
-                "0hqj2crf6yg40naiwlnnym4c6r0wbz5vr8729z0daggnyg8vqniz"))))
+                "0p2mqav0qfc6kmkhb2n1vjysffnvpsx4yal68nl0yrh5vd3bnmza"))))
     (build-system ant-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 4e5ca28784..90b3a98bc1 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
@@ -68,6 +68,7 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages groff)
+  #:use-module (gnu packages guile)
   #:use-module (gnu packages haskell)
   #:use-module (gnu packages haskell-check)
   #:use-module (gnu packages haskell-crypto)
@@ -526,7 +527,7 @@ everything from small to very large projects with speed and efficiency.")
 (define-public libgit2
   (package
     (name "libgit2")
-    (version "0.27.7")
+    (version "0.28.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/libgit2/libgit2/"
@@ -534,9 +535,9 @@ everything from small to very large projects with speed and efficiency.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0c95pbv7hwclwmn51nqnh1lb0cajpcdb24pbdzcir6vmhfj3am0s"))
-              (patches (search-patches "libgit2-mtime-0.patch"
-                                       "libgit2-oom-test.patch"))
+                "0swk2dyq5a4p1jn5wvbcsrxckhh808vifxz5y8w663avg541188c"))
+              (patches (search-patches "libgit2-avoid-python.patch"
+                                       "libgit2-mtime-0.patch"))
 
               ;; Remove bundled software.
               (snippet '(begin
@@ -562,10 +563,10 @@ everything from small to very large projects with speed and efficiency.")
            (lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
     (inputs
      `(("libssh2" ,libssh2)
-       ("http-parser" ,http-parser)
-       ("python" ,python-wrapper)))
+       ("http-parser" ,http-parser)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("guile" ,guile-2.2)
+       ("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; These two libraries are in 'Requires.private' in libgit2.pc.
      `(("openssl" ,openssl)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 50e27b850f..c8d72bbeac 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
@@ -377,6 +377,7 @@ H.264 (MPEG-4 AVC) video streams.")
                                "lib/utf8-cpp"))
                    #t))))
     (build-system gnu-build-system)
+    (outputs '("out" "gui")) ; "mkvtoolnix-gui" brings the closure size from ~300 MB to 1.5+ GB.
     (inputs
      `(("boost" ,boost)
        ("bzip2" ,bzip2)
@@ -432,7 +433,34 @@ H.264 (MPEG-4 AVC) video streams.")
              (invoke "rake" "tests/unit")))
          (replace 'install
            (lambda _
-             (invoke "rake" "install"))))))
+             (invoke "rake" "install")))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Move the Qt interface to "gui".
+             (let* ((out (assoc-ref outputs "out"))
+                    (gui (assoc-ref outputs "gui"))
+                    (strip-store-dir (lambda (path)
+                                       (substring path (string-prefix-length out path)))))
+               (for-each
+                (lambda (file)
+                  (mkdir-p (string-append gui (dirname file)))
+                  (rename-file (string-append out file)
+                               (string-append gui file)))
+                (append '("/bin/mkvtoolnix-gui"
+                          "/share/applications/org.bunkus.mkvtoolnix-gui.desktop"
+                          "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml"
+                          "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml")
+                        (map strip-store-dir (find-files out "\\.ogg$"))
+                        (map strip-store-dir (find-files out "mkvtoolnix-gui\\.png$"))
+                        (map strip-store-dir (find-files out "mkvtoolnix-gui\\.1"))))
+               (for-each
+                (lambda (file)
+                  (delete-file-recursively (string-append out file)))
+                '("/share/applications"
+                  "/share/metainfo"
+                  "/share/mime"
+                  "/share/mkvtoolnix")))
+             #t)))))
     (home-page "https://mkvtoolnix.download")
     (synopsis "Tools to create, alter and inspect Matroska files")
     (description
@@ -642,15 +670,14 @@ SMPTE 314M.")
 (define-public libmatroska
   (package
     (name "libmatroska")
-    (version "1.4.9")
+    (version "1.5.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://dl.matroska.org/downloads/"
-                           name "/" name "-" version ".tar.xz"))
+                           "libmatroska/libmatroska-" version ".tar.xz"))
        (sha256
-        (base32
-         "1j4mjzx6mjzfjf9hz8g4w84krf5jccmr5cyynll0j1vwv3aiv9iq"))))
+        (base32 "07md2gvy3x92ym2k449740mdji6mhknlajkndnhi507s4wcdrvzh"))))
     (build-system cmake-build-system)
     (inputs
      `(("libebml" ,libebml)))
@@ -728,14 +755,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "4.1.1")
+    (version "4.1.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "11id9pm4azfrhpa4vr2yaw31dzgd55kl1zsxwn24sczx9n14jdrp"))))
+               "0yrl6nij4b1pk1c4nbi80857dsd760gziiss2ls19awq8zj0lpxr"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -1105,13 +1132,11 @@ videoformats depend on the configuration flags of ffmpeg.")
                (substitute* "modules/text_renderer/freetype/text_layout.c"
                  (("# define FRIBIDI_NO_DEPRECATED 1") ""))
 
-               ;; Fix build against Qt 5.11.
-               (substitute* "modules/gui/qt/actions_manager.cpp"
-                 (("#include <vlc_keys.h>") "#include <vlc_keys.h>
-#include <QAction>"))
-               (substitute* "modules/gui/qt/components/simple_preferences.cpp"
-                 (("#include <QFont>") "#include <QFont>
-#include <QButtonGroup>"))
+               ;; Fix build with libssh2 > 1.8.0:
+               ;; <https://trac.videolan.org/vlc/ticket/22060>
+               ;; <https://git.videolan.org/?p=vlc.git;a=commit;h=11449b5cd8b415768e010d9b7c1d6ba3cea21f82>
+               (substitute* "modules/access/sftp.c"
+                 (("010801") "010900"))
                #t)))
          (add-after 'strip 'regenerate-plugin-cache
            (lambda* (#:key outputs #:allow-other-keys)
@@ -1412,7 +1437,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.03.09")
+    (version "2019.03.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
@@ -1420,7 +1445,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1g46mrmzr31b2r6x0g6wmg3j00qc8l6cbzmdik0l5vwjfcrdvghf"))))
+                "0r31q7j3gg2zfw3b45jancxl7mmr2gin8dyfx5dgyyp92ss8hih7"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -2193,7 +2218,7 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "22.0.3")
+    (version "23.0.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2202,10 +2227,10 @@ be used for realtime video capture via Linux-specific APIs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0ri9qkqk3h71b1a5bwpjzqdr21bbmfqbykg48l779d20zln23n1i"))))
+                "1c0a5vy4h3qwz69qw3bydyk7r651ib5a9jna4yj6c25p3p9isdvp"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f)) ; no tests
+     `(#:tests? #f))                    ; no tests
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -3388,7 +3413,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.2.0")
+    (version "0.2.1")
     (source
       (origin
         (method url-fetch)
@@ -3400,8 +3425,7 @@ transitions, and effects and then export your film to many common formats.")
                    (string-append "https://code.videolan.org/videolan/dav1d/-/"
                                   "archive/" version "/dav1d-" version ".tar.bz2")))
         (sha256
-         (base32
-          "0q0dbbl91syjnkygz268gh4b7mdcgl6hldj300a4cbqidsadpl5p"))))
+         (base32 "0cp7harg2gf61v35hyki2ddk9yr0xli9bkk3smxblabmq9rv5cs3"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
@@ -3438,3 +3462,72 @@ speed and correctness.")
       (description "Wlstream is a screen capture tool for recording audio and
 video from a Wayland session.")
       (license license:lgpl2.1+))))
+
+(define-public gaupol
+  (package
+    (name "gaupol")
+    (version "1.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/otsaloma/gaupol/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0dk44fmcs86ymfxfbpdbrr4x5nn5hnv57wkqjyw61g779xjhlrd2"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python-pygobject" ,python-pygobject)
+       ("gtk+" ,gtk+)
+       ("python-pycairo" ,python-pycairo) ; Required or else clicking on a subtitle line fails.
+       ("python-chardet" ,python-chardet) ; Optional: Character encoding detection.
+       ("gtkspell3" ,gtkspell3)           ; Optional: Inline spell-checking.
+       ("iso-codes" ,iso-codes)           ; Optional: Translations.
+       ("gstreamer" ,gstreamer)
+       ("gst-libav" ,gst-libav)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("gst-plugins-good" ,gst-plugins-good)
+       ("gst-plugins-bad" ,gst-plugins-bad)
+       ("gst-plugins-ugly" ,gst-plugins-ugly)))
+    (arguments
+     `(#:tests? #f                      ; Tests seem to require networking.
+       #:phases
+       (modify-phases %standard-phases
+         ;; gaupol's setup.py script does not support one of the Python build
+         ;; system's default flags, "--single-version-externally-managed".
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "python" "setup.py" "install"
+                     (string-append "--prefix=" (assoc-ref outputs "out"))
+                     "--root=/")))
+         (add-after 'install 'wrap-gaupol
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
+                   (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+               (wrap-program (string-append out "/bin/gaupol")
+                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
+                 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+             #t))
+         (add-after 'unpack 'patch-data-dir
+           ;; Fix some path variables that setup.py seems to garble.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "setup.py"
+                 (("DATA_DIR = \\{!r\\}\"\\.format\\(data_dir\\)")
+                  (string-append "DATA_DIR = '" out "/share/gaupol'\""))
+                 (("LOCALE_DIR = \\{!r\\}\"\\.format\\(locale_dir\\)")
+                  (string-append "LOCALE_DIR = '" out "/share/locale'\"")))
+               #t))))))
+    (synopsis "Editor for text-based subtitles")
+    (description
+     "Gaupol supports multiple subtitle file formats and provides means of
+creating subtitles, editing texts and timing subtitles to match video.  The
+user interface features a builtin video player and is designed with attention
+to convenience of translating and batch processing of multiple documents.")
+    (home-page "https://otsaloma.io/gaupol/")
+    (license license:gpl3+)))
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index 6a98f0a5a4..56deb12c3d 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -55,6 +55,7 @@
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages shells)
   #:use-module (gnu packages tcl)
+  #:use-module (gnu packages text-editors)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
@@ -642,6 +643,59 @@ are detected, the user is notified.")
     (home-page "https://github.com/vim-syntastic/syntastic")
     (license license:wtfpl2)))
 
+(define-public editorconfig-vim
+  (package
+    (name "editorconfig-vim")
+    (version "0.3.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/editorconfig/editorconfig-vim.git")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32
+          "0vssfl1wjq0mv0p30c3dszwrh4yy90vwxmmdgqaxf5rykik7bdfd"))
+        (modules '((guix build utils)))
+        (snippet
+         '(begin
+            (delete-file-recursively "plugin/editorconfig-core-py") #t))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; tests require ruby and plugin-test repository
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (add-after 'unpack 'patch-editorconfig-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((editorconfig (assoc-ref inputs "editorconfig-core")))
+               (substitute* "plugin/editorconfig.vim"
+                 (("/opt") editorconfig))
+               #t)))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (vimfiles (string-append out "/share/vim/vimfiles"))
+                    (doc (string-append vimfiles "/doc"))
+                    (plugin (string-append vimfiles "/plugin"))
+                    (autoload (string-append vimfiles "/autoload")))
+               (copy-recursively "doc" doc)
+               (copy-recursively "autoload" autoload)
+               (copy-recursively "plugin" plugin)
+               #t))))))
+    (inputs
+     `(("editorconfig-core" ,editorconfig-core-c)))
+    (home-page "https://editorconfig.org/")
+    (synopsis "EditorConfig plugin for Vim")
+    (description "EditorConfig makes it easy to maintain the correct coding
+style when switching between different text editors and between different
+projects.  The EditorConfig project maintains a file format and plugins for
+various text editors which allow this file format to be read and used by those
+editors.")
+    (license license:bsd-2)))
+
 (define-public neovim-syntastic
   (package
     (inherit vim-syntastic)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 5b5d5a518a..4bdbbb39b6 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -984,6 +984,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
     (arguments
      '(#:import-path "github.com/projectatomic/skopeo"
        #:install-source? #f
+       #:tests? #f ; The tests require Docker
        #:phases
        (modify-phases %standard-phases
          (replace 'build
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 6475a738d4..6155c008fa 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -35,6 +35,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages base)
   #:use-module (gnu packages check)
   #:use-module (gnu packages autotools)
@@ -118,10 +119,10 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
    (home-page "http://www.unix-ag.uni-kl.de/~massar/vpnc/")))
 
 (define-public vpnc-scripts
-  (let ((commit "07c3518dd6b8dc424e9c3650a62bed994a4dcbe1"))
+  (let ((commit "1000e0f6dd7d6bff163169a46359211c1fc3a6d2"))
     (package
       (name "vpnc-scripts")
-      (version (string-append "20180226." (string-take commit 7)))
+      (version (string-append "20190116." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri
@@ -131,7 +132,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "02d29nrmnj6kfa889cavqn1pkn9ssb5gyp4lz1v47spwx7abpdi7"))))
+                  "1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak"))))
       (build-system gnu-build-system)
       (inputs `(("coreutils" ,coreutils)
                 ("grep" ,grep)
@@ -517,3 +518,31 @@ retrieving configuration of WireGuard network tunnel interfaces, and a patch
 that can be applied to a Linux kernel source tree in order to build it with
 WireGuard support.")
     (license license:gpl2)))
+
+(define-public xl2tpd
+  (package
+    (name "xl2tpd")
+    (version "1.3.13")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/xelerance/xl2tpd")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "1nzkmhi9arwd4smhr07l0sssx46w48z0cblv7xcz25wg4hw86mcd"))
+              (file-name (string-append "xl2tpd-" version "-checkout"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list (string-append "DESTDIR=" %output)
+                          "CC=gcc")
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))
+       #:tests? #f)) ;; no tests provided
+    (inputs `(("libpcap" ,libpcap)))
+    (home-page "https://www.xelerance.com/software/xl2tpd/")
+    (synopsis "Layer 2 Tunnelling Protocol Daemon (RFC 2661)")
+    (description
+     "xl2tpd is an implementation of the Layer 2 Tunnelling Protocol (RFC 2661).
+L2TP allows you to tunnel PPP over UDP.")
+    (license license:gpl2)))
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 7517d24b69..0c7e22bb5e 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -209,20 +209,14 @@ interpretation of the specifications for these languages.")
              (substitute* "CMakeLists.txt" ((".*spirv_tools_commit_id.h.*") ""))
              #t)))
        #:configure-flags (list
-                          "-DBUILD_LAYERS=OFF" ; FIXME: Fails to build.
                           "-DBUILD_TESTS=OFF" ; FIXME: Needs 'googletest' submodule.
                           (string-append "-DCMAKE_INSTALL_LIBDIR="
                                          (assoc-ref %outputs "out") "/lib"))))
-    (inputs `(("glslang" ,glslang)
-              ("libxcb" ,libxcb)
-              ("libx11" ,libx11)
-              ("libxrandr" ,libxrandr)
-              ("mesa" ,mesa)
-              ("spirv-tools" ,spirv-tools)
-              ("vulkan-headers" ,vulkan-headers)
-              ("wayland" ,wayland)))
-    (native-inputs `(("pkg-config" ,pkg-config)
-                     ("python" ,python)))
+    (native-inputs `(("libxrandr" ,libxrandr)
+                     ("pkg-config" ,pkg-config)
+                     ("python" ,python)
+                     ("vulkan-headers" ,vulkan-headers)
+                     ("wayland" ,wayland)))
     (home-page
      "https://github.com/KhronosGroup/Vulkan-Loader")
     (synopsis "Khronos official ICD loader and validation layers for Vulkan")
@@ -259,13 +253,12 @@ and the ICD.")
     (inputs
      `(("glslang" ,glslang)
        ("libxrandr" ,libxrandr)
-       ("mesa" ,mesa)
-       ("vulkan-headers" ,vulkan-headers)
        ("vulkan-loader" ,vulkan-loader)
        ("wayland" ,wayland)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
-       ("python" ,python)))
+       ("python" ,python)
+       ("vulkan-headers" ,vulkan-headers)))
     (arguments
      `(#:tests? #f                      ; No tests.
        #:configure-flags (list (string-append "-DGLSLANG_INSTALL_DIR="
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 070b8f705d..1749ad0b71 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
@@ -749,33 +749,34 @@ current version of any major web browser.")
     (name "rapidjson")
     (version "1.1.0")
     (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/Tencent/rapidjson.git")
-                   (commit (string-append "v" version))))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
-             (modules '((guix build utils)))
-             (snippet
-              '(begin
-                 ;; Remove code using the problematic JSON license (see
-                 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
-                 (delete-file-recursively "bin/jsonchecker")
-                 #t))))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Tencent/rapidjson.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Remove code using the problematic JSON license (see
+                  ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
+                  (delete-file-recursively "bin/jsonchecker")
+                  #t))))
     (build-system cmake-build-system)
     (arguments
-     `(,@(if (string-prefix? "aarch64" (or (%current-target-system)
-                                           (%current-system)))
-           '(#:phases
-             (modify-phases %standard-phases
-               (add-after 'unpack 'patch-aarch-march-detection
-                 (lambda _
-                   (substitute* (find-files "." "^CMakeLists\\.txt$")
-                     (("native") "armv8-a"))
-                   #t))))
-           '())))
+     (if (string-prefix? "aarch64" (or (%current-target-system)
+                                       (%current-system)))
+         '(#:phases
+           (modify-phases %standard-phases
+             (add-after 'unpack 'patch-aarch-march-detection
+               (lambda _
+                 (substitute* (find-files "." "^CMakeLists\\.txt$")
+                   (("native") "armv8-a"))
+                 #t))))
+         ;; Disable CPU optimization for reproducibility.
+         '(#:configure-flags '("-DRAPIDJSON_ENABLE_INSTRUMENTATION_OPT=OFF"))))
     (home-page "https://github.com/Tencent/rapidjson")
     (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
     (description
@@ -1337,25 +1338,24 @@ language known as SASS.")
 (define-public perl-apache-logformat-compiler
   (package
     (name "perl-apache-logformat-compiler")
-    (version "0.33")
+    (version "0.35")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
                            "Apache-LogFormat-Compiler-" version ".tar.gz"))
        (sha256
-        (base32
-         "17blk3zhp05azgypn25ydxf3d7fyfgr9bxyiv7xkchhqma96vwqv"))))
+        (base32 "06i70ydxk2wa2rcqn16842kra2qz3jwk0vk1abq8lah4180c0m0n"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-http-message" ,perl-http-message)
-       ("perl-module-build" ,perl-module-build)
+       ("perl-module-build-tiny" ,perl-module-build-tiny)
        ("perl-test-mocktime" ,perl-test-mocktime)
        ("perl-try-tiny" ,perl-try-tiny)
        ("perl-uri" ,perl-uri)))
     (propagated-inputs
      `(("perl-posix-strftime-compiler" ,perl-posix-strftime-compiler)))
-    (arguments `(#:tests? #f))          ;TODO: Timezone test failures
+    (arguments `(#:tests? #f))          ; TODO: Timezone test failures
     (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
     (synopsis "Compile a log format string to perl-code")
     (description "This module provides methods to compile a log format string
@@ -1420,14 +1420,14 @@ action, which will forward to the first available view.")
 (define-public perl-catalyst-action-rest
   (package
     (name "perl-catalyst-action-rest")
-    (version "1.20")
+    (version "1.21")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
                                   "Catalyst-Action-REST-" version ".tar.gz"))
               (sha256
                (base32
-                "1mpa64p61f3dp24xnhdraswch4sqj5vyv1iivcvvh5h0xi0haiy0"))))
+                "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-requires" ,perl-test-requires)
@@ -1780,15 +1780,14 @@ formats.")
 (define-public perl-catalyst-plugin-session
   (package
     (name "perl-catalyst-plugin-session")
-    (version "0.40")
+    (version "0.41")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
                            "Catalyst-Plugin-Session-" version ".tar.gz"))
        (sha256
-        (base32
-         "171vi9xcl775scjaw4fcfdmqvz0rb1nr0xxg2gb3ng6bjzpslhgv"))))
+        (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)
@@ -2267,15 +2266,14 @@ HTTP requests.")
 (define-public perl-cgi-simple
   (package
     (name "perl-cgi-simple")
-    (version "1.15")
+    (version "1.21")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
                            "CGI-Simple-" version ".tar.gz"))
        (sha256
-        (base32
-         "013dcy9k4sj9alkksk5aqz65ryxw0rxgg71c7w666y941gd8n46q"))))
+        (base32 "1wzc2igs4khmj7zfahvs87c24p9ks8hnqhhsyviyiix53xx2y6sg"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-io-stringy" ,perl-io-stringy) ; for IO::Scalar
@@ -2437,15 +2435,14 @@ which can be used to parse directory listings.")
 (define-public perl-finance-quote
   (package
    (name "perl-finance-quote")
-   (version "1.38")
+   (version "1.47")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/"
                           "Finance-Quote-" version ".tar.gz"))
       (sha256
-       (base32
-        "0zhqb27y4vdxn476s2kwm9zl2f970yjcyyybnjm9b406krr2fm59"))
+       (base32 "0gzbq85738f299jaw4nj3ljnka380j2y6yspmyl71rgfypqjvbr7"))
       (patches (search-patches
                 "perl-finance-quote-unuse-mozilla-ca.patch"))))
    (build-system perl-build-system)
@@ -2573,15 +2570,14 @@ composed of HTML::Element style components.")
 (define-public perl-html-lint
   (package
     (name "perl-html-lint")
-    (version "2.26")
+    (version "2.32")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
                            "HTML-Lint-" version ".tar.gz"))
        (sha256
-        (base32
-         "02vi1s4sw3hjnndxd6s91cp54iw5pg8n5kl9v0109dfxzn1n9bnl"))))
+        (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-html-parser" ,perl-html-parser)
@@ -3085,15 +3081,15 @@ select or poll.")
 (define-public perl-libwww
   (package
     (name "perl-libwww")
-    (version "6.35")
+    (version "6.37")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/E/ET/ETHER/libwww-perl-"
+                   "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "0lsrr8r61b67f9wrynkhdhldw5yic4d7cd78zi52q59jgf6mg8nx"))))
+               "04a24cx9gs070rvlwf5kanz03y7nnq9k2nmpr01plnm059iprvf6"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -3406,16 +3402,15 @@ already set.")
 (define-public perl-plack-middleware-methodoverride
   (package
     (name "perl-plack-middleware-methodoverride")
-    (version "0.11")
+    (version "0.20")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://cpan/authors/id/D/DW/DWHEELER/"
+       (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
                            "Plack-Middleware-MethodOverride-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1hb8dx7i4vs74n0p737wrvpdnnw6argxrjpr6kj6432zabp8325z"))))
+        (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -3432,7 +3427,7 @@ can say what method it actually meant.")
 (define-public perl-plack-middleware-removeredundantbody
   (package
     (name "perl-plack-middleware-removeredundantbody")
-    (version "0.05")
+    (version "0.07")
     (source
      (origin
        (method url-fetch)
@@ -3440,8 +3435,7 @@ can say what method it actually meant.")
                            "Plack-Middleware-RemoveRedundantBody-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1n3wm0zi8dnk54jx937asl951lslj3jvw0fry4jpzsibg4f6wrx0"))))
+        (base32 "1hz3kgb5vw4r02gfk9i911f5ykvz55lrsx45bdcllk2bszal3f34"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-plack" ,perl-plack)))
@@ -3455,7 +3449,7 @@ required.")
 (define-public perl-plack-middleware-reverseproxy
   (package
     (name "perl-plack-middleware-reverseproxy")
-    (version "0.15")
+    (version "0.16")
     (source
      (origin
        (method url-fetch)
@@ -3463,8 +3457,7 @@ required.")
                            "Plack-Middleware-ReverseProxy-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "1zmsccdy6wr5hxzj07r1nsmaymyibk87p95z0wzknjw10lwmqs9f"))))
+        (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-install" ,perl-module-install)))
@@ -3480,15 +3473,14 @@ and stop fake requests using 'enable_if' directive in your app.psgi.")
 (define-public perl-plack-test-externalserver
   (package
     (name "perl-plack-test-externalserver")
-    (version "0.01")
+    (version "0.02")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
                            "Plack-Test-ExternalServer-" version ".tar.gz"))
        (sha256
-        (base32
-         "1dbg1p3rgvvbkkpvca5jlc2mzx8iqyiybk88al93pvbca65h1g7h"))))
+        (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-plack" ,perl-plack)))
@@ -3502,15 +3494,14 @@ either mocked HTTP or a locally spawned server.")
 (define-public perl-test-tcp
   (package
     (name "perl-test-tcp")
-    (version "2.06")
+    (version "2.19")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/T/TO/TOKUHIROM/"
                            "Test-TCP-" version ".tar.gz"))
        (sha256
-        (base32
-         "0acjwm21y2an4f3fasci9qa0isakh9cgp74fk0bzcdi506xmcjbi"))))
+        (base32 "14ahzklq3xgmwj58p9vdcfgpggrmh3nigq5mzqk4wakbb6fjs0fx"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-test-sharedfork" ,perl-test-sharedfork)))
@@ -3523,15 +3514,14 @@ either mocked HTTP or a locally spawned server.")
 (define-public perl-test-www-mechanize
   (package
     (name "perl-test-www-mechanize")
-    (version "1.50")
+    (version "1.52")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
                            "Test-WWW-Mechanize-" version ".tar.gz"))
        (sha256
-        (base32
-         "097pl87vdbxbb56vawzvs6ikrlb8nz3dx223kjjbdn3jlli3jjhg"))))
+        (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-carp-assert-more" ,perl-carp-assert-more)
@@ -3706,14 +3696,14 @@ methods for WebSocket URIs as it does for HTTP URIs.")
 (define-public perl-uri-template
   (package
     (name "perl-uri-template")
-    (version "0.23")
+    (version "0.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0nnijyv4n5qfg7l94j7fmvqy9cbq3gl9sz9anmgsiprmkmpk419j"))))
+                "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
     (build-system perl-build-system)
     (inputs
      `(("perl-uri" ,perl-uri)))
@@ -3766,15 +3756,14 @@ library.")
 (define-public perl-www-mechanize
   (package
     (name "perl-www-mechanize")
-    (version "1.89")
+    (version "1.91")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
                            "WWW-Mechanize-" version ".tar.gz"))
        (sha256
-        (base32
-         "1mxx362vqiniw8vi6k3j7v9b1s7012irhfcblcz1p6jz9cjqi7mh"))))
+        (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
     (build-system perl-build-system)
     (native-inputs                      ;only for tests
      `(("perl-cgi" ,perl-cgi)
@@ -4812,13 +4801,13 @@ deployments.")
   (package
     (name "varnish")
     (home-page "https://varnish-cache.org/")
-    (version "6.1.1")
+    (version "6.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
               (sha256
                (base32
-                "0gf9hzzrr1lndbbqi8cwlfasi7l517cy3nbgna88i78lm247rvp0"))))
+                "0lwfk2gq99c653h5f51fs3j37r0gh2pf0p4w5z986nm2mi9z6yn3"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
@@ -4826,10 +4815,6 @@ deployments.")
                                (string-append "PTHREAD_CC="
                                               (assoc-ref %build-inputs "gcc")
                                               "/bin/gcc")
-                               ;; XXX: Disable PCRE-JIT to work around a segmentation
-                               ;; fault when using jemalloc 5.x:
-                               ;; <https://github.com/varnishcache/varnish-cache/issues/2817>
-                               "--disable-pcre-jit"
                                "--localstatedir=/var")
        #:phases
        (modify-phases %standard-phases
@@ -4841,6 +4826,8 @@ deployments.")
                (("/bin/sh") (which "sh")))
              (substitute* "bin/varnishd/mgt/mgt_shmem.c"
                (("rm -rf") (string-append (which "rm") " -rf")))
+             (substitute* "bin/varnishtest/vtc_main.c"
+               (("/bin/rm") (which "rm")))
              #t))
          (add-before 'install 'patch-Makefile
            (lambda _
@@ -6200,24 +6187,25 @@ in Perl but is not nearly as capable as @code{HTML::Tidy}.")
 (define-public geomyidae
   (package
     (name "geomyidae")
-    (version "0.31")
+    (version "0.34")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "http://git.r-36.net/geomyidae/snapshot/"
-                           "geomyidae-" version ".tar.bz2"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://r-36.net/geomyidae")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1ih7220c6mgq4r7blm4kx3pxbl53sph58lqgwci6cmi3c0sq5c3x"))))
+        (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags (list "CC=gcc"
                           (string-append "PREFIX="
                                          (assoc-ref %outputs "out")))
-       #:tests? #f                                ;no tests
+       #:tests? #f                      ; no tests
        #:phases (modify-phases %standard-phases
                   (delete 'configure))))
-    (home-page "http://git.r-36.net/geomyidae")
+    (home-page "http://r-36.net/scm/geomyidae/file/README.html")
     (synopsis "Small Gopher server")
     (description
      "Geomyidae is a server for distributed hypertext protocol Gopher.  Its
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index 6d2d9ea09b..c7a57f5ec4 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -310,7 +310,7 @@ integrate Windows applications into your desktop.")
 (define-public wine-staging-patchset-data
   (package
     (name "wine-staging-patchset-data")
-    (version "4.3")
+    (version "4.4")
     (source
      (origin
        (method git-fetch)
@@ -320,7 +320,7 @@ integrate Windows applications into your desktop.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "14plsw52s4w0wpm0rici8b7amb51krdrby03652isvzxqr4ndip6"))))
+         "1pk0p37p2pbdsikj6987pg70f9a5n2ki8vnhcj4ngh1rhg6iqgyw"))))
     (build-system trivial-build-system)
     (native-inputs
      `(("bash" ,bash)
@@ -366,7 +366,7 @@ integrate Windows applications into your desktop.")
               (file-name (string-append name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1d0gbwc8ll4mfxilw9j4vdzqlnracr6y8iss27nfg1qh0q7vbf9x"))))
+                "1c072a2d56x43alv9pvahasfrdb8k0y0f540xpzjjhqb9g7hjfnv"))))
     (inputs `(("autoconf" ,autoconf) ; for autoreconf
               ("faudio" ,faudio)
               ("ffmpeg" ,ffmpeg)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 4a6fc62069..0a05ff4ae4 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
@@ -83,31 +83,10 @@
   #:use-module (gnu packages video)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages textutils)
   #:use-module (guix download)
   #:use-module (guix git-download))
 
-(define-public libconfuse
-  (package
-    (name "libconfuse")
-    (version "3.2.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/martinh/libconfuse/"
-                                  "releases/download/v" version
-                                  "/confuse-" version ".tar.xz"))
-              (sha256
-               (base32
-                "02r1mmzik2m0iigbc2da3y754vj24i18r3ml5p2wzs027mjhn959"))))
-    (build-system gnu-build-system)
-    (home-page "https://github.com/martinh/libconfuse")
-    (synopsis "Configuration file parser library")
-    (description "libconfuse is a configuration file parser library.  It
-supports sections and (lists of) values (strings, integers, floats, booleans
-or other sections), as well as some other features (such as
-single/double-quoted strings, environment variable expansion, functions and
-nested include statements).")
-    (license license:isc)))
-
 (define-public bspwm
   (package
     (name "bspwm")
@@ -504,15 +483,15 @@ desktop environment.")
 (define-public xmonad
   (package
     (name "xmonad")
-    (version "0.14.2")
+    (version "0.15")
     (synopsis "Tiling window manager")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://hackage/package/xmonad/"
-                                  name "-" version ".tar.gz"))
+                                  "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "0gqyivpw8z1x73p1l1fpyq1wc013a1c07r6xn1a82liijs91b949"))))
+                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
@@ -597,15 +576,14 @@ Haskell, no knowledge of the language is required to install and use it.")
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
-    (version "0.14")
+    (version "0.15")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32
-         "1660w3xhbfrlq8b8s1rviq2mcn1vyqpypli4023gqxwry52brk6y"))))
+        (base32 "0r9yzgy67j4mi3dyxx714f0ssk5qzca5kh4zw0fhiz1pf008cxms"))))
     (build-system haskell-build-system)
     (propagated-inputs
      `(("ghc-old-time" ,ghc-old-time)
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 40e98e3ffc..c0333fbc82 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -17,7 +17,7 @@
 ;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
@@ -179,7 +179,7 @@ program.")
                        "install_manpage"
                        "install_bash_completion"
                        "install_launcher"))))))
-      (synopsis "Auto-detect connected displays and load appropiate setup")
+      (synopsis "Auto-detect connected displays and load appropriate setup")
       (description "Autorandr wraps around xrandr to help with X11
 multi-screen configuration management.  It allows the user to create profiles
 for various multi-screen setups.  Autorandr automatically detects the profiles
@@ -391,21 +391,24 @@ rasterisation.")
          (base32
           "08yimlp6jir1rs5ajgdx74xa5qdzcqahpdzdk0rmkmhh7vdcrl3p"))
         (patches (search-patches "libdrm-symbol-check.patch"))))
-    (build-system gnu-build-system)
+    (build-system meson-build-system)
     (arguments
      `(#:configure-flags
        '(,@(match (%current-system)
-             ("armhf-linux"
-              '("--enable-exynos-experimental-api"
-                "--enable-omap-experimental-api"
-                "--enable-etnaviv-experimental-api"
-                "--enable-tegra-experimental-api"
-                "--enable-freedreno-kgsl"))
-             ("aarch64-linux"
-              '("--enable-tegra-experimental-api"
-                "--enable-etnaviv-experimental-api"
-                "--enable-freedreno-kgsl"))
-             (_ '())))))
+             ((or "armhf-linux" "aarch64-linux")
+              '("-Dexynos=true"
+                "-Domap=true"
+                "-Detnaviv=true"
+                "-Dtegra=true"
+                "-Dfreedreno-kgsl=true"))
+             (_ '())))
+       ,@(if (string=? (%current-system) "armhf-linux")
+             '(#:phases
+               (modify-phases %standard-phases
+                 (replace 'check
+                   (lambda _
+                     (invoke "meson" "test" "--timeout-multiplier" "5")))))
+             '())))
     (inputs
      `(("libpciaccess" ,libpciaccess)))
     (native-inputs
@@ -807,7 +810,7 @@ Guile will work for XBindKeys.")
 (define-public sxhkd
   (package
     (name "sxhkd")
-    (version "0.5.9")
+    (version "0.6.0")
     (source
      (origin
        (method git-fetch)
@@ -815,8 +818,7 @@ Guile will work for XBindKeys.")
              (url "https://github.com/baskerville/sxhkd")
              (commit version)))
        (sha256
-        (base32
-         "0cw547x7vky55k3ksrmzmrra4zhslqcwq9xw0y4cmbvy4s1qf64v"))))
+        (base32 "1cz4vkm7fqd51ly9qjkf5q76kdqdzfhaajgvrs4anz5dyzrdpw68"))))
     (build-system gnu-build-system)
     (inputs
      `(("asciidoc" ,asciidoc)
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index b47fe5d301..6c253849f6 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -6,7 +6,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -104,15 +104,15 @@ Xfce Desktop Environment.")
 (define-public xfconf
   (package
     (name "xfconf")
-    (version "4.12.0")
+    (version "4.12.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0mmi0g30aln3x98y5p507g17pipq0dj0bwypshan8cq5hkmfl44r"))))
+                "0dns190bwb615wy9ma2654sw4vz1d0rcv061zmaalkv9wmj8bx1m"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -148,15 +148,15 @@ storage system.")
 (define-public libxfce4ui
   (package
     (name "libxfce4ui")
-    (version "4.12.0")
+    (version "4.12.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "11rrhqxnfwx5jls3nlg9s2x8saag9f2zqk9cdm6hr3bs6cr9a781"))))
+                "0hzzhiiwmqsrbv17nninhs2x1b8ck0ym85jck2xphx5ypw8rhq9x"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -182,14 +182,15 @@ to share commonly used Xfce widgets among the Xfce applications.")
 (define-public exo
   (package
     (name "exo")
-    (version "0.10.3")
+    (version "0.12.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1g9651ra395v2fmzb943l68b9pg0rfxc19x97a62crchxwa4nw4m"))))
+                "1bsh43m6dh83vj9qi1vs0425m2d5yfqjyihr7zjjqmyvdf0n1bxh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -213,14 +214,15 @@ development.")
 (define-public garcon
   (package
     (name "garcon")
-    (version "0.4.0")
+    (version "0.6.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wm9pjbwq53s3n3nwvsyf0q8lbmhiy2ln3bn5ncihr9vf5cwhzbq"))))
+                "0z64g6f2vwfjzqsrsn05nbcbs8l6y4cfdgxk4k2la3giixj0jzx8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -242,14 +244,15 @@ merging features essential for loading menus modified with menu editors.")
 (define-public tumbler
   (package
     (name "tumbler")
-    (version "0.1.31")
+    (version "0.2.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/xfce/tumbler/0.1/"
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0wvip28gm2w061hn84zp2q4dv947ihylrppahn4cjspzff935zfh"))))
+                "0h3x325dbz0lnb7b3zzbfrva3v0rn99v03zj9cza7ysr2nyy28nh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -277,15 +280,15 @@ management D-Bus specification.")
 (define-public xfce4-panel
   (package
     (name "xfce4-panel")
-    (version "4.12.0")
+    (version "4.12.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1c4p3ckghvsad1sj5v8wmar5mh9cbhail9mmhad2f9pwwb10z4ih"))
+                "1s8cvsrgmkmmm84g6mghpj2k4777gm22g5lrsf8pdy5qh6xql1a2"))
               (patches (search-patches "xfce4-panel-plugins.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -315,15 +318,15 @@ applications menu, workspace switcher and more.")
 (define-public xfce4-battery-plugin
   (package
     (name "xfce4-battery-plugin")
-    (version "1.0.5")
+    (version "1.1.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/panel-plugins/"
+              (uri (string-append "https://archive.xfce.org/src/panel-plugins/"
                                   name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "04gbplcj8z4vg5xbks8cc2jjf62mmf9sdymg90scjwmb82pv2ngn"))))
+                "1nypi0zazrcrbbm5vb221yw64zxrk56v4fffkblxlyd9m6gk80fn"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("intltool" ,intltool)))
@@ -344,15 +347,15 @@ applications menu, workspace switcher and more.")
 (define-public xfce4-clipman-plugin
   (package
     (name "xfce4-clipman-plugin")
-    (version "1.2.6")
+    (version "1.4.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/panel-plugins/"
+              (uri (string-append "https://archive.xfce.org/src/panel-plugins/"
                                   name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "19a8gwcqc0r5qqi8w28dc8arqip34m8yxdb87lgps9g5qfcky113"))))
+                "1liacff4wl5mpyf9dzdrfbwxzmhl95y5nsfc0jf5rgalzdgbik99"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -375,15 +378,15 @@ matching them against regular expressions.")
 (define-public xfce4-pulseaudio-plugin
   (package
     (name "xfce4-pulseaudio-plugin")
-    (version "0.2.3")
+    (version "0.4.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/panel-plugins/"
+              (uri (string-append "https://archive.xfce.org/src/panel-plugins/"
                                   name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0crvb2gyxbnlf46712arg3m2vqx81dixqhqdwss0bngpijy3ca78"))))
+                "1w29y0a066y8as12xrkbfqcn7dpdsvx97idzw7028gmcvca87a3c"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
@@ -471,15 +474,15 @@ your system in categories, so you can quickly find and launch them.")
 (define-public xfce4-session
   (package
     (name "xfce4-session")
-    (version "4.12.0")
+    (version "4.12.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "01kvbd09c06j20n155hracsgrq06rlmfgdywffjsvlwpn19m9j38"))
+                "1z88klls3j161n5snpamz4l3p4823q4h87wdnqikczxgs2ig5mwp"))
               (patches
                ;; See: https://bugzilla.xfce.org/show_bug.cgi?id=12282
                (search-patches "xfce4-session-fix-xflock4.patch"))
@@ -519,15 +522,15 @@ allows you to shutdown the computer from Xfce.")
 (define-public xfce4-settings
   (package
     (name "xfce4-settings")
-    (version "4.12.0")
+    (version "4.12.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "http://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "108za1cmjslwzkdl76x9kwxkq8z734kg9nz8rxk057f10pqwxgh4"))
+                "16vgidhhc19dz0p0i6fp5iiwxd53ky143j6h14a9b7mz92nlr872"))
               (patches (search-patches "xfce4-settings-defaults.patch"))))
     (build-system gnu-build-system)
     (native-inputs
@@ -554,14 +557,15 @@ like appearance, display, keyboard and mouse settings.")
 (define-public thunar
   (package
     (name "thunar")
-    (version "1.6.6")
+    (version "1.8.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.12/src/"
+              (uri (string-append "http://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
                                   "Thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "1cl9v3rdzipyyxml3pyrzspxfmmssz5h5snpj18irq4an42539dr"))))
+                "1c4kg8w77nwi75b4ashy2m1y39icv951h63qsr1gdj6yipd53gy2"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -615,15 +619,15 @@ and import the new pictures from your camera.")
 (define-public xfwm4
   (package
     (name "xfwm4")
-    (version "4.12.0")
+    (version "4.12.5")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0fnc2ps4k733n9qfpxrz047h1myyqjzxczl7fmkjmqwshvicpx19"))))
+                "1jnav0wcqlswl2v7nh61big9czg5hmnyvrvm6812sv362qic0xbp"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -645,15 +649,15 @@ on the screen.")
 (define-public xfdesktop
   (package
     (name "xfdesktop")
-    (version "4.12.0")
+    (version "4.12.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/"
-                                  (version-major+minor version)
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ivzgg4792nid6wcgd1nq5vc3z0y5ip6ymq7ci5j2qkp663qnykf"))))
+                "1jzi851arljq5lza9inyq4ss513l62lbzbfm64a7x4320m8kb2h9"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -676,15 +680,15 @@ devices and folders.")
 (define-public xfce4-terminal
   (package
     (name "xfce4-terminal")
-    (version "0.8.6")
+    (version "0.8.7.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/apps/" name "/"
+              (uri (string-append "https://archive.xfce.org/src/apps/" name "/"
                                   (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1mw1v20a9r8figl5m93jfp16x64bfj8yjmy5s5kbdw501425camw"))))
+                "1as2dh5ccmv3hdvsbxm4b0xhmv2ky2q18zxxrzr988x79npri3x8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -758,14 +762,15 @@ system resources, while still being visually appealing and user friendly.")
 (define-public xfce4-power-manager
   (package
     (name "xfce4-power-manager")
-    (version "1.4.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/xfce/4.12"
-                                  "/src/" name "-" version ".tar.bz2"))
+              (uri (string-append "https://archive.xfce.org/src/xfce/"
+                                  name "/" (version-major+minor version) "/"
+                                  name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "04909sfc2nrj2wg9cw6y9y2r9yrp3l3vc201sy1gaiap67fi33h1"))))
+                "0sv5927q8jxvdfx7b06f8s7qyq3qa1nqn0b8c1b9bf234d2jba0y"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-gtk3")))
@@ -825,22 +830,26 @@ the desktop wallpaper.")
 (define-public xfce4-taskmanager
   (package
     (name "xfce4-taskmanager")
-    (version "1.1.0")
+    (version "1.2.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/apps/"
+              (uri (string-append "https://archive.xfce.org/src/apps/"
                                   name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1jwywmkkkmz7406m1jq40w6apiav25cznafhigbgpjv6z5hv27if"))))
+                "04qflazmdrj4ys4r54yg4s5pqcjgk02idrjsls395zd4374636p4"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libwnck" ,libwnck-2)
-       ("gtk+" ,gtk+-2)))
+       ("libxmu" ,libxmu)
+       ("gtk+" ,gtk+)
+       ;; FIXME: Remove libxext and libxt when libxmu propagates them.
+       ("libxext" ,libxext)
+       ("libxt" ,libxt)))
     (home-page "https://goodies.xfce.org/projects/applications/xfce4-taskmanager")
     (synopsis "Easy to use task manager")
     (description
@@ -883,22 +892,23 @@ several different time zones.")
 (define-public xfce4-notifyd
   (package
     (name "xfce4-notifyd")
-    (version "0.3.6")
+    (version "0.4.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://archive.xfce.org/src/apps/"
+              (uri (string-append "https://archive.xfce.org/src/apps/"
                                   name "/" (version-major+minor version) "/"
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "1ybcfqfynr33g5hp2lgq17s8qyx7rq6fd2iwrpwcvm6kml6prjpl"))))
+                "1h7avj149cafj9dabiza22y14i66vxgp5qj0wxx8i97w9h4dlg99"))))
     (build-system glib-or-gtk-build-system)
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libxfce4ui" ,libxfce4ui)
-       ("libnotify" ,libnotify)))
+       ("libnotify" ,libnotify)
+       ("xfce4-panel" ,xfce4-panel)))
     (home-page "https://goodies.xfce.org/projects/applications/xfce4-notifyd")
     (synopsis "Show notification bubbles on Xfce")
     (description
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index cafdd7e656..cfc17e752c 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
@@ -88,26 +88,14 @@ things the parser might find in the XML document (like start tags).")
 (define-public libebml
   (package
     (name "libebml")
-    (version "1.3.6")
+    (version "1.3.7")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://dl.matroska.org/downloads/"
-                           name "/" name "-" version ".tar.xz"))
+       (uri (string-append "https://dl.matroska.org/downloads/libebml/"
+                           "libebml-" version ".tar.xz"))
        (sha256
-        (base32
-         "17iynkj22rbszaymxiaq6k02qy9w4fs1appkn1iam4y441w7lnhy"))
-       (patches
-        (list
-         (origin
-           (method url-fetch)
-           (uri
-            (string-append "https://github.com/Matroska-Org/libebml/commit/"
-                           "e46906b80e7662fb78d305f576412f9fa4a22218.patch"))
-           (file-name "libebml-use-limits-not-climits.patch")
-           (sha256
-            (base32
-             "1803rcj4kzg385xij8j3fcz8h86z43ivciv512zr7jp9jwrafs58")))))))
+        (base32 "1x79b35dj5d2x7xf7ql83w2cr0v5n2vsd08q6y6grmw4yn3lq973"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -798,14 +786,14 @@ server, collect the answer, and finally decoding the XML to Perl.")
 (define-public perl-xml-feed
   (package
     (name "perl-xml-feed")
-    (version "0.55")
+    (version "0.59")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/D/DA/DAVECROSS/"
                                   "XML-Feed-" version ".tar.gz"))
               (sha256
                (base32
-                "0am345qzy5rxxnzh13l6p18a7drgkzmmlkgrgl4cv3b2j1pwls3i"))))
+                "1z1a88bpy64j42bbyl8acbfl3dn9iaz47gx6clkgy5sbn4kr0kgk"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f))                    ; tests require internet connection
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index ab12529c08..994679089f 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
@@ -104,23 +104,21 @@
   ;; License: x11, see COPYING
   (origin
     (method url-fetch)
-    (uri "mirror://xorg/individual/util/xorg-cf-files-1.0.5.tar.bz2")
+    (uri "mirror://xorg/individual/util/xorg-cf-files-1.0.6.tar.bz2")
     (sha256
-     (base32
-      "1m3ypq0xcy46ghxc0svl1rbhpy3zvgmy0aa2mn7w7v7d8d8bh8zd"))))
+     (base32 "0kckng0zs1viz0nr84rdl6dswgip7ndn4pnh5nfwnviwpsfmmksd"))))
 
 (define-public imake
   (package
     (name "imake")
-    (version "1.0.7")
+    (version "1.0.8")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://xorg/individual/util/imake-"
                           version ".tar.bz2"))
       (sha256
-       (base32
-        "0zpk8p044jh14bis838shbf4100bjg7mccd7bq54glpsq552q339"))))
+       (base32 "00m7l90ws72k1qm101sd2rx92ckd50cszyng5d4dd77jncbf9lmq"))))
     (build-system gnu-build-system)
     (native-inputs
       `(("pkg-config" ,pkg-config)))
@@ -1110,7 +1108,7 @@ synchronization between the X server and direct-rendering clients.")
 (define-public libfs
   (package
     (name "libfs")
-    (version "1.0.7")
+    (version "1.0.8")
     (source
       (origin
         (method url-fetch)
@@ -1119,8 +1117,7 @@ synchronization between the X server and direct-rendering clients.")
                version
                ".tar.bz2"))
         (sha256
-          (base32
-            "1wy4km3qwwajbyl8y9pka0zwizn7d9pfiyjgzba02x3a083lr79f"))))
+          (base32 "03xxyvpfa3rhqcld4p2chkil482jn9cp80hj17jdybcv2hkkgqf8"))))
     (build-system gnu-build-system)
     (inputs
       `(("xtrans" ,xtrans)
@@ -1360,7 +1357,7 @@ configuration files.")
 (define-public libxkbfile
   (package
     (name "libxkbfile")
-    (version "1.0.9")
+    (version "1.1.0")
     (source
       (origin
         (method url-fetch)
@@ -1370,7 +1367,7 @@ configuration files.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0smimr14zvail7ar68n7spvpblpdnih3jxrva7cpa6cn602px0ai"))))
+            "1irq9crvscd3yb8sr802dhvvfr35jdy1n2yz094xplmd42mbv3bm"))))
     (build-system gnu-build-system)
     (inputs
       `(("libx11" ,libx11)))
@@ -1500,25 +1497,22 @@ treat it as part of their software base when porting.")
 (define-public libxxf86dga
   (package
     (name "libxxf86dga")
-    (version "1.1.4")
+    (version "1.1.5")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "mirror://xorg/individual/lib/libXxf86dga-"
-               version
-               ".tar.bz2"))
-        (sha256
-          (base32
-            "0zn7aqj8x0951d8zb2h2andldvwkzbsc4cs7q023g6nzq6vd9v4f"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://xorg/individual/lib/"
+                           "libXxf86dga-" version ".tar.bz2"))
+       (sha256
+        (base32 "00vjvcdlc1sga251jkxn6gkxmx9h5n290ffxxpa40qbca1gvr61b"))))
     (build-system gnu-build-system)
     (propagated-inputs
-      `(("xorgproto" ,xorgproto)))
+     `(("xorgproto" ,xorgproto)))
     (inputs
-      `(("libx11" ,libx11)
-        ("libxext" ,libxext)))
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)))
     (native-inputs
-      `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg XFree86-DGA library")
     (description "Client library for the XFree86-DGA extension.")
@@ -1560,7 +1554,7 @@ input from UTF-8 into the locale's encoding.")
 (define-public makedepend
   (package
     (name "makedepend")
-    (version "1.0.5")
+    (version "1.0.6")
     (source
       (origin
         (method url-fetch)
@@ -1570,7 +1564,7 @@ input from UTF-8 into the locale's encoding.")
                ".tar.bz2"))
         (sha256
           (base32
-            "09alw99r6y2bbd1dc786n3jfgv4j520apblyn7cw6jkjydshba7p"))))
+            "072h9nzh8s5vqfz35dli4fba36fnr219asjrb7p89n8ph0paan6m"))))
     (build-system gnu-build-system)
     (inputs
       `(("xorgproto" ,xorgproto)))
@@ -1585,7 +1579,7 @@ input from UTF-8 into the locale's encoding.")
 (define-public mkfontscale
   (package
     (name "mkfontscale")
-    (version "1.1.3")
+    (version "1.2.1")
     (source
       (origin
         (method url-fetch)
@@ -1594,8 +1588,7 @@ input from UTF-8 into the locale's encoding.")
                version
                ".tar.bz2"))
         (sha256
-          (base32
-            "0siag28jpm8hj62bgjvw81sjfgrc7vcy2h7127bl4iazxrlxz60y"))))
+          (base32 "1ixsnsm2mn0zy9ksdid0lj6irnhvasfik9mz8bbrs5sajzmra16a"))))
     (build-system gnu-build-system)
     (inputs
       `(("zlib" ,zlib)
@@ -1970,7 +1963,7 @@ server.")
 (define-public x11perf
   (package
     (name "x11perf")
-    (version "1.6.0")
+    (version "1.6.1")
     (source
       (origin
         (method url-fetch)
@@ -1980,7 +1973,7 @@ server.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0lb716yfdb8f11h4cz93d1bapqdxf1xplsb21kbp4xclq7g9hw78"))))
+            "0d3wh6z6znwhfdiv0zaggfj0xgish98xa10yy76b9517zj7hnzhw"))))
     (build-system gnu-build-system)
     (inputs
       `(("libx11" ,libx11)
@@ -2636,14 +2629,14 @@ as USB mice.")
 (define-public xf86-video-amdgpu
   (package
     (name "xf86-video-amdgpu")
-    (version "19.0.0")
+    (version "19.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://xorg/individual/driver/"
                            "xf86-video-amdgpu-" version ".tar.bz2"))
        (sha256
-        (base32 "0lag9jxd752ja7m7ngz3dmqffb5wbx4crdwjw74qx42m8xyi8dl8"))))
+        (base32 "1mf6s7i423b2xyl469kwnakrpp5fr41sm8hh7vli5jxdd8crg8da"))))
     (build-system gnu-build-system)
     (inputs `(("xorg-server" ,xorg-server)))
     (native-inputs `(("pkg-config" ,pkg-config)))
@@ -2703,14 +2696,14 @@ X server.")
 (define-public xf86-video-ati
   (package
     (name "xf86-video-ati")
-    (version "19.0.0")
+    (version "19.0.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://xorg/individual/driver/"
                            "xf86-video-ati-" version ".tar.bz2"))
        (sha256
-        (base32 "0mzl7yp3qkvankh22758sgpaw9mg6jxsfbg6wy0nxfw4i0qpv46x"))))
+        (base32 "1c31g5q5p3nk9nscwikh1vvfnhdwsxiw7j8v678nlm34hrfh3djw"))))
     (build-system gnu-build-system)
     (inputs `(("mesa" ,mesa)
               ("xorgproto" ,xorgproto)
@@ -4989,7 +4982,7 @@ new API's in libXft, or the legacy API's in libX11.")
 (define-public libxvmc
   (package
     (name "libxvmc")
-    (version "1.0.10")
+    (version "1.0.11")
     (source
       (origin
         (method url-fetch)
@@ -4999,7 +4992,7 @@ new API's in libXft, or the legacy API's in libX11.")
                ".tar.bz2"))
         (sha256
           (base32
-            "0bpffxr5dal90a8miv2w0rif61byqxq2f5angj4z1bnznmws00g5"))))
+            "0bb2c996p0smp2lwckffcfh4701bzv7266xh230ag0x68ka38bja"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("libxv" ,libxv)))
@@ -6021,7 +6014,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.4.3")
+    (version "2.5")
     (source
      (origin
        (method url-fetch)
@@ -6029,7 +6022,7 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "0pq2pzmv5fsafp50rzl9nb6ns08rl88fhgdqc2hh27dx7b8ka8n6"))))
+         "0q6c7ijgpp2wk6jlh0pzqki1w60i36wyl2zfwkg0gpdh40ypab3x"))))
     (build-system python-build-system)
     (inputs `(("ffmpeg" ,ffmpeg)
               ("flac" ,flac)
@@ -6387,6 +6380,15 @@ output.")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
+         (add-after 'unpack 'patch-file-names
+           (lambda _
+             ;; 'ckbcomp' calls out to 'cat' (!).  Give it the right file
+             ;; name.
+             (substitute* '("Keyboard/ckbcomp")
+               (("\"cat ")
+                (string-append "\"" (which "cat")
+                               " ")))
+             #t))
          (add-before 'build 'make-doubled-bdfs
            (lambda* (#:key inputs #:allow-other-keys)
              (invoke "make" "-C" "Fonts"
diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm
index 6629433780..ebfe05abd0 100644
--- a/gnu/services/audio.scm
+++ b/gnu/services/audio.scm
@@ -42,6 +42,12 @@
                 (default "~/Music"))
   (playlist-dir mpd-configuration-playlist-dir
                 (default "~/.mpd/playlists"))
+  (db-file      mpd-configuration-db-file
+                (default "~/.mpd/tag_cache"))
+  (state-file   mpd-configuration-state-file
+                (default "~/.mpd/state"))
+  (sticker-file mpd-configuration-sticker-file
+                (default "~/.mpd/sticker.sql"))
   (port         mpd-configuration-port
                 (default "6600"))
   (address      mpd-configuration-address
@@ -61,6 +67,9 @@
         `(("user" ,mpd-configuration-user)
           ("music_directory" ,mpd-configuration-music-dir)
           ("playlist_directory" ,mpd-configuration-playlist-dir)
+          ("db_file" ,mpd-configuration-db-file)
+          ("state_file" ,mpd-configuration-state-file)
+          ("sticker_file" ,mpd-configuration-sticker-file)
           ("port" ,mpd-configuration-port)
           ("bind_to_address" ,mpd-configuration-address)))))
 
diff --git a/gnu/services/authentication.scm b/gnu/services/authentication.scm
index 1a2629d475..ab54aaf698 100644
--- a/gnu/services/authentication.scm
+++ b/gnu/services/authentication.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,13 +19,28 @@
 
 (define-module (gnu services authentication)
   #:use-module (gnu services)
+  #:use-module (gnu services base)
+  #:use-module (gnu services configuration)
   #:use-module (gnu services dbus)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu system pam)
+  #:use-module (gnu system shadow)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages openldap)
   #:use-module (guix gexp)
   #:use-module (guix records)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:export (fprintd-configuration
             fprintd-configuration?
-            fprintd-service-type))
+            fprintd-service-type
+
+            nslcd-configuration
+            nslcd-configuration?
+            nslcd-service-type))
 
 (define-record-type* <fprintd-configuration>
   fprintd-configuration make-fprintd-configuration
@@ -39,3 +55,496 @@
                                           list)))
                 (description
                  "Run fprintd, a fingerprint management daemon.")))
+
+
+;;;
+;;; NSS Pam LDAP service (nslcd)
+;;;
+
+(define (uglify-field-name name)
+  (match name
+    ('filters "filter")
+    ('maps "map")
+    (_ (string-map (match-lambda
+                     (#\- #\_)
+                     (chr chr))
+                   (symbol->string name)))))
+
+(define (value->string val)
+  (cond
+   ((boolean? val)
+    (if val "on" "off"))
+   ((number? val)
+    (number->string val))
+   ((symbol? val)
+    (string-map (match-lambda
+                     (#\- #\_)
+                     (chr chr))
+                   (symbol->string val)))
+   (else val)))
+
+(define (serialize-field field-name val)
+  (if (eq? field-name 'pam-services)
+      #t
+      (format #t "~a ~a\n"
+              (uglify-field-name field-name)
+              (value->string val))))
+
+(define serialize-string serialize-field)
+(define serialize-boolean serialize-field)
+(define serialize-number serialize-field)
+(define (serialize-list field-name val)
+  (map (cut serialize-field field-name <>) val))
+(define-maybe string)
+(define-maybe boolean)
+(define-maybe number)
+
+(define (ssl-option? val)
+  (or (boolean? val)
+      (eq? val 'start-tls)))
+(define serialize-ssl-option serialize-field)
+(define-maybe ssl-option)
+
+(define (tls-reqcert-option? val)
+  (member val '(never allow try demand hard)))
+(define serialize-tls-reqcert-option serialize-field)
+(define-maybe tls-reqcert-option)
+
+(define (deref-option? val)
+  (member val '(never searching finding always)))
+(define serialize-deref-option serialize-field)
+(define-maybe deref-option)
+
+(define (comma-separated-list-of-strings? val)
+  (and (list? val)
+       (every string? val)))
+(define (ignore-users-option? val)
+  (or (comma-separated-list-of-strings? val)
+      (eq? 'all-local val)))
+(define (serialize-ignore-users-option field-name val)
+  (serialize-field field-name (if (eq? 'all-local val)
+                                  val
+                                  (string-join val ","))))
+(define-maybe ignore-users-option)
+
+(define (log-option? val)
+  (let ((valid-scheme? (lambda (scheme)
+                         (or (string? scheme)
+                             (member scheme '(none syslog))))))
+    (match val
+      ((scheme level)
+       (and (valid-scheme? scheme)
+            (member level '(crit error warning notice info debug))))
+      ((scheme)
+       (valid-scheme? scheme)))))
+(define (serialize-log-option field-name val)
+  (serialize-field field-name
+                   (string-join (map (cut format #f "~a" <>) val))))
+
+(define (valid-map? val)
+  "Is VAL a supported map name?"
+  (member val
+          '(alias aliases ether ethers group host hosts netgroup network networks
+            passwd protocol protocols rpc service services shadow)))
+
+(define (scope-option? val)
+  (let ((valid-scopes '(subtree onelevel base children)))
+    (match val
+      ((map-name scope)
+       (and (valid-map? map-name)
+            (member scope valid-scopes)))
+      ((scope)
+       (member scope valid-scopes)))))
+(define (serialize-scope-option field-name val)
+  (serialize-field field-name
+                   (string-join (map (cut format #f "~a" <>) val))))
+
+(define (map-entry? val)
+  (match val
+    (((? valid-map? map-name)
+      (? string? attribute)
+      (? string? new-attribute)) #t)
+    (_ #f)))
+
+(define (list-of-map-entries? val)
+  (and (list? val)
+       (every map-entry? val)))
+
+(define (filter-entry? val)
+  (match val
+    (((? valid-map? map-name)
+      (? string? filter-expression)) #t)
+    (_ #f)))
+
+(define (list-of-filter-entries? val)
+  (and (list? val)
+       (every filter-entry? val)))
+
+(define (serialize-filter-entry field-name val)
+  (serialize-field 'filter
+                   (match val
+                     (((? valid-map? map-name)
+                       (? string? filter-expression))
+                      (string-append (symbol->string map-name)
+                                     " " filter-expression)))))
+
+(define (serialize-list-of-filter-entries field-name val)
+  (for-each (cut serialize-filter-entry field-name <>) val))
+
+(define (serialize-map-entry field-name val)
+  (serialize-field 'map
+                   (match val
+                     (((? valid-map? map-name)
+                       (? string? attribute)
+                       (? string? new-attribute))
+                      (string-append (symbol->string map-name)
+                                     " " attribute
+                                     " " new-attribute)))))
+
+(define (serialize-list-of-map-entries field-name val)
+  (for-each (cut serialize-map-entry field-name <>) val))
+
+
+(define-configuration nslcd-configuration
+  (nss-pam-ldapd
+   (package nss-pam-ldapd)
+   "The NSS-PAM-LDAPD package to use.")
+
+  ;; Runtime options
+  (threads
+   (maybe-number 'disabled)
+   "The number of threads to start that can handle requests and perform LDAP
+queries.  Each thread opens a separate connection to the LDAP server.  The
+default is to start 5 threads.")
+  (uid
+   (string "nslcd")
+   "This specifies the user id with which the daemon should be run.")
+  (gid
+   (string "nslcd")
+   "This specifies the group id with which the daemon should be run.")
+  (log
+   (log-option '("/var/log/nslcd" info))
+   "This option controls the way logging is done via a list containing SCHEME
+and LEVEL.  The SCHEME argument may either be the symbols \"none\" or
+\"syslog\", or an absolute file name.  The LEVEL argument is optional and
+specifies the log level.  The log level may be one of the following symbols:
+\"crit\", \"error\", \"warning\", \"notice\", \"info\" or \"debug\".  All
+messages with the specified log level or higher are logged.")
+
+  ;; LDAP connection settings
+  (uri
+   (list '("ldap://localhost:389/"))
+   "The list of LDAP server URIs.  Normally, only the first server will be
+used with the following servers as fall-back.")
+  (ldap-version
+   (maybe-string 'disabled)
+   "The version of the LDAP protocol to use.  The default is to use the
+maximum version supported by the LDAP library.")
+  (binddn
+   (maybe-string 'disabled)
+   "Specifies the distinguished name with which to bind to the directory
+server for lookups.  The default is to bind anonymously.")
+  (bindpw
+   (maybe-string 'disabled)
+   "Specifies the credentials with which to bind.  This option is only
+applicable when used with binddn.")
+  (rootpwmoddn
+   (maybe-string 'disabled)
+   "Specifies the distinguished name to use when the root user tries to modify
+a user's password using the PAM module.")
+  (rootpwmodpw
+   (maybe-string 'disabled)
+   "Specifies the credentials with which to bind if the root user tries to
+change a user's password.  This option is only applicable when used with
+rootpwmoddn")
+
+  ;; SASL authentication options
+  (sasl-mech
+   (maybe-string 'disabled)
+   "Specifies the SASL mechanism to be used when performing SASL
+authentication.")
+  (sasl-realm
+   (maybe-string 'disabled)
+   "Specifies the SASL realm to be used when performing SASL authentication.")
+  (sasl-authcid
+   (maybe-string 'disabled)
+   "Specifies the authentication identity to be used when performing SASL
+authentication.")
+  (sasl-authzid
+   (maybe-string 'disabled)
+   "Specifies the authorization identity to be used when performing SASL
+authentication.")
+  (sasl-canonicalize?
+   (maybe-boolean 'disabled)
+   "Determines whether the LDAP server host name should be canonicalised.  If
+this is enabled the LDAP library will do a reverse host name lookup.  By
+default, it is left up to the LDAP library whether this check is performed or
+not.")
+
+  ;; Kerberos authentication options
+  (krb5-ccname
+   (maybe-string 'disabled)
+   "Set the name for the GSS-API Kerberos credentials cache.")
+
+  ;; Search / mapping options
+  (base
+   (string "dc=example,dc=com")
+   "The directory search base.")
+  (scope
+   (scope-option '(subtree))
+   "Specifies the search scope (subtree, onelevel, base or children).  The
+default scope is subtree; base scope is almost never useful for name service
+lookups; children scope is not supported on all servers.")
+  (deref
+   (maybe-deref-option 'disabled)
+   "Specifies the policy for dereferencing aliases.  The default policy is to
+never dereference aliases.")
+  (referrals
+   (maybe-boolean 'disabled)
+   "Specifies whether automatic referral chasing should be enabled.  The
+default behaviour is to chase referrals.")
+  (maps
+   (list-of-map-entries '())
+   "This option allows for custom attributes to be looked up instead of the
+default RFC 2307 attributes.  It is a list of maps, each consisting of the
+name of a map, the RFC 2307 attribute to match and the query expression for
+the attribute as it is available in the directory.")
+  (filters
+   (list-of-filter-entries '())
+   "A list of filters consisting of the name of a map to which the filter
+applies and an LDAP search filter expression.")
+
+  ;; Timing / reconnect options
+  (bind-timelimit
+   (maybe-number 'disabled)
+   "Specifies the time limit in seconds to use when connecting to the
+directory server.  The default value is 10 seconds.")
+  (timelimit
+   (maybe-number 'disabled)
+   "Specifies the time limit (in seconds) to wait for a response from the LDAP
+server.  A value of zero, which is the default, is to wait indefinitely for
+searches to be completed.")
+  (idle-timelimit
+   (maybe-number 'disabled)
+   "Specifies the period if inactivity (in seconds) after which the con‐
+nection to the LDAP server will be closed.  The default is not to time out
+connections.")
+  (reconnect-sleeptime
+   (maybe-number 'disabled)
+   "Specifies the number of seconds to sleep when connecting to all LDAP
+servers fails.  By default one second is waited between the first failure and
+the first retry.")
+  (reconnect-retrytime
+   (maybe-number 'disabled)
+   "Specifies the time after which the LDAP server is considered to be
+permanently unavailable.  Once this time is reached retries will be done only
+once per this time period.  The default value is 10 seconds.")
+
+  ;; TLS options
+  (ssl
+   (maybe-ssl-option 'disabled)
+   "Specifies whether to use SSL/TLS or not (the default is not to).  If
+'start-tls is specified then StartTLS is used rather than raw LDAP over SSL.")
+  (tls-reqcert
+   (maybe-tls-reqcert-option 'disabled)
+   "Specifies what checks to perform on a server-supplied certificate.
+The meaning of the values is described in the ldap.conf(5) manual page.")
+  (tls-cacertdir
+   (maybe-string 'disabled)
+   "Specifies the directory containing X.509 certificates for peer authen‐
+tication.  This parameter is ignored when using GnuTLS.")
+  (tls-cacertfile
+   (maybe-string 'disabled)
+   "Specifies the path to the X.509 certificate for peer authentication.")
+  (tls-randfile
+   (maybe-string 'disabled)
+   "Specifies the path to an entropy source.  This parameter is ignored when
+using GnuTLS.")
+  (tls-ciphers
+   (maybe-string 'disabled)
+   "Specifies the ciphers to use for TLS as a string.")
+  (tls-cert
+   (maybe-string 'disabled)
+   "Specifies the path to the file containing the local certificate for client
+TLS authentication.")
+  (tls-key
+   (maybe-string 'disabled)
+   "Specifies the path to the file containing the private key for client TLS
+authentication.")
+
+  ;; Other options
+  (pagesize
+   (maybe-number 'disabled)
+   "Set this to a number greater than 0 to request paged results from the LDAP
+server in accordance with RFC2696.  The default (0) is to not request paged
+results.")
+  (nss-initgroups-ignoreusers
+   (maybe-ignore-users-option 'disabled)
+   "This option prevents group membership lookups through LDAP for the
+specified users.  Alternatively, the value 'all-local may be used.  With that
+value nslcd builds a full list of non-LDAP users on startup.")
+  (nss-min-uid
+   (maybe-number 'disabled)
+   "This option ensures that LDAP users with a numeric user id lower than the
+specified value are ignored.")
+  (nss-uid-offset
+   (maybe-number 'disabled)
+   "This option specifies an offset that is added to all LDAP numeric user
+ids.  This can be used to avoid user id collisions with local users.")
+  (nss-gid-offset
+   (maybe-number 'disabled)
+   "This option specifies an offset that is added to all LDAP numeric group
+ids.  This can be used to avoid user id collisions with local groups.")
+  (nss-nested-groups
+   (maybe-boolean 'disabled)
+   "If this option is set, the member attribute of a group may point to
+another group.  Members of nested groups are also returned in the higher level
+group and parent groups are returned when finding groups for a specific user.
+The default is not to perform extra searches for nested groups.")
+  (nss-getgrent-skipmembers
+   (maybe-boolean 'disabled)
+   "If this option is set, the group member list is not retrieved when looking
+up groups.  Lookups for finding which groups a user belongs to will remain
+functional so the user will likely still get the correct groups assigned on
+login.")
+  (nss-disable-enumeration
+   (maybe-boolean 'disabled)
+   "If this option is set, functions which cause all user/group entries to be
+loaded from the directory will not succeed in doing so.  This can dramatically
+reduce LDAP server load in situations where there are a great number of users
+and/or groups.  This option is not recommended for most configurations.")
+  (validnames
+   (maybe-string 'disabled)
+   "This option can be used to specify how user and group names are verified
+within the system.  This pattern is used to check all user and group names
+that are requested and returned from LDAP.")
+  (ignorecase
+   (maybe-boolean 'disabled)
+   "This specifies whether or not to perform searches using case-insensitive
+matching.  Enabling this could open up the system to authorization bypass
+vulnerabilities and introduce nscd cache poisoning vulnerabilities which allow
+denial of service.")
+  (pam-authc-ppolicy
+   (maybe-boolean 'disabled)
+   "This option specifies whether password policy controls are requested and
+handled from the LDAP server when performing user authentication.")
+  (pam-authc-search
+   (maybe-string 'disabled)
+   "By default nslcd performs an LDAP search with the user's credentials after
+BIND (authentication) to ensure that the BIND operation was successful.  The
+default search is a simple check to see if the user's DN exists.  A search
+filter can be specified that will be used instead.  It should return at least
+one entry.")
+  (pam-authz-search
+   (maybe-string 'disabled)
+   "This option allows flexible fine tuning of the authorisation check that
+should be performed.  The search filter specified is executed and if any
+entries match, access is granted, otherwise access is denied.")
+  (pam-password-prohibit-message
+   (maybe-string 'disabled)
+   "If this option is set password modification using pam_ldap will be denied
+and the specified message will be presented to the user instead.  The message
+can be used to direct the user to an alternative means of changing their
+password.")
+
+  ;; Options for extension of pam-root-service-type.
+  (pam-services
+   (list '())
+   "List of pam service names for which LDAP authentication should suffice."))
+
+(define %nslcd-accounts
+  (list (user-group
+         (name "nslcd")
+         (system? #t))
+        (user-account
+         (name "nslcd")
+         (group "nslcd")
+         (comment "NSLCD service account")
+         (home-directory "/var/empty")
+         (shell (file-append shadow "/sbin/nologin"))
+         (system? #t))))
+
+(define (nslcd-config-file config)
+  "Return an NSLCD configuration file."
+  (plain-file "nslcd.conf"
+              (with-output-to-string
+                (lambda ()
+                  (serialize-configuration config nslcd-configuration-fields)
+                  ;; The file must end with a newline character.
+                  (format #t "\n")))))
+
+;; XXX: The file should only be readable by root if it contains a "bindpw"
+;; declaration.  Unfortunately, this etc-service-type extension does not
+;; support setting file modes, so we do this in the activation service.
+(define (nslcd-etc-service config)
+  `(("nslcd.conf" ,(nslcd-config-file config))))
+
+(define (nslcd-shepherd-service config)
+  (list (shepherd-service
+         (documentation "Run the nslcd service for resolving names from LDAP.")
+         (provision '(nslcd))
+         (requirement '(networking user-processes))
+         (start #~(make-forkexec-constructor
+                   (list (string-append #$(nslcd-configuration-nss-pam-ldapd config)
+                                        "/sbin/nslcd")
+                         "--nofork")
+                   #:pid-file "/var/run/nslcd/nslcd.pid"
+                   #:environment-variables
+                   (list (string-append "LD_LIBRARY_PATH="
+                                        #$(nslcd-configuration-nss-pam-ldapd config)
+                                        "/lib"))))
+         (stop #~(make-kill-destructor)))))
+
+(define (pam-ldap-pam-service config)
+  "Return a PAM service for LDAP authentication."
+  (define pam-ldap-module
+    #~(string-append #$(nslcd-configuration-nss-pam-ldapd config)
+                     "/lib/security/pam_ldap.so"))
+  (lambda (pam)
+    (if (member (pam-service-name pam)
+                (nslcd-configuration-pam-services config))
+        (let ((sufficient
+               (pam-entry
+                (control "sufficient")
+                (module pam-ldap-module))))
+          (pam-service
+           (inherit pam)
+           (auth (cons sufficient (pam-service-auth pam)))
+           (session (cons sufficient (pam-service-session pam)))
+           (account (cons sufficient (pam-service-account pam)))))
+        pam)))
+
+(define (pam-ldap-pam-services config)
+  (list (pam-ldap-pam-service config)))
+
+(define nslcd-service-type
+  (service-type
+   (name 'nslcd)
+   (description "Run the NSLCD service for looking up names from LDAP.")
+   (extensions
+    (list (service-extension account-service-type
+                             (const %nslcd-accounts))
+          (service-extension etc-service-type
+                             nslcd-etc-service)
+          (service-extension activation-service-type
+                             (const #~(begin
+                                        (use-modules (guix build utils))
+                                        (let ((rundir "/var/run/nslcd")
+                                              (user (getpwnam "nslcd")))
+                                          (mkdir-p rundir)
+                                          (chown rundir (passwd:uid user) (passwd:gid user))
+                                          (chmod rundir #o755)
+                                          (when (file-exists? "/etc/nslcd.conf")
+                                            (chmod "/etc/nslcd.conf" #o400))))))
+          (service-extension pam-root-service-type
+                             pam-ldap-pam-services)
+          (service-extension nscd-service-type
+                             (const (list nss-pam-ldapd)))
+          (service-extension shepherd-root-service-type
+                             nslcd-shepherd-service)))
+   (default-value (nslcd-configuration))))
+
+(define (generate-nslcd-documentation)
+  (generate-documentation
+   `((nslcd-configuration ,nslcd-configuration-fields))
+   'nslcd-configuration))
diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm
index 7548145c98..7565bc97ca 100644
--- a/gnu/services/certbot.scm
+++ b/gnu/services/certbot.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;;
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 0dee57e3bc..b912c208cc 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -4,10 +4,11 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017, 2019 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -123,6 +124,10 @@
             enlightenment-desktop-configuration?
             enlightenment-desktop-service-type
 
+            inputattach-configuration
+            inputattach-configuration?
+            inputattach-service-type
+
             %desktop-services))
 
 ;;; Commentary:
@@ -1021,6 +1026,47 @@ as expected.")))
 
 
 ;;;
+;;; inputattach-service-type
+;;;
+
+(define-record-type* <inputattach-configuration>
+  inputattach-configuration
+  make-inputattach-configuration
+  inputattach-configuration?
+  (device-type inputattach-configuration-device-type
+               (default "wacom"))
+  (device inputattach-configuration-device
+          (default "/dev/ttyS0"))
+  (log-file inputattach-configuration-log-file
+            (default #f)))
+
+(define inputattach-shepherd-service
+  (match-lambda
+    (($ <inputattach-configuration> type device log-file)
+     (list (shepherd-service
+            (provision '(inputattach))
+            (requirement '(udev))
+            (documentation "inputattach daemon")
+            (start #~(make-forkexec-constructor
+                      (list (string-append #$inputattach
+                                           "/bin/inputattach")
+                            (string-append "--" #$type)
+                            #$device)
+                      #:log-file #$log-file))
+            (stop #~(make-kill-destructor)))))))
+
+(define inputattach-service-type
+  (service-type
+   (name 'inputattach)
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             inputattach-shepherd-service)))
+   (default-value (inputattach-configuration))
+   (description "Return a service that runs inputattach on a device and
+dispatches events from it.")))
+
+
+;;;
 ;;; The default set of desktop services.
 ;;;
 
diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm
index 13669925ab..e332b93096 100644
--- a/gnu/services/version-control.scm
+++ b/gnu/services/version-control.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index d71fed20ed..b6ebe90774 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
diff --git a/gnu/system.scm b/gnu/system.scm
index e6c86cb9ba..6bccdaa8c2 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -181,7 +181,7 @@
   (groups operating-system-groups                 ; list of user groups
           (default %base-groups))
 
-  (skeletons operating-system-skeletons           ; list of name/monadic value
+  (skeletons operating-system-skeletons           ; list of name/file-like value
              (default (default-skeletons)))
   (issue operating-system-issue                   ; string
          (default %default-issue))
@@ -199,7 +199,7 @@
   (name-service-switch operating-system-name-service-switch ; <name-service-switch>
                        (default %default-nss))
 
-  (services operating-system-user-services        ; list of monadic services
+  (services operating-system-user-services        ; list of services
             (default %base-services))
 
   (pam-services operating-system-pam-services     ; list of PAM services
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index e561285964..55cddb1a4b 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -187,8 +187,9 @@ made available under the /xchg CIFS share."
                   ;; When USER-BUILDER succeeds, reboot (indicating a
                   ;; success), otherwise die, which causes a kernel panic
                   ;; ("Attempted to kill init!").
-                  #~(when (zero? (system* #$user-builder))
-                      (reboot))))
+                  #~(if (zero? (system* #$user-builder))
+                        (reboot)
+                        (exit 1))))
 
   (let ((initrd (or initrd
                     (base-initrd file-systems
@@ -525,7 +526,10 @@ should set REGISTER-CLOSURES? to #f."
                  #$os-drv
                  #:compressor '(#+(file-append gzip "/bin/gzip") "-9n")
                  #:creation-time (make-time time-utc 0 1)
-                 #:transformations `((,root-directory -> ""))))))))
+                 #:transformations `((,root-directory -> "")))
+
+                ;; Make sure the tarball is fully written before rebooting.
+                (sync))))))
     (expression->derivation-in-linux-vm
      name build
      #:make-disk-image? #f
diff --git a/gnu/tests/ldap.scm b/gnu/tests/ldap.scm
new file mode 100644
index 0000000000..2d4f15fb3c
--- /dev/null
+++ b/gnu/tests/ldap.scm
@@ -0,0 +1,160 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; 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 ldap)
+  #:use-module (gnu tests)
+  #:use-module (gnu system)
+  #:use-module (gnu system nss)
+  #:use-module (gnu system vm)
+  #:use-module (gnu services)
+  #:use-module (gnu services authentication)
+  #:use-module (gnu services networking)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages openldap)
+  #:use-module (guix gexp)
+  #:use-module (guix store)
+  #:export (%test-ldap))
+
+(define %ldap-os
+  (let ((simple
+         (simple-operating-system
+          (service dhcp-client-service-type)
+          (service nslcd-service-type))))
+    (operating-system
+      (inherit simple)
+      (name-service-switch
+       (let ((services (list (name-service (name "db"))
+                             (name-service (name "files"))
+                             (name-service (name "ldap")))))
+         (name-service-switch
+          (inherit %mdns-host-lookup-nss)
+          (password services)
+          (shadow   services)
+          (group    services)
+          (netgroup services)
+          (gshadow  services)))))))
+
+(define (run-ldap-test)
+  "Run tests in %LDAP-OS."
+  (define os
+    (marionette-operating-system
+     %ldap-os
+     #:imported-modules '((gnu services herd)
+                          (guix combinators))))
+
+  (define vm
+    (virtual-machine os))
+
+  (define test
+    (with-imported-modules '((gnu build marionette))
+      #~(begin
+          (use-modules (srfi srfi-11) (srfi srfi-64)
+                       (gnu build marionette))
+
+          (define marionette
+            (make-marionette (list #$vm)))
+
+          (mkdir #$output)
+          (chdir #$output)
+
+          (test-begin "ldap")
+
+          ;; Set up LDAP directory server
+          (test-assert "LDAP server instance running"
+            (marionette-eval
+             '(begin
+                (with-output-to-file "instance.inf"
+                  (lambda ()
+                    (display "[general]
+config_version = 2
+
+\n[slapd]
+root_password = SECRET
+user = root
+group = root
+
+\n[backend-userroot]
+sample_entries = yes
+suffix = dc=example,dc=com")))
+                (and
+                 ;; Create instance
+                 (zero? (system* #$(file-append 389-ds-base "/sbin/dscreate")
+                                     "-v" "from-file" "instance.inf"))
+                 ;; Start instance
+                 (zero? (system* #$(file-append 389-ds-base "/sbin/dsctl")
+                                 "localhost" "start"))
+                 ;; Create user account
+                 (zero? (system* #$(file-append 389-ds-base "/sbin/dsidm")
+                                 "-b" "dc=example,dc=com"
+                                 "localhost" "user" "create"
+                                 "--uid" "eva" "--cn" "Eva Lu Ator"
+                                 "--displayName" "Eva Lu Ator"
+                                 "--uidNumber" "1234" "--gidNumber" "2345"
+                                 "--homeDirectory" "/home/eva"))))
+             marionette))
+
+          (test-assert "Manager can bind to LDAP server instance"
+            (marionette-eval
+             '(zero? (system* #$(file-append openldap "/bin/ldapwhoami")
+                              "-H" "ldap://localhost" "-D"
+                              "cn=Directory Manager" "-w" "SECRET"))
+             marionette))
+
+          ;; Wait for nslcd to be up and running.
+          (test-assert "nslcd service running"
+            (marionette-eval
+             '(begin
+                (use-modules (gnu services herd))
+                (match (start-service 'nslcd)
+                  (#f #f)
+                  (('service response-parts ...)
+                   (match (assq-ref response-parts 'running)
+                     ((pid) (number? pid))))))
+             marionette))
+
+          (test-assert "nslcd produces a log file"
+            (marionette-eval
+             '(file-exists? "/var/log/nslcd")
+             marionette))
+
+          (test-assert "Can query LDAP user accounts"
+            (marionette-eval
+             '(begin
+                ;; TODO: This shouldn't be necessary, but unfortunately it
+                ;; really is needed to discover LDAP accounts with "id".
+                (setenv "LD_LIBRARY_PATH"
+                        #$(file-append nss-pam-ldapd "/lib"))
+                (zero? (system* #$(file-append coreutils "/bin/id") "eva")))
+             marionette))
+
+          (test-assert "Can become LDAP user"
+            (marionette-eval
+             '(zero? (system* "/run/setuid-programs/su" "eva" "-c"
+                              #$(file-append coreutils "/bin/true")))
+             marionette))
+
+          (test-end)
+          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+  (gexp->derivation "ldap-test" test))
+
+(define %test-ldap
+  (system-test
+   (name "ldap")
+   (description "Run an LDAP directory server and authenticate against it.")
+   (value (run-ldap-test))))
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index fcd92f2334..8de7dfbfc2 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;;
@@ -129,7 +129,8 @@
                             (system (%current-system))
                             (imported-modules %glib-or-gtk-build-system-modules)
                             (modules %default-modules)
-                            allowed-references)
+                            allowed-references
+                            disallowed-references)
   "Build SOURCE with INPUTS.  See GNU-BUILD for more details."
   (define canonicalize-reference
     (match-lambda
@@ -190,6 +191,10 @@
                                 (and allowed-references
                                      (map canonicalize-reference
                                           allowed-references))
+                                #:disallowed-references
+                                (and disallowed-references
+                                     (map canonicalize-reference
+                                          disallowed-references))
                                 #:guile-for-build guile-for-build))
 
 (define glib-or-gtk-build-system
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index cf91163275..1b916af8f9 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -39,6 +39,7 @@
 (define %go-build-system-modules
   ;; Build-side modules imported and used by default.
   `((guix build go-build-system)
+    (guix build union)
     ,@%gnu-build-system-modules))
 
 (define (default-go)
@@ -87,6 +88,7 @@
                    (guile #f)
                    (imported-modules %go-build-system-modules)
                    (modules '((guix build go-build-system)
+                              (guix build union)
                               (guix build utils))))
   (define builder
    `(begin
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 8d49020454..370d185545 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -109,9 +109,25 @@
                       (system (%current-system))
                       (imported-modules %meson-build-system-modules)
                       (modules '((guix build meson-build-system)
-                                 (guix build utils))))
+                                 (guix build utils)))
+                      allowed-references
+                      disallowed-references)
   "Build SOURCE using MESON, and with INPUTS, assuming that SOURCE
 has a 'meson.build' file."
+
+  ;; TODO: Copied from build-system/gnu, factorize this!
+  (define canonicalize-reference
+    (match-lambda
+     ((? package? p)
+      (derivation->output-path (package-derivation store p system
+                                                   #:graft? #f)))
+     (((? package? p) output)
+      (derivation->output-path (package-derivation store p system
+                                                   #:graft? #f)
+                               output))
+     ((? string? output)
+      output)))
+
   (define builder
     `(let ((build-phases (if ,glib-or-gtk?
                              ,phases
@@ -159,7 +175,15 @@ has a 'meson.build' file."
                                 #:inputs inputs
                                 #:modules imported-modules
                                 #:outputs outputs
-                                #:guile-for-build guile-for-build))
+                                #:guile-for-build guile-for-build
+                                #:allowed-references
+                                (and allowed-references
+                                     (map canonicalize-reference
+                                          allowed-references))
+                                #:disallowed-references
+                                (and disallowed-references
+                                     (map canonicalize-reference
+                                          disallowed-references))))
 
 (define meson-build-system
   (build-system
diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
new file mode 100644
index 0000000000..a02e2bad3a
--- /dev/null
+++ b/guix/build-system/rakudo.scm
@@ -0,0 +1,155 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 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 (guix build-system rakudo)
+  #:use-module (guix store)
+  #:use-module (guix utils)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
+  #:use-module (guix build-system)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:export (%rakudo-build-system-modules
+            rakudo-build
+            rakudo-build-system))
+
+;; Commentary:
+;;
+;; Standard build and install procedure for packages using the Rakudo
+;; build system to be installed as system libraries.  This is
+;; implemented as an extension of `gnu-build-system'.
+;;
+;; Code:
+
+(define %rakudo-build-system-modules
+  ;; Build-side modules imported by default.
+  `((guix build rakudo-build-system)
+    ,@%gnu-build-system-modules))
+
+(define (default-rakudo)
+  "Return the default Rakudo package."
+
+  ;; Do not use `@' to avoid introducing circular dependencies.
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'rakudo)))
+
+(define (default-prove6)
+  "Return the default perl6-tap-harness package for tests."
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'perl6-tap-harness)))
+
+(define (default-zef)
+  "Return the default perl6-zef package."
+  (let ((module (resolve-interface '(gnu packages perl6))))
+    (module-ref module 'perl6-zef)))
+
+(define* (lower name
+                #:key source inputs native-inputs outputs
+                system target
+                (rakudo (default-rakudo))
+                (prove6 (default-prove6))
+                (zef (default-zef))
+                (with-prove6? #t)
+                (with-zef? #t)
+                #:allow-other-keys
+                #:rest arguments)
+  "Return a bag for NAME."
+  (define private-keywords
+    '(#:source #:target #:rakudo #:prove6 #:zef #:inputs #:native-inputs))
+
+  (and (not target)                               ;XXX: no cross-compilation
+       (bag
+         (name name)
+         (system system)
+         (host-inputs `(,@(if source
+                              `(("source" ,source))
+                              '())
+                        ,@inputs
+
+                        ;; Keep the standard inputs of 'gnu-build-system'.
+                        ,@(standard-packages)))
+         (build-inputs `(("rakudo" ,rakudo)
+                         ,@(if with-prove6?
+                               `(("perl6-tap-harness" ,prove6)
+                                 ,@(if with-zef?
+                                       `(("perl6-zef" ,zef))
+                                       '()))
+                               '())
+                         ,@native-inputs))
+         (outputs outputs)
+         (build rakudo-build)
+         (arguments (strip-keyword-arguments private-keywords arguments)))))
+
+(define* (rakudo-build store name inputs
+                       #:key
+                       (search-paths '())
+                       (tests? #t)
+                       (phases '(@ (guix build rakudo-build-system)
+                                   %standard-phases))
+                       (outputs '("out"))
+                       (system (%current-system))
+                       (guile #f)
+                       (with-zef? #t)
+                       (with-prove6? #t)
+                       (imported-modules %rakudo-build-system-modules)
+                       (modules '((guix build rakudo-build-system)
+                                  (guix build utils))))
+  "Build SOURCE using PERL6, and with INPUTS."
+  (define builder
+    `(begin
+       (use-modules ,@modules)
+       (rakudo-build #:name ,name
+                     #:source ,(match (assoc-ref inputs "source")
+                                      (((? derivation? source))
+                                       (derivation->output-path source))
+                                      ((source)
+                                       source)
+                                      (source
+                                        source))
+                     #:search-paths ',(map search-path-specification->sexp
+                                           search-paths)
+                     #:phases ,phases
+                     #:system ,system
+                     #:tests? ,tests?
+                     #:outputs %outputs
+                     #:inputs %build-inputs)))
+
+  (define guile-for-build
+    (match guile
+      ((? package?)
+       (package-derivation store guile system #:graft? #f))
+      (#f                                         ; the default
+       (let* ((distro (resolve-interface '(gnu packages commencement)))
+              (guile  (module-ref distro 'guile-final)))
+         (package-derivation store guile system #:graft? #f)))))
+
+  (build-expression->derivation store name builder
+                                #:system system
+                                #:inputs inputs
+                                #:modules imported-modules
+                                #:outputs outputs
+                                #:guile-for-build guile-for-build))
+
+(define rakudo-build-system
+  (build-system
+    (name 'rakudo)
+    (description "The standard Rakudo build system")
+    (lower lower)))
+
+;;; rakudo.scm ends here
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 022d4fe16b..1a716cea77 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
-;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2017, 2019 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +19,7 @@
 
 (define-module (guix build go-build-system)
   #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build union)
   #:use-module (guix build utils)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
@@ -38,24 +39,26 @@
 ;; results. [0]
 
 ;; Go software is developed and built within a particular file system hierarchy
-;; structure called a 'workspace' [1].  This workspace is found by Go
-;; via the GOPATH environment variable.  Typically, all Go source code
-;; and compiled objects are kept in a single workspace, but it is
-;; possible for GOPATH to contain a list of directories, and that is
-;; what we do in this go-build-system. [2]
+;; structure called a 'workspace' [1].  This workspace can be found by Go via
+;; the GOPATH environment variable.  Typically, all Go source code and compiled
+;; objects are kept in a single workspace, but GOPATH may be a list of
+;; directories [2].  In this go-build-system we create a filesystem union of
+;; the Go-language dependencies. Previously, we made GOPATH a list of store
+;; directories, but stopped because Go programs started keeping references to
+;; these directories in Go 1.11:
+;; <https://bugs.gnu.org/33620>.
 ;;
-;; Go software, whether a package or a command, is uniquely named using
-;; an 'import path'.  The import path is based on the URL of the
-;; software's source.  Since most source code is provided over the
-;; internet, the import path is typically a combination of the remote
-;; URL and the source repository's file system structure. For example,
-;; the Go port of the common `du` command is hosted on github.com, at
-;; <https://github.com/calmh/du>.  Thus, the import path is
-;; <github.com/calmh/du>. [3]
+;; Go software, whether a package or a command, is uniquely named using an
+;; 'import path'.  The import path is based on the URL of the software's source.
+;; Because most source code is provided over the internet, the import path is
+;; typically a combination of the remote URL and the source repository's file
+;; system structure. For example, the Go port of the common `du` command is
+;; hosted on github.com, at <https://github.com/calmh/du>.  Thus, the import
+;; path is <github.com/calmh/du>. [3]
 ;;
-;; It may be possible to programatically guess a package's import path
-;; based on the source URL, but we don't try that in this revision of
-;; the go-build-system.
+;; It may be possible to automatically guess a package's import path based on
+;; the source URL, but we don't try that in this revision of the
+;; go-build-system.
 ;;
 ;; Modules of modular Go libraries are named uniquely with their
 ;; file system paths.  For example, the supplemental but "standardized"
@@ -75,6 +78,17 @@
 ;; file system union of the required modules of such libraries.  I think
 ;; this could be improved in future revisions of the go-build-system.
 ;;
+;; TODO:
+;; * Avoid copying dependencies into the build environment and / or avoid using
+;; a tmpdir when creating the inputs union.
+;; * Use Go modules [4]
+;; * Re-use compiled packages [5]
+;; * Avoid the go-inputs hack
+;; * Stop needing remove-go-references (-trimpath ? )
+;; * Remove module packages, only offering the full Git repos? This is
+;; more idiomatic, I think, because Go downloads Git repos, not modules.
+;; What are the trade-offs?
+;;
 ;; [0] `go build`:
 ;; https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies
 ;; `go install`:
@@ -107,18 +121,44 @@
 ;;
 ;; [2] https://golang.org/doc/code.html#GOPATH
 ;; [3] https://golang.org/doc/code.html#ImportPaths
+;; [4] https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more
+;; [5] https://bugs.gnu.org/32919
 ;;
 ;; Code:
 
+(define* (setup-go-environment #:key inputs outputs #:allow-other-keys)
+  "Prepare a Go build environment for INPUTS and OUTPUTS.  Build a filesystem
+union of INPUTS.  Export GOPATH, which helps the compiler find the source code
+of the package being built and its dependencies, and GOBIN, which determines
+where executables (\"commands\") are installed to.  This phase is sometimes used
+by packages that use (guix build-system gnu) but have a handful of Go
+dependencies, so it should be self-contained."
+  ;; Using the current working directory as GOPATH makes it easier for packagers
+  ;; who need to manipulate the unpacked source code.
+  (setenv "GOPATH" (getcwd))
+  (setenv "GOBIN" (string-append (assoc-ref outputs "out") "/bin"))
+  (let ((tmpdir (tmpnam)))
+    (match (go-inputs inputs)
+      (((names . directories) ...)
+       (union-build tmpdir (filter directory-exists? directories)
+                    #:create-all-directories? #t
+                    #:log-port (%make-void-port "w"))))
+    ;; XXX A little dance because (guix build union) doesn't use mkdir-p.
+    (copy-recursively tmpdir
+                      (string-append (getenv "GOPATH"))
+                      #:keep-mtime? #t)
+    (delete-file-recursively tmpdir))
+  #t)
+
 (define* (unpack #:key source import-path unpack-path #:allow-other-keys)
-  "Unpack SOURCE in the UNPACK-PATH, or the IMPORT-PATH is the UNPACK-PATH is
-unset.  When SOURCE is a directory, copy it instead of unpacking."
+  "Relative to $GOPATH, unpack SOURCE in the UNPACK-PATH, or the IMPORT-PATH is
+the UNPACK-PATH is unset.  When SOURCE is a directory, copy it instead of
+unpacking."
   (if (string-null? import-path)
       ((display "WARNING: The Go import path is unset.\n")))
   (if (string-null? unpack-path)
       (set! unpack-path import-path))
-  (mkdir "src")
-  (let ((dest (string-append "src/" unpack-path)))
+  (let ((dest (string-append (getenv "GOPATH") "/src/" unpack-path)))
     (mkdir-p dest)
     (if (file-is-directory? source)
       (begin
@@ -128,15 +168,6 @@ unset.  When SOURCE is a directory, copy it instead of unpacking."
         (invoke "unzip" "-d" dest source)
         (invoke "tar" "-C" dest "-xvf" source)))))
 
-(define* (install-source #:key install-source? outputs #:allow-other-keys)
-  "Install the source code to the output directory."
-  (let* ((out (assoc-ref outputs "out"))
-         (source "src")
-         (dest (string-append out "/" source)))
-    (when install-source?
-      (copy-recursively source dest #:keep-mtime? #t))
-    #t))
-
 (define (go-package? name)
   (string-prefix? "go-" name))
 
@@ -155,27 +186,6 @@ unset.  When SOURCE is a directory, copy it instead of unpacking."
                 (_ #f))
               inputs))))
 
-(define* (setup-environment #:key inputs outputs #:allow-other-keys)
-  "Export the variables GOPATH and GOBIN, which are based on INPUTS and OUTPUTS,
-respectively."
-  (let ((out (assoc-ref outputs "out")))
-    ;; GOPATH is where Go looks for the source code of the build's dependencies.
-    (set-path-environment-variable "GOPATH"
-                                   ;; XXX Matching "." hints that we could do
-                                   ;; something simpler here...
-                                   (list ".")
-                                   (match (go-inputs inputs)
-                                     (((_ . dir) ...)
-                                      dir)))
-
-    ;; Add the source code of the package being built to GOPATH.
-    (if (getenv "GOPATH")
-      (setenv "GOPATH" (string-append (getcwd) ":" (getenv "GOPATH")))
-      (setenv "GOPATH" (getcwd)))
-    ;; Where to install compiled executable files ('commands' in Go parlance').
-    (setenv "GOBIN" (string-append out "/bin"))
-    #t))
-
 (define* (build #:key import-path #:allow-other-keys)
   "Build the package named by IMPORT-PATH."
   (with-throw-handler
@@ -193,22 +203,26 @@ respectively."
                               "Here are the results of `go env`:\n"))
       (invoke "go" "env"))))
 
+;; Can this also install commands???
 (define* (check #:key tests? import-path #:allow-other-keys)
   "Run the tests for the package named by IMPORT-PATH."
   (when tests?
     (invoke "go" "test" import-path))
   #t)
 
-(define* (install #:key outputs #:allow-other-keys)
-  "Install the compiled libraries. `go install` installs these files to
-$GOPATH/pkg, so we have to copy them into the output directory manually.
-Compiled executable files should have already been installed to the store based
-on $GOBIN in the build phase."
-  ;; TODO: From go-1.10 onward, the pkg folder should not be needed (see
-  ;; https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00208.html).
-  ;; Remove it?
-  (when (file-exists? "pkg")
-    (copy-recursively "pkg" (string-append (assoc-ref outputs "out") "/pkg")))
+(define* (install #:key install-source? outputs import-path unpack-path #:allow-other-keys)
+  "Install the source code of IMPORT-PATH to the primary output directory.
+Compiled executable files (Go \"commands\") should have already been installed
+to the store based on $GOBIN in the build phase.
+XXX We can't make us of compiled libraries (Go \"packages\")."
+  (when install-source?
+    (if (string-null? import-path)
+        ((display "WARNING: The Go import path is unset.\n")))
+    (let* ((out (assoc-ref outputs "out"))
+           (source (string-append (getenv "GOPATH") "/src/" import-path))
+           (dest (string-append out "/src/" import-path)))
+      (mkdir-p dest)
+      (copy-recursively source dest #:keep-mtime? #t)))
   #t)
 
 (define* (remove-store-reference file file-name
@@ -269,9 +283,8 @@ files in OUTPUTS."
     (delete 'bootstrap)
     (delete 'configure)
     (delete 'patch-generated-file-shebangs)
+    (add-before 'unpack 'setup-go-environment setup-go-environment)
     (replace 'unpack unpack)
-    (add-after 'unpack 'install-source install-source)
-    (add-before 'build 'setup-environment setup-environment)
     (replace 'build build)
     (replace 'check check)
     (replace 'install install)
diff --git a/guix/build/rakudo-build-system.scm b/guix/build/rakudo-build-system.scm
new file mode 100644
index 0000000000..dbdeb1ccd2
--- /dev/null
+++ b/guix/build/rakudo-build-system.scm
@@ -0,0 +1,145 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 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 (guix build rakudo-build-system)
+  #:use-module ((guix build gnu-build-system) #:prefix gnu:)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 ftw)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:export (%standard-phases
+            rakudo-build))
+
+;; Commentary:
+;;
+;; Builder-side code of the standard Rakudo package build procedure.
+;;
+;; Code:
+
+(define* (check #:key tests? inputs with-prove6? #:allow-other-keys)
+  (if (and tests? (assoc-ref inputs "perl6-tap-harness"))
+  ;(if (and tests? with-prove6?)
+      (invoke "prove6" "-I=lib" "t/")
+      (format #t "test suite not run~%"))
+  #t)
+
+(define* (install #:key inputs outputs with-zef? #:allow-other-keys)
+  "Install a given Perl6 package."
+  (let* ((out   (assoc-ref outputs "out"))
+         (perl6 (string-append out "/share/perl6")))
+    (if (assoc-ref inputs "perl6-zef")
+    ;(if with-zef?
+        (begin
+          (let ((zef (string-append (assoc-ref inputs "perl6-zef")
+                                    "/bin/zef")))
+            (setenv "HOME" (getcwd))
+            (mkdir-p perl6)
+            (invoke zef "install" "--verbose" "."
+                    ;; Don't install any of the following:
+                    "--/depends" "--/build-depends" "--/test-depends"
+                    (string-append "--install-to=" perl6))
+            (delete-file (string-append perl6 "/repo.lock")))
+          #t)
+        (begin
+          (let ((inst (string-append (assoc-ref inputs "rakudo")
+                                     "/share/perl6/tools/install-dist.p6")))
+            (setenv "RAKUDO_RERESOLVE_DEPENDENCIES" "0")
+            (setenv "RAKUDO_MODULE_DEBUG" "1") ; be verbose while building
+            (invoke inst (string-append "--to=" perl6) "--for=site"))))))
+
+(define* (install-libs #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out"))
+        (lock "lib/.precomp/.lock"))
+    (when (file-exists? lock)
+      (delete-file "lib/.precomp/.lock"))
+    (copy-recursively "lib" (string-append out "/share/perl6/lib"))
+    #t))
+
+(define* (install-bins #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out")))
+    (when (file-exists? "bin")
+      (for-each (lambda (file)
+                  (install-file file (string-append out "/bin"))
+                  (chmod (string-append out "/" file) #o555))
+                (find-files "bin" ".*")))
+    (when (file-exists? "sbin")
+      (for-each (lambda (file)
+                  (install-file file (string-append out "/sbin"))
+                  (chmod (string-append out "/" file) #o555))
+                (find-files "sbin" ".*")))
+    #t))
+
+(define* (install-resources #:key outputs #:allow-other-keys)
+  (let ((out  (assoc-ref outputs "out")))
+    (when (file-exists? "resources")
+      (copy-recursively "resources"
+                        (string-append out "/share/perl6/resources")))
+  #t))
+
+(define* (wrap #:key inputs outputs #:allow-other-keys)
+  (define (list-of-files dir)
+    (map (cut string-append dir "/" <>)
+         (or (scandir dir (lambda (f)
+                            (let ((s (stat (string-append dir "/" f))))
+                              (eq? 'regular (stat:type s)))))
+             '())))
+
+  (define bindirs
+    (append-map (match-lambda
+                 ((_ . dir)
+                  (list (string-append dir "/bin")
+                        (string-append dir "/sbin"))))
+                outputs))
+
+  (let* ((out  (assoc-ref outputs "out"))
+         (var `("PERL6LIB" "," prefix
+                ,(cons (string-append out "/share/perl6/lib,"
+                                      out "/share/perl6/site/lib,"
+                                      out "/share/perl6/vendor/lib")
+                       (search-path-as-string->list
+                        (or (getenv "PERL6LIB") "") #\,)))))
+    (for-each (lambda (dir)
+                (let ((files (list-of-files dir)))
+                  (for-each (cut wrap-program <> var)
+                            files)))
+              bindirs)
+    #t))
+
+(define %standard-phases
+  ;; No need for 'bootstrap, 'configure or 'build.
+  (modify-phases gnu:%standard-phases
+    (delete 'bootstrap)
+    (delete 'configure)
+    (delete 'build)
+    (replace 'check check)
+    (replace 'install install)
+    (add-before 'install 'install-lib-dir install-libs)
+    (add-after 'install-lib-dir 'install-resources install-resources)
+    (add-after 'install-resources 'install-binaries install-bins)
+    ;; needs to be after 'install-binaries and all 'install phases
+    (add-after 'install 'wrap wrap)))
+
+(define* (rakudo-build #:key inputs (phases %standard-phases)
+                       #:allow-other-keys #:rest args)
+  "Build the given Perl6 package, applying all of PHASES in order."
+  (apply gnu:gnu-build
+         #:inputs inputs #:phases phases
+         args))
+
+;;; rakudo-build-system.scm ends here
diff --git a/guix/describe.scm b/guix/describe.scm
index 00372bbed7..893dca2640 100644
--- a/guix/describe.scm
+++ b/guix/describe.scm
@@ -21,10 +21,12 @@
   #:use-module (guix profiles)
   #:use-module (guix packages)
   #:use-module ((guix utils) #:select (location-file))
-  #:use-module ((guix store) #:select (%store-prefix))
+  #:use-module ((guix store) #:select (%store-prefix store-path?))
+  #:use-module ((guix config) #:select (%state-directory))
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match)
   #:export (current-profile
+            current-profile-date
             current-profile-entries
             package-path-entries
 
@@ -55,6 +57,27 @@ or #f if this is not applicable."
               (and (file-exists? (string-append candidate "/manifest"))
                    candidate)))))))
 
+(define (current-profile-date)
+  "Return the creation date of the current profile (produced by 'guix pull'),
+as a number of seconds since the Epoch, or #f if it could not be determined."
+  ;; Normally 'current-profile' will return ~/.config/guix/current.  We need
+  ;; to 'readlink' once to get '/var/guix/…/guix-profile', whose mtime is the
+  ;; piece of information we're looking for.
+  (let loop ((profile (current-profile)))
+    (match profile
+      (#f #f)
+      ((? store-path?) #f)
+      (file
+       (if (string-prefix? %state-directory file)
+           (and=> (lstat file) stat:mtime)
+           (catch 'system-error
+             (lambda ()
+               (let ((target (readlink file)))
+                 (loop (if (string-prefix? "/" target)
+                           target
+                           (string-append (dirname file) "/" target)))))
+             (const #f)))))))
+
 (define current-profile-entries
   (mlambda ()
     "Return the list of entries in the 'guix pull' profile the calling process
diff --git a/guix/download.scm b/guix/download.scm
index 25eaefcffa..8865777818 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -360,7 +361,10 @@
        "https://openbsd.mirror.constant.com/pub/OpenBSD/"
        "https://ftp4.usa.openbsd.org/pub/OpenBSD/"
        "https://ftp5.usa.openbsd.org/pub/OpenBSD/"
-       "https://mirror.esc7.net/pub/OpenBSD/"))))
+       "https://mirror.esc7.net/pub/OpenBSD/")
+      (mate
+       "https://pub.mate-desktop.org/releases/"
+       "http://pub.mate-desktop.org/releases/"))))
 
 (define %mirror-file
   ;; Copy of the list of mirrors to a file.  This allows us to keep a single
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 48db764b3c..2a51420d14 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/guix/import/launchpad.scm b/guix/import/launchpad.scm
new file mode 100644
index 0000000000..ffd5e9221e
--- /dev/null
+++ b/guix/import/launchpad.scm
@@ -0,0 +1,124 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix import launchpad)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (web uri)
+  #:use-module ((guix download) #:prefix download:)
+  #:use-module (guix import json)
+  #:use-module (guix packages)
+  #:use-module (guix upstream)
+  #:use-module (guix utils)
+  #:export (%launchpad-updater))
+
+(define (find-extension url)
+  "Return the extension of the archive e.g. '.tar.gz' given a URL, or
+false if none is recognized"
+  (find (lambda (x) (string-suffix? x url))
+        (list ".tar.gz" ".tar.bz2" ".tar.xz"
+              ".zip" ".tar" ".tgz" ".tbz" ".love")))
+
+(define (updated-launchpad-url old-package new-version)
+  ;; Return a url for the OLD-PACKAGE with NEW-VERSION.  If no source url in
+  ;; the OLD-PACKAGE is a Launchpad url, then return false.
+
+  (define (updated-url url)
+    (and (string-prefix? "https://launchpad.net/" url)
+         (let ((ext (or (find-extension url) ""))
+               (name (package-name old-package))
+               (version (package-version old-package))
+               (repo (launchpad-repository url)))
+           (cond
+            ((and
+              (>= (length (string-split version #\.)) 2)
+              (string=? (string-append "https://launchpad.net/"
+                                       repo "/" (version-major+minor version)
+                                       "/" version "/+download/" repo "-" version ext)
+                        url))
+             (string-append "https://launchpad.net/"
+                            repo "/" (version-major+minor new-version)
+                            "/" new-version "/+download/" repo "-" new-version ext))
+            (#t #f))))) ; Some URLs are not recognised.
+
+  (let ((source-uri (and=> (package-source old-package) origin-uri))
+        (fetch-method (and=> (package-source old-package) origin-method)))
+    (cond
+     ((eq? fetch-method download:url-fetch)
+      (match source-uri
+             ((? string?)
+              (updated-url source-uri))
+             ((source-uri ...)
+              (find updated-url source-uri))))
+     (else #f))))
+
+(define (launchpad-package? package)
+  "Return true if PACKAGE is a package from Launchpad, else false."
+  (->bool (updated-launchpad-url package "1.0.0")))
+
+(define (launchpad-repository url)
+  "Return a string e.g. linuxdcpp of the name of the repository, from a string
+URL of the form
+'https://launchpad.net/linuxdcpp/1.1/1.1.0/+download/linuxdcpp-1.1.0.tar.bz2'"
+  (match (string-split (uri-path (string->uri url)) #\/)
+    ((_ repo . rest) repo)))
+
+(define (latest-released-version package-name)
+  "Return a string of the newest released version name given the PACKAGE-NAME,
+for example, 'linuxdcpp'. Return #f if there is no releases."
+  (define (pre-release? x)
+    ;; Versions containing anything other than digit characters and "." (for
+    ;; example, "5.1.0-rc1") are assumed to be pre-releases.
+    (not (string-every (char-set-union (char-set #\.)
+                                       char-set:digit)
+                       (hash-ref x "version"))))
+
+  (hash-ref
+   (last (remove
+          pre-release?
+          (hash-ref (json-fetch
+                     (string-append "https://api.launchpad.net/1.0/"
+                                    package-name "/releases"))
+                    "entries")))
+   "version"))
+
+(define (latest-release pkg)
+  "Return an <upstream-source> for the latest release of PKG."
+  (define (origin-github-uri origin)
+    (match (origin-uri origin)
+      ((? string? url) url) ; surely a Launchpad URL
+      ((urls ...)
+       (find (cut string-contains <> "launchpad.net") urls))))
+
+  (let* ((source-uri (origin-github-uri (package-source pkg)))
+         (name (package-name pkg))
+         (newest-version (latest-released-version name)))
+    (if newest-version
+        (upstream-source
+         (package name)
+         (version newest-version)
+         (urls (list (updated-launchpad-url pkg newest-version))))
+        #f))) ; On Launchpad but no proper releases
+
+(define %launchpad-updater
+  (upstream-updater
+   (name 'launchpad)
+   (description "Updater for Launchpad packages")
+   (pred launchpad-package?)
+   (latest latest-release)))
diff --git a/guix/import/opam.scm b/guix/import/opam.scm
index 7b2e832e92..36028a01d6 100644
--- a/guix/import/opam.scm
+++ b/guix/import/opam.scm
@@ -292,7 +292,7 @@ package in OPAM."
 (define (opam-package? package)
   "Return true if PACKAGE is an OCaml package from OPAM"
   (and
-    (equal? (build-system-name (package-build-system package)) 'ocaml)
+    (member (build-system-name (package-build-system package)) '(dune ocaml))
     (not (string-prefix? "ocaml4" (package-name package)))))
 
 (define (latest-release package)
diff --git a/guix/licenses.scm b/guix/licenses.scm
index d22c3fa36e..676e71acdb 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -8,7 +8,7 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
diff --git a/guix/packages.scm b/guix/packages.scm
index 1893539aab..a961dc3973 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -102,6 +102,7 @@
             package-transitive-supported-systems
             package-mapping
             package-input-rewriting
+            package-input-rewriting/spec
             package-source-derivation
             package-derivation
             package-cross-derivation
@@ -871,6 +872,43 @@ package and returns its new name after rewrite."
 
   (package-mapping rewrite (cut assq <> replacements)))
 
+(define (package-input-rewriting/spec replacements)
+  "Return a procedure that, given a package, applies the given REPLACEMENTS to
+all the package graph (excluding implicit inputs).  REPLACEMENTS is a list of
+spec/procedures pair; each spec is a package specification such as \"gcc\" or
+\"guile@2\", and each procedure takes a matching package and returns a
+replacement for that package."
+  (define table
+    (fold (lambda (replacement table)
+            (match replacement
+              ((spec . proc)
+               (let-values (((name version)
+                             (package-name->name+version spec)))
+                 (vhash-cons name (list version proc) table)))))
+          vlist-null
+          replacements))
+
+  (define (find-replacement package)
+    (vhash-fold* (lambda (item proc)
+                   (or proc
+                       (match item
+                         ((#f proc)
+                          proc)
+                         ((version proc)
+                          (and (version-prefix? version
+                                                (package-version package))
+                               proc)))))
+                 #f
+                 (package-name package)
+                 table))
+
+  (define (rewrite package)
+    (match (find-replacement package)
+      (#f package)
+      (proc (proc package))))
+
+  (package-mapping rewrite find-replacement))
+
 (define-syntax-rule (package/inherit p overrides ...)
   "Like (package (inherit P) OVERRIDES ...), except that the same
 transformation is done to the package replacement, if any.  P must be a bare
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 5e20ecd92c..75d801a466 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;;
@@ -27,6 +27,7 @@
   #:use-module (guix packages)
   #:use-module (guix derivations)
   #:use-module ((guix profiles) #:select (%profile-directory))
+  #:autoload   (guix describe) (current-profile-date)
   #:use-module (guix build syscalls)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-19)
@@ -158,36 +159,25 @@ Show what and how will/would be built."
                                 #:key (suggested-command
                                        "guix package -u"))
   "Emit a warning if Guix is older than OLD seconds."
-  (let-syntax ((false-if-not-found
-                (syntax-rules ()
-                  ((_ exp)
-                   (catch 'system-error
-                     (lambda ()
-                       exp)
-                     (lambda args
-                       (if (= ENOENT (system-error-errno args))
-                           #f
-                           (apply throw args))))))))
-    (define (seconds->days seconds)
-      (round (/ seconds (* 3600 24))))
-
-    (define age
-      (match (false-if-not-found
-              (lstat (string-append %profile-directory "/current-guix")))
-        (#f    #f)
-        (stat  (- (time-second (current-time time-utc))
-                  (stat:mtime stat)))))
-
-    (when (and age (>= age old))
-      (warning (N_ "Your Guix installation is ~a day old.\n"
-                   "Your Guix installation is ~a days old.\n"
-                   (seconds->days age))
-               (seconds->days age)))
-    (when (or (not age) (>= age old))
-      (warning (G_ "Consider running 'guix pull' followed by
+  (define (seconds->days seconds)
+    (round (/ seconds (* 3600 24))))
+
+  (define age
+    (match (current-profile-date)
+      (#f    #f)
+      (date  (- (time-second (current-time time-utc))
+                date))))
+
+  (when (and age (>= age old))
+    (warning (N_ "Your Guix installation is ~a day old.\n"
+                 "Your Guix installation is ~a days old.\n"
+                 (seconds->days age))
+             (seconds->days age)))
+  (when (or (not age) (>= age old))
+    (warning (G_ "Consider running 'guix pull' followed by
 '~a' to get up-to-date packages and security updates.\n")
-               suggested-command)
-      (newline (guix-warning-port)))))
+             suggested-command)
+    (newline (guix-warning-port))))
 
 (define %disk-space-warning
   ;; The fraction (between 0 and 1) of free disk space below which a warning
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 6b29c470fb..28864435df 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -226,18 +226,21 @@ matching URIs given in SOURCES."
          obj)))))
 
 (define (evaluate-replacement-specs specs proc)
-  "Parse SPECS, a list of strings like \"guile=guile@2.1\", and invoke PROC on
-each package pair specified by SPECS.  Return the resulting list.  Raise an
-error if an element of SPECS uses invalid syntax, or if a package it refers to
-could not be found."
+  "Parse SPECS, a list of strings like \"guile=guile@2.1\" and return a list
+of package spec/procedure pairs as expected by 'package-input-rewriting/spec'.
+PROC is called with the package to be replaced and its replacement according
+to SPECS.  Raise an error if an element of SPECS uses invalid syntax, or if a
+package it refers to could not be found."
   (define not-equal
     (char-set-complement (char-set #\=)))
 
   (map (lambda (spec)
          (match (string-tokenize spec not-equal)
-           ((old new)
-            (proc (specification->package old)
-                  (specification->package new)))
+           ((spec new)
+            (cons spec
+                  (let ((new (specification->package new)))
+                    (lambda (old)
+                      (proc old new)))))
            (x
             (leave (G_ "invalid replacement specification: ~s~%") spec))))
        specs))
@@ -248,8 +251,10 @@ dependencies according to REPLACEMENT-SPECS.  REPLACEMENT-SPECS is a list of
 strings like \"guile=guile@2.1\" meaning that, any dependency on a package
 called \"guile\" must be replaced with a dependency on a version 2.1 of
 \"guile\"."
-  (let* ((replacements (evaluate-replacement-specs replacement-specs cons))
-         (rewrite      (package-input-rewriting replacements)))
+  (let* ((replacements (evaluate-replacement-specs replacement-specs
+                                                   (lambda (old new)
+                                                     new)))
+         (rewrite      (package-input-rewriting/spec replacements)))
     (lambda (store obj)
       (if (package? obj)
           (rewrite obj)
@@ -260,41 +265,47 @@ called \"guile\" must be replaced with a dependency on a version 2.1 of
 dependencies according to REPLACEMENT-SPECS.  REPLACEMENT-SPECS is a list of
 strings like \"gnutls=gnutls@3.5.4\" meaning that packages are built using the
 current 'gnutls' package, after which version 3.5.4 is grafted onto them."
-  (define (replacement-pair old new)
-    (cons old
-          (package (inherit old) (replacement new))))
+  (define (set-replacement old new)
+    (package (inherit old) (replacement new)))
 
   (let* ((replacements (evaluate-replacement-specs replacement-specs
-                                                   replacement-pair))
-         (rewrite      (package-input-rewriting replacements)))
+                                                   set-replacement))
+         (rewrite      (package-input-rewriting/spec replacements)))
     (lambda (store obj)
       (if (package? obj)
           (rewrite obj)
           obj))))
 
+(define %not-equal
+  (char-set-complement (char-set #\=)))
+
+(define (package-git-url package)
+  "Return the URL of the Git repository for package, or raise an error if
+the source of PACKAGE is not fetched from a Git repository."
+  (let ((source (package-source package)))
+    (cond ((and (origin? source)
+                (git-reference? (origin-uri source)))
+           (git-reference-url (origin-uri source)))
+          ((git-checkout? source)
+           (git-checkout-url source))
+          (else
+           (leave (G_ "the source of ~a is not a Git reference~%")
+                  (package-full-name package))))))
+
 (define (evaluate-git-replacement-specs specs proc)
   "Parse SPECS, a list of strings like \"guile=stable-2.2\", and return a list
 of package pairs, where (PROC PACKAGE URL BRANCH-OR-COMMIT) returns the
 replacement package.  Raise an error if an element of SPECS uses invalid
 syntax, or if a package it refers to could not be found."
-  (define not-equal
-    (char-set-complement (char-set #\=)))
-
   (map (lambda (spec)
-         (match (string-tokenize spec not-equal)
-           ((name branch-or-commit)
-            (let* ((old    (specification->package name))
-                   (source (package-source old))
-                   (url    (cond ((and (origin? source)
-                                       (git-reference? (origin-uri source)))
-                                  (git-reference-url (origin-uri source)))
-                                 ((git-checkout? source)
-                                  (git-checkout-url source))
-                                 (else
-                                  (leave (G_ "the source of ~a is not a Git \
-reference~%")
-                                         (package-full-name old))))))
-              (cons old (proc old url branch-or-commit))))
+         (match (string-tokenize spec %not-equal)
+           ((spec branch-or-commit)
+            (define (replace old)
+              (let* ((source (package-source old))
+                     (url    (package-git-url old)))
+                (proc old url branch-or-commit)))
+
+            (cons spec replace))
            (x
             (leave (G_ "invalid replacement specification: ~s~%") spec))))
        specs))
@@ -307,13 +318,16 @@ strings like \"guile-next=stable-3.0\" meaning that packages are built using
   (define (replace old url branch)
     (package
       (inherit old)
-      (version (string-append "git." branch))
+      (version (string-append "git." (string-map (match-lambda
+                                                   (#\/ #\-)
+                                                   (chr chr))
+                                                 branch)))
       (source (git-checkout (url url) (branch branch)
                             (recursive? #t)))))
 
   (let* ((replacements (evaluate-git-replacement-specs replacement-specs
                                                        replace))
-         (rewrite      (package-input-rewriting replacements)))
+         (rewrite      (package-input-rewriting/spec replacements)))
     (lambda (store obj)
       (if (package? obj)
           (rewrite obj)
@@ -331,16 +345,42 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using
                               (if (< (string-length commit) 7)
                                   commit
                                   (string-take commit 7))))
-      (source (git-checkout (url url) (commit commit)))))
+      (source (git-checkout (url url) (commit commit)
+                            (recursive? #t)))))
 
   (let* ((replacements (evaluate-git-replacement-specs replacement-specs
                                                        replace))
-         (rewrite      (package-input-rewriting replacements)))
+         (rewrite      (package-input-rewriting/spec replacements)))
     (lambda (store obj)
       (if (package? obj)
           (rewrite obj)
           obj))))
 
+(define (transform-package-source-git-url replacement-specs)
+  "Return a procedure that, when passed a package, replaces its dependencies
+according to REPLACEMENT-SPECS.  REPLACEMENT-SPECS is a list of strings like
+\"guile-json=https://gitthing.com/…\" meaning that packages are built using
+a checkout of the Git repository at the given URL."
+  (define replacements
+    (map (lambda (spec)
+           (match (string-tokenize spec %not-equal)
+             ((spec url)
+              (cons spec
+                    (lambda (old)
+                      (package
+                        (inherit old)
+                        (source (git-checkout (url url)
+                                              (recursive? #t)))))))))
+         replacement-specs))
+
+  (define rewrite
+    (package-input-rewriting/spec replacements))
+
+  (lambda (store obj)
+    (if (package? obj)
+        (rewrite obj)
+        obj)))
+
 (define %transformations
   ;; Transformations that can be applied to things to build.  The car is the
   ;; key used in the option alist, and the cdr is the transformation
@@ -350,7 +390,8 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using
     (with-input  . ,transform-package-inputs)
     (with-graft  . ,transform-package-inputs/graft)
     (with-branch . ,transform-package-source-branch)
-    (with-commit . ,transform-package-source-commit)))
+    (with-commit . ,transform-package-source-commit)
+    (with-git-url . ,transform-package-source-git-url)))
 
 (define %transformation-options
   ;; The command-line interface to the above transformations.
@@ -368,7 +409,9 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using
           (option '("with-branch") #t #f
                   (parser 'with-branch))
           (option '("with-commit") #t #f
-                  (parser 'with-commit)))))
+                  (parser 'with-commit))
+          (option '("with-git-url") #t #f
+                  (parser 'with-git-url)))))
 
 (define (show-transformation-options-help)
   (display (G_ "
@@ -385,23 +428,32 @@ strings like \"guile-next=cabba9e\" meaning that packages are built using
                          build PACKAGE from the latest commit of BRANCH"))
   (display (G_ "
       --with-commit=PACKAGE=COMMIT
-                         build PACKAGE from COMMIT")))
+                         build PACKAGE from COMMIT"))
+  (display (G_ "
+      --with-git-url=PACKAGE=URL
+                         build PACKAGE from the repository at URL")))
 
 
 (define (options->transformation opts)
   "Return a procedure that, when passed an object to build (package,
 derivation, etc.), applies the transformations specified by OPTS."
   (define applicable
-    ;; List of applicable transformations as symbol/procedure pairs.
+    ;; List of applicable transformations as symbol/procedure pairs in the
+    ;; order in which they appear on the command line.
     (filter-map (match-lambda
-                  ((key . transform)
-                   (match (filter-map (match-lambda
-                                        ((k . arg)
-                                         (and (eq? k key) arg)))
-                                      opts)
-                     (()   #f)
-                     (args (cons key (transform args))))))
-                %transformations))
+                  ((key . value)
+                   (match (any (match-lambda
+                                 ((k . proc)
+                                  (and (eq? k key) proc)))
+                               %transformations)
+                     (#f
+                      #f)
+                     (transform
+                      ;; XXX: We used to pass TRANSFORM a list of several
+                      ;; arguments, but we now pass only one, assuming that
+                      ;; transform composes well.
+                      (cons key (transform (list value)))))))
+                (reverse opts)))
 
   (lambda (store obj)
     (fold (match-lambda*
diff --git a/guix/scripts/describe.scm b/guix/scripts/describe.scm
index 7d0ecb0a4d..b6287d3a4c 100644
--- a/guix/scripts/describe.scm
+++ b/guix/scripts/describe.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -85,7 +85,9 @@ Display information about the channels currently in use.\n"))
         (format #t "~%GUIX_PACKAGE_PATH=\"~a\"~%" string))
        ('channels
         (format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%")
-                string))))))
+                string))
+       (_
+        (warning (G_ "'GUIX_PACKAGE_PATH' is set but it is not captured~%")))))))
 
 (define (channel->sexp channel)
   `(channel
diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm
index 8efeef3274..8fe81ad64b 100644
--- a/guix/scripts/graph.scm
+++ b/guix/scripts/graph.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +43,7 @@
             %bag-node-type
             %bag-with-origins-node-type
             %bag-emerged-node-type
+            %reverse-bag-node-type
             %derivation-node-type
             %reference-node-type
             %referrer-node-type
@@ -110,11 +111,21 @@ name."
 ;;; Reverse package DAG.
 ;;;
 
+(define (all-packages)            ;XXX: duplicated from (guix scripts refresh)
+  "Return the list of all the distro's packages."
+  (fold-packages (lambda (package result)
+                   ;; Ignore deprecated packages.
+                   (if (package-superseded package)
+                       result
+                       (cons package result)))
+                 '()
+                 #:select? (const #t)))           ;include hidden packages
+
 (define %reverse-package-node-type
   ;; For this node type we first need to compute the list of packages and the
   ;; list of back-edges.  Since we want to do it only once, we use the
   ;; promises below.
-  (let* ((packages   (delay (fold-packages cons '())))
+  (let* ((packages   (delay (all-packages)))
          (back-edges (delay (run-with-store #f    ;store not actually needed
                               (node-back-edges %package-node-type
                                                (force packages))))))
@@ -219,6 +230,21 @@ GNU-BUILD-SYSTEM have zero dependencies."
                           bag-node-edges-sans-bootstrap)
                  %store-monad))))
 
+(define %reverse-bag-node-type
+  ;; Type for the reverse traversal of package nodes via the "bag"
+  ;; representation, which includes implicit inputs.
+  (let* ((packages   (delay (package-closure (all-packages))))
+         (back-edges (delay (run-with-store #f    ;store not actually needed
+                              (node-back-edges %bag-node-type
+                                               (force packages))))))
+    (node-type
+     (name "reverse-bag")
+     (description "the reverse DAG of packages, including implicit inputs")
+     (convert nodes-from-package)
+     (identifier bag-node-identifier)
+     (label node-full-name)
+     (edges (lift1 (force back-edges) %store-monad)))))
+
 
 ;;;
 ;;; Derivation DAG.
@@ -375,6 +401,7 @@ package modules, while attempting to retain user package modules."
         %bag-node-type
         %bag-with-origins-node-type
         %bag-emerged-node-type
+        %reverse-bag-node-type
         %derivation-node-type
         %reference-node-type
         %referrer-node-type
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index fbef079910..d237ae6e94 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -28,6 +28,7 @@
   #:use-module (guix store)
   #:use-module ((guix status) #:select (with-status-verbosity))
   #:use-module (guix grafts)
+  #:autoload   (guix inferior) (inferior-package?)
   #:use-module (guix monads)
   #:use-module (guix modules)
   #:use-module (guix packages)
@@ -305,11 +306,13 @@ added to the pack."
     (with-imported-modules (source-module-closure
                             '((guix build utils)
                               (guix build store-copy)
+                              (guix build union)
                               (gnu build install))
                             #:select? not-config?)
       #~(begin
           (use-modules (guix build utils)
                        (guix build store-copy)
+                       ((guix build union) #:select (relative-file-name))
                        (gnu build install)
                        (srfi srfi-1)
                        (srfi srfi-26)
@@ -358,18 +361,25 @@ added to the pack."
                    ,@(append-map
                       (match-lambda
                         ((source '-> target)
-                         (list "-p"
-                               (string-join
-                                ;; name s mode uid gid symlink
-                                (list source
-                                      "s" "777" "0" "0"
-                                      (string-append #$profile "/" target))))))
+                         ;; Create relative symlinks to work around a bug in
+                         ;; Singularity 2.x:
+                         ;;   https://bugs.gnu.org/34913
+                         ;;   https://github.com/sylabs/singularity/issues/1487
+                         (let ((target (string-append #$profile "/" target)))
+                           (list "-p"
+                                 (string-join
+                                  ;; name s mode uid gid symlink
+                                  (list source
+                                        "s" "777" "0" "0"
+                                        (relative-file-name (dirname source)
+                                                            target)))))))
                       '#$symlinks)
 
                    ;; Create empty mount points.
                    "-p" "/proc d 555 0 0"
                    "-p" "/sys d 555 0 0"
-                   "-p" "/dev d 555 0 0"))
+                   "-p" "/dev d 555 0 0"
+                   "-p" "/home d 555 0 0"))
 
           (when database
             ;; Initialize /var/guix.
@@ -517,10 +527,14 @@ please email '~a'~%")
 ;;;
 
 (define* (wrapped-package package
-                          #:optional (compiler (c-compiler)))
+                          #:optional (compiler (c-compiler))
+                          #:key proot?)
   (define runner
     (local-file (search-auxiliary-file "run-in-namespace.c")))
 
+  (define (proot)
+    (specification->package "proot-static"))
+
   (define build
     (with-imported-modules (source-module-closure
                             '((guix build utils)
@@ -550,10 +564,19 @@ please email '~a'~%")
               (("@STORE_DIRECTORY@") (%store-directory)))
 
             (let* ((base   (strip-store-prefix program))
-                   (result (string-append #$output "/" base)))
+                   (result (string-append #$output "/" base))
+                   (proot  #$(and proot?
+                                  #~(string-drop
+                                     #$(file-append (proot) "/bin/proot")
+                                     (+ (string-length (%store-directory))
+                                        1)))))
               (mkdir-p (dirname result))
-              (invoke #$compiler "-std=gnu99" "-static" "-Os" "-g0" "-Wall"
-                      "run.c" "-o" result)
+              (apply invoke #$compiler "-std=gnu99" "-static" "-Os" "-g0" "-Wall"
+                     "run.c" "-o" result
+                     (if proot
+                         (list (string-append "-DPROOT_PROGRAM=\""
+                                              proot "\""))
+                         '()))
               (delete-file "run.c")))
 
           (setvbuf (current-output-port) 'line)
@@ -573,7 +596,15 @@ please email '~a'~%")
                             (find-files #$(file-append package "/sbin"))
                             (find-files #$(file-append package "/libexec")))))))
 
-  (computed-file (string-append (package-full-name package "-") "R")
+  (computed-file (string-append
+                  (cond ((package? package)
+                         (package-full-name package "-"))
+                        ((inferior-package? package)
+                         (string-append (inferior-package-name package)
+                                        "-"
+                                        (inferior-package-version package)))
+                        (else "wrapper"))
+                  "R")
                  build))
 
 (define (map-manifest-entries proc manifest)
@@ -646,7 +677,12 @@ please email '~a'~%")
                    (exit 0)))
          (option '(#\R "relocatable") #f #f
                  (lambda (opt name arg result)
-                   (alist-cons 'relocatable? #t result)))
+                   (match (assq-ref result 'relocatable?)
+                     (#f
+                      (alist-cons 'relocatable? #t result))
+                     (_
+                      (alist-cons 'relocatable? 'proot
+                                  (alist-delete 'relocatable? result))))))
          (option '(#\e "expression") #t #f
                  (lambda (opt name arg result)
                    (alist-cons 'expression arg result)))
@@ -821,11 +857,14 @@ Create a bundle of PACKAGE.\n"))
                                           #:graft? (assoc-ref opts 'graft?))))
           (let* ((dry-run?    (assoc-ref opts 'dry-run?))
                  (relocatable? (assoc-ref opts 'relocatable?))
+                 (proot?      (eq? relocatable? 'proot))
                  (manifest    (let ((manifest (manifest-from-args store opts)))
                                 ;; Note: We cannot honor '--bootstrap' here because
                                 ;; 'glibc-bootstrap' lacks 'libc.a'.
                                 (if relocatable?
-                                    (map-manifest-entries wrapped-package manifest)
+                                    (map-manifest-entries
+                                     (cut wrapped-package <> #:proot? proot?)
+                                     manifest)
                                     manifest)))
                  (pack-format (assoc-ref opts 'format))
                  (name        (string-append (symbol->string pack-format)
@@ -851,7 +890,14 @@ Create a bundle of PACKAGE.\n"))
             (run-with-store store
               (mlet* %store-monad ((profile (profile-derivation
                                              manifest
-                                             #:relative-symlinks? relocatable?
+
+                                             ;; Always produce relative
+                                             ;; symlinks for Singularity (see
+                                             ;; <https://bugs.gnu.org/34913>).
+                                             #:relative-symlinks?
+                                             (or relocatable?
+                                                 (eq? 'squashfs pack-format))
+
                                              #:hooks (if bootstrap?
                                                          '()
                                                          %default-profile-hooks)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index efff511299..b0c6a7ced7 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -526,14 +527,14 @@ upgrading, #f otherwise."
   (define upgrade-regexps
     (filter-map (match-lambda
                   (('upgrade . regexp)
-                   (make-regexp* (or regexp "")))
+                   (make-regexp* (or regexp "") regexp/icase))
                   (_ #f))
                 opts))
 
   (define do-not-upgrade-regexps
     (filter-map (match-lambda
                   (('do-not-upgrade . regexp)
-                   (make-regexp* regexp))
+                   (make-regexp* regexp regexp/icase))
                   (_ #f))
                 opts))
 
@@ -686,7 +687,7 @@ processed, #f otherwise."
        #t)
 
       (('list-installed regexp)
-       (let* ((regexp    (and regexp (make-regexp* regexp)))
+       (let* ((regexp    (and regexp (make-regexp* regexp regexp/icase)))
               (manifest  (profile-manifest profile))
               (installed (manifest-entries manifest)))
          (leave-on-EPIPE
@@ -702,7 +703,7 @@ processed, #f otherwise."
          #t))
 
       (('list-available regexp)
-       (let* ((regexp    (and regexp (make-regexp* regexp)))
+       (let* ((regexp    (and regexp (make-regexp* regexp regexp/icase)))
               (available (fold-available-packages
                           (lambda* (name version result
                                          #:key outputs location
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index d67b9f8185..97508f4bd6 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -808,8 +808,17 @@ and TARGET arguments."
                  #~(begin
                      (use-modules (gnu build bootloader)
                                   (guix build utils)
-                                  (ice-9 binary-ports))
-                     (#$installer #$bootloader #$device #$target)))))
+                                  (ice-9 binary-ports)
+                                  (srfi srfi-34)
+                                  (srfi srfi-35))
+
+                     (guard (c ((message-condition? c) ;XXX: i18n
+                                (format (current-error-port) "error: ~a~%"
+                                        (condition-message c))
+                                (exit 1)))
+                       (#$installer #$bootloader #$device #$target)
+                       (format #t "bootloader successfully installed on '~a'~%"
+                               #$device))))))
 
 (define* (perform-action action os
                          #:key skip-safety-checks?
diff --git a/guix/tests.scm b/guix/tests.scm
index 749a4edd7a..35ebf8464d 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -39,6 +39,8 @@
             canonical-file?
             network-reachable?
             shebang-too-long?
+            with-environment-variable
+
             mock
             %test-substitute-urls
             test-assertm
@@ -195,6 +197,19 @@ store is opened."
       (run-with-store store exp
                       #:guile-for-build (%guile-for-build)))))
 
+(define-syntax-rule (with-environment-variable variable value body ...)
+  "Run BODY with VARIABLE set to VALUE."
+  (let ((orig (getenv variable)))
+    (dynamic-wind
+      (lambda ()
+        (setenv variable value))
+      (lambda ()
+        body ...)
+      (lambda ()
+        (if orig
+            (setenv variable orig)
+            (unsetenv variable))))))
+
 
 ;;;
 ;;; Narinfo files, as used by the substituter.
diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in
index 07b73a770a..debff5ae8e 100644
--- a/po/guix/POTFILES.in
+++ b/po/guix/POTFILES.in
@@ -72,4 +72,6 @@ guix/channels.scm
 guix/profiles.scm
 guix/git.scm
 guix/deprecation.scm
+gnu/build/bootloader.scm
 nix/nix-daemon/guix-daemon.cc
+
diff --git a/tests/build-utils.scm b/tests/build-utils.scm
index 1c9084514d..5678bb6a22 100644
--- a/tests/build-utils.scm
+++ b/tests/build-utils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -21,11 +21,14 @@
 (define-module (test-build-utils)
   #:use-module (guix tests)
   #:use-module (guix build utils)
+  #:use-module ((gnu build bootloader)
+                #:select (invoke/quiet))
   #:use-module ((guix utils)
                 #:select (%current-system call-with-temporary-directory))
   #:use-module (gnu packages)
   #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-64)
   #:use-module (rnrs io ports)
   #:use-module (ice-9 popen))
@@ -108,20 +111,39 @@
        ;; it can't know about the bootstrap bash in the store, since it's not
        ;; named "bash".  Help it out a bit by providing a symlink it this
        ;; package's output.
-       (setenv "PATH" (dirname bash))
-       (wrap-program foo `("GUIX_FOO" prefix ("hello")))
-       (wrap-program foo `("GUIX_BAR" prefix ("world")))
-
-       ;; The bootstrap Bash is linked against an old libc and would abort with
-       ;; an assertion failure when trying to load incompatible locale data.
-       (unsetenv "LOCPATH")
-
-       (let* ((pipe (open-input-pipe foo))
-              (str  (get-string-all pipe)))
-         (with-directory-excursion directory
-           (for-each delete-file '("foo" ".foo-real")))
-         (and (zero? (close-pipe pipe))
-              str))))))
+       (with-environment-variable "PATH" (dirname bash)
+         (wrap-program foo `("GUIX_FOO" prefix ("hello")))
+         (wrap-program foo `("GUIX_BAR" prefix ("world")))
+
+         ;; The bootstrap Bash is linked against an old libc and would abort
+         ;; with an assertion failure when trying to load incompatible locale
+         ;; data.
+         (unsetenv "LOCPATH")
+
+         (let* ((pipe (open-input-pipe foo))
+                (str  (get-string-all pipe)))
+           (with-directory-excursion directory
+             (for-each delete-file '("foo" ".foo-real")))
+           (and (zero? (close-pipe pipe))
+                str)))))))
+
+(test-assert "invoke/quiet, success"
+  (begin
+    (invoke/quiet "true")
+    #t))
+
+(test-assert "invoke/quiet, failure"
+  (guard (c ((message-condition? c)
+             (string-contains (condition-message c) "This is an error.")))
+    (invoke/quiet "sh" "-c" "echo This is an error. ; false")
+    #f))
+
+(test-assert "invoke/quiet, failure, message on stderr"
+  (guard (c ((message-condition? c)
+             (string-contains (condition-message c)
+                              "This is another error.")))
+    (invoke/quiet "sh" "-c" "echo This is another error. >&2 ; false")
+    #f))
 
 (let ((script-contents "\
 #!/anything/cabbage-bash-1.2.3/bin/sh
diff --git a/tests/graph.scm b/tests/graph.scm
index 2a0f675717..b7732ec709 100644
--- a/tests/graph.scm
+++ b/tests/graph.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,6 +191,32 @@ edges."
                                 (string=? target (derivation-file-name g)))))
                         edges)))))))))
 
+(test-assert "reverse bag DAG"
+  (let-values (((dune bap ocaml-base)
+                (values (specification->package "dune")
+                        (specification->package "bap")
+                        (specification->package "ocaml-base")))
+               ((backend nodes+edges) (make-recording-backend)))
+    (run-with-store %store
+      (export-graph (list dune) 'port
+                    #:node-type %reverse-bag-node-type
+                    #:backend backend))
+
+    (run-with-store %store
+      (mlet %store-monad ((dune-drv       (package->derivation dune))
+                          (bap-drv        (package->derivation bap))
+                          (ocaml-base-drv (package->derivation ocaml-base)))
+        ;; OCAML-BASE uses 'dune-build-system' so DUNE is a direct dependency.
+        ;; BAP is much higher in the stack but it should be there.
+        (let-values (((nodes edges) (nodes+edges)))
+          (return
+           (and (member `(,(derivation-file-name bap-drv)
+                          ,(package-full-name bap))
+                        nodes)
+                (->bool (member (map derivation-file-name
+                                     (list dune-drv ocaml-base-drv))
+                                edges)))))))))
+
 (test-assert "derivation DAG"
   (let-values (((backend nodes+edges) (make-recording-backend)))
     (run-with-store %store
diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh
index 554416627b..38dcf1e485 100644
--- a/tests/guix-pack-relocatable.sh
+++ b/tests/guix-pack-relocatable.sh
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -41,17 +41,28 @@ STORE_PARENT="`dirname $NIX_STORE_DIR`"
 export STORE_PARENT
 if test "$STORE_PARENT" = "/"; then exit 77; fi
 
-# This test requires user namespaces and associated command-line tools.
-if ! unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"'
+if unshare -mrf sh -c 'mount -t tmpfs none "$STORE_PARENT"'
 then
-    exit 77
+    # Test the wrapper that relies on user namespaces.
+    relocatable_option="-R"
+else
+    case "`uname -m`" in
+	x86_64|i?86)
+	    # Test the wrapper that falls back to PRoot.
+	    relocatable_option="-RR";;
+	*)
+	    # XXX: Our 'proot' package currently fails tests on non-Intel
+	    # architectures, so skip this by default.
+	    exit 77;;
+    esac
 fi
 
 test_directory="`mktemp -d`"
 export test_directory
 trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
 
-tarball="`guix pack -R -S /Bin=bin sed`"
+export relocatable_option
+tarball="`guix pack $relocatable_option -S /Bin=bin sed`"
 (cd "$test_directory"; tar xvf "$tarball")
 
 # Run that relocatable 'sed' in a user namespace where we "erase" the store by
diff --git a/tests/packages.scm b/tests/packages.scm
index ad972deb31..af1f76e36d 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -998,6 +998,57 @@
                    ((("x" dep))
                     (eq? dep findutils)))))))))
 
+(test-assert "package-input-rewriting/spec"
+  (let* ((dep     (dummy-package "chbouib"
+                    (native-inputs `(("x" ,grep)))))
+         (p0      (dummy-package "example"
+                    (inputs `(("foo" ,coreutils)
+                              ("bar" ,grep)
+                              ("baz" ,dep)))))
+         (rewrite (package-input-rewriting/spec
+                   `(("coreutils" . ,(const sed))
+                     ("grep" . ,(const findutils)))))
+         (p1      (rewrite p0))
+         (p2      (rewrite p0)))
+    (and (not (eq? p1 p0))
+         (eq? p1 p2)                              ;memoization
+         (string=? "example" (package-name p1))
+         (match (package-inputs p1)
+           ((("foo" dep1) ("bar" dep2) ("baz" dep3))
+            (and (string=? (package-full-name dep1)
+                           (package-full-name sed))
+                 (string=? (package-full-name dep2)
+                           (package-full-name findutils))
+                 (string=? (package-name dep3) "chbouib")
+                 (eq? dep3 (rewrite dep))         ;memoization
+                 (match (package-native-inputs dep3)
+                   ((("x" dep))
+                    (string=? (package-full-name dep)
+                              (package-full-name findutils))))))))))
+
+(test-assert "package-input-rewriting/spec, partial match"
+  (let* ((dep     (dummy-package "chbouib"
+                    (version "1")
+                    (native-inputs `(("x" ,grep)))))
+         (p0      (dummy-package "example"
+                    (inputs `(("foo" ,coreutils)
+                              ("bar" ,dep)))))
+         (rewrite (package-input-rewriting/spec
+                   `(("chbouib@123" . ,(const sed)) ;not matched
+                     ("grep" . ,(const findutils)))))
+         (p1      (rewrite p0)))
+    (and (not (eq? p1 p0))
+         (string=? "example" (package-name p1))
+         (match (package-inputs p1)
+           ((("foo" dep1) ("bar" dep2))
+            (and (string=? (package-full-name dep1)
+                           (package-full-name coreutils))
+                 (eq? dep2 (rewrite dep))         ;memoization
+                 (match (package-native-inputs dep2)
+                   ((("x" dep))
+                    (string=? (package-full-name dep)
+                              (package-full-name findutils))))))))))
+
 (test-equal "package-patched-vulnerabilities"
   '(("CVE-2015-1234")
     ("CVE-2016-1234" "CVE-2018-4567")
diff --git a/tests/scripts-build.scm b/tests/scripts-build.scm
index 190426ed06..32876e956a 100644
--- a/tests/scripts-build.scm
+++ b/tests/scripts-build.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,9 +20,11 @@
   #:use-module (guix tests)
   #:use-module (guix store)
   #:use-module (guix packages)
+  #:use-module (guix git-download)
   #:use-module (guix scripts build)
   #:use-module (guix ui)
   #:use-module (guix utils)
+  #:use-module (guix git)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages busybox)
@@ -138,12 +140,15 @@
         (and (not (eq? new p))
              (match (package-inputs new)
                ((("foo" dep1) ("bar" dep2) ("baz" dep3))
-                (and (eq? dep1 busybox)
-                     (eq? dep2 findutils)
+                (and (string=? (package-full-name dep1)
+                               (package-full-name busybox))
+                     (string=? (package-full-name dep2)
+                               (package-full-name findutils))
                      (string=? (package-name dep3) "chbouib")
                      (match (package-native-inputs dep3)
                        ((("x" dep))
-                        (eq? dep findutils)))))))))))
+                        (string=? (package-full-name dep)
+                                  (package-full-name findutils))))))))))))
 
 (test-assert "options->transformation, with-graft"
   (let* ((p (dummy-package "guix.scm"
@@ -164,4 +169,100 @@
                        ((("x" dep))
                         (eq? (package-replacement dep) findutils)))))))))))
 
+(test-equal "options->transformation, with-branch"
+  (git-checkout (url "https://example.org")
+                (branch "devel")
+                (recursive? #t))
+  (let* ((p (dummy-package "guix.scm"
+              (inputs `(("foo" ,grep)
+                        ("bar" ,(dummy-package "chbouib"
+                                  (source (origin
+                                            (method git-fetch)
+                                            (uri (git-reference
+                                                  (url "https://example.org")
+                                                  (commit "cabba9e")))
+                                            (sha256 #f)))))))))
+         (t (options->transformation '((with-branch . "chbouib=devel")))))
+    (with-store store
+      (let ((new (t store p)))
+        (and (not (eq? new p))
+             (match (package-inputs new)
+               ((("foo" dep1) ("bar" dep2))
+                (and (string=? (package-full-name dep1)
+                               (package-full-name grep))
+                     (string=? (package-name dep2) "chbouib")
+                     (package-source dep2)))))))))
+
+(test-equal "options->transformation, with-commit"
+  (git-checkout (url "https://example.org")
+                (commit "abcdef")
+                (recursive? #t))
+  (let* ((p (dummy-package "guix.scm"
+              (inputs `(("foo" ,grep)
+                        ("bar" ,(dummy-package "chbouib"
+                                  (source (origin
+                                            (method git-fetch)
+                                            (uri (git-reference
+                                                  (url "https://example.org")
+                                                  (commit "cabba9e")))
+                                            (sha256 #f)))))))))
+         (t (options->transformation '((with-commit . "chbouib=abcdef")))))
+    (with-store store
+      (let ((new (t store p)))
+        (and (not (eq? new p))
+             (match (package-inputs new)
+               ((("foo" dep1) ("bar" dep2))
+                (and (string=? (package-full-name dep1)
+                               (package-full-name grep))
+                     (string=? (package-name dep2) "chbouib")
+                     (package-source dep2)))))))))
+
+(test-equal "options->transformation, with-git-url"
+  (let ((source (git-checkout (url "https://example.org")
+                              (recursive? #t))))
+    (list source source))
+  (let* ((p (dummy-package "guix.scm"
+              (inputs `(("foo" ,grep)
+                        ("bar" ,(dummy-package "chbouib"
+                                  (native-inputs `(("x" ,grep)))))))))
+         (t (options->transformation '((with-git-url . "grep=https://example.org")))))
+    (with-store store
+      (let ((new (t store p)))
+        (and (not (eq? new p))
+             (match (package-inputs new)
+               ((("foo" dep1) ("bar" dep2))
+                (and (string=? (package-full-name dep1)
+                               (package-full-name grep))
+                     (string=? (package-name dep2) "chbouib")
+                     (match (package-native-inputs dep2)
+                       ((("x" dep3))
+                        (map package-source (list dep1 dep3))))))))))))
+
+(test-equal "options->transformation, with-git-url + with-branch"
+  ;; Combine the two options and make sure the 'with-branch' transformation
+  ;; comes after the 'with-git-url' transformation.
+  (let ((source (git-checkout (url "https://example.org")
+                              (branch "BRANCH")
+                              (recursive? #t))))
+    (list source source))
+  (let* ((p (dummy-package "guix.scm"
+              (inputs `(("foo" ,grep)
+                        ("bar" ,(dummy-package "chbouib"
+                                  (native-inputs `(("x" ,grep)))))))))
+         (t (options->transformation
+             (reverse '((with-git-url
+                         . "grep=https://example.org")
+                        (with-branch . "grep=BRANCH"))))))
+    (with-store store
+      (let ((new (t store p)))
+        (and (not (eq? new p))
+             (match (package-inputs new)
+               ((("foo" dep1) ("bar" dep2))
+                (and (string=? (package-name dep1) "grep")
+                     (string=? (package-name dep2) "chbouib")
+                     (match (package-native-inputs dep2)
+                       ((("x" dep3))
+                        (map package-source (list dep1 dep3))))))))))))
+
+
 (test-end)
diff --git a/tests/scripts.scm b/tests/scripts.scm
index 3901710953..efee271197 100644
--- a/tests/scripts.scm
+++ b/tests/scripts.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,19 +25,6 @@
 
 ;; Test the (guix scripts) module.
 
-(define-syntax-rule (with-environment-variable variable value body ...)
-  "Run BODY with VARIABLE set to VALUE."
-  (let ((orig (getenv variable)))
-    (dynamic-wind
-      (lambda ()
-        (setenv variable value))
-      (lambda ()
-        body ...)
-      (lambda ()
-        (if orig
-            (setenv variable orig)
-            (unsetenv variable))))))
-
 
 (test-begin "scripts")